找回密码
 注册帐号

扫一扫,访问微社区

着色器 如何解决点击一个模型后,它周围的模型虚化处理

8
回复
1252
查看
[ 复制链接 ]
3偶尔光临
265/300
排名
11372
昨日变化

14

主题

55

帖子

265

积分

Rank: 3Rank: 3Rank: 3

UID
294324
好友
0
蛮牛币
1298
威望
0
注册时间
2018-8-22
在线时间
118 小时
最后登录
2019-5-26
2019-4-10 11:14:06 显示全部楼层 阅读模式
20蛮牛币

效果这样就好

效果这样就好
回复

使用道具 举报

7日久生情
1613/5000
排名
1250
昨日变化

0

主题

113

帖子

1613

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
29853
好友
0
蛮牛币
2262
威望
0
注册时间
2014-6-16
在线时间
546 小时
最后登录
2019-7-22
2019-4-10 11:14:07 显示全部楼层
[C#] 纯文本查看 复制代码
using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;

    //[RequireComponent(typeof())]
    //[AddComponentMenu("")]
    public class MaterialsControl: MonoBehaviour
    {
        #region Property and Field
        //  [Tooltip("")]
        //  [SerializeField]
        /// <summary>物体与材质对应字典</summary>
        public static Dictionary<Renderer, Material[]> m_dicMa = new Dictionary<Renderer, Material[]>();
        public static Dictionary<GameObject[],Dictionary<Renderer, Material[]>> m_dicMaDic = new Dictionary<GameObject[],Dictionary<Renderer, Material[]>>();
        #endregion

        #region Private Method
        //  void Start () 
        //  {
        //
        //  }

        //  void Update()
        //  {
        //
        //  }
        #endregion

        #region Public Method
        public static void ChangeMaterials(GameObject[] m_traObjArry,Material m_changeMatl)
        {
            for (int n = 0; n < m_traObjArry.Length; n++)
            {
                //if (m_traObjArry[n].GetComponent<PartMonitor>())
                //{
                //    m_traObjArry[n].GetComponent<Collider>().enabled = false;
                //}
                Renderer[] ra = m_traObjArry[n].GetComponentsInChildren<Renderer>();
                for (int i = 0; i < ra.Length; i++)
                {                    
                    Material[] ma;
                    List<Material> maLi = new List<Material>();
                    ma = ra[i].materials;
                    if (!m_dicMa.ContainsKey(ra[i]))
                        m_dicMa.Add(ra[i], ma);
                    for (int m = 0; m < ma.Length; m++)
                    {
                        maLi.Add(m_changeMatl);
                    }
                    ra[i].materials = maLi.ToArray();
                }
            }
            //m_dicMaDic.Add(m_traObjArry, m_dicMa);
        }

        public static void RecoverMaterials(GameObject[] traObjArry)
        {
            for (int n = 0; n < traObjArry.Length; n++)
            {
                Renderer[] ra = traObjArry[n].GetComponentsInChildren<Renderer>();
                for (int i = 0; i < ra.Length; i++)
                {
                    if (m_dicMa.ContainsKey(ra[i]))
                    {
                        ra[i].materials = m_dicMa[ra[i]];
                        m_dicMa.Remove(ra[i]);
                    }
                }
            }
        }
        #endregion
    }//class_end

回复

使用道具 举报

5熟悉之中
765/1000
排名
5478
昨日变化

9

主题

221

帖子

765

积分

Rank: 5Rank: 5

UID
91563
好友
2
蛮牛币
629
威望
0
注册时间
2015-4-12
在线时间
273 小时
最后登录
2019-7-23
2019-4-10 11:36:52 显示全部楼层
这要写个ZWrite shader
回复

使用道具 举报

3偶尔光临
265/300
排名
11372
昨日变化

14

主题

55

帖子

265

积分

Rank: 3Rank: 3Rank: 3

UID
294324
好友
0
蛮牛币
1298
威望
0
注册时间
2018-8-22
在线时间
118 小时
最后登录
2019-5-26
楼主 2019-4-10 11:44:06 显示全部楼层
求代码啊,大佬
回复

使用道具 举报

3偶尔光临
265/300
排名
11372
昨日变化

14

主题

55

帖子

265

积分

Rank: 3Rank: 3Rank: 3

UID
294324
好友
0
蛮牛币
1298
威望
0
注册时间
2018-8-22
在线时间
118 小时
最后登录
2019-5-26
楼主 2019-4-10 11:45:35 显示全部楼层
dmxy 发表于 2019-4-10 11:36
这要写个ZWrite shader

求代码啊,大佬
回复

使用道具 举报

3偶尔光临
265/300
排名
11372
昨日变化

14

主题

55

帖子

265

积分

Rank: 3Rank: 3Rank: 3

UID
294324
好友
0
蛮牛币
1298
威望
0
注册时间
2018-8-22
在线时间
118 小时
最后登录
2019-5-26
楼主 2019-4-10 11:48:22 显示全部楼层
dmxy 发表于 2019-4-10 11:36
这要写个ZWrite shader

求代码啊,大佬
回复

使用道具 举报

5熟悉之中
765/1000
排名
5478
昨日变化

9

主题

221

帖子

765

积分

Rank: 5Rank: 5

UID
91563
好友
2
蛮牛币
629
威望
0
注册时间
2015-4-12
在线时间
273 小时
最后登录
2019-7-23
2019-4-10 14:23:45 显示全部楼层
简单点搞个透明带线框的shader 用脚本控制一下
回复

使用道具 举报

7日久生情
1656/5000
排名
2307
昨日变化

6

主题

363

帖子

1656

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
175097
好友
4
蛮牛币
2109
威望
0
注册时间
2016-10-12
在线时间
663 小时
最后登录
2019-7-23
2019-4-15 09:47:10 显示全部楼层
本帖最后由 菜鸟笨笨 于 2019-4-15 09:49 编辑

改变材质球的透明度(代码动态去改变 应该可以达到要求) 前提是模型上的球要适当的分离,原理是改动材质球属性,所以所有用改变后的材质球的模型,它的模型透明度都会改变
回复

使用道具 举报

5熟悉之中
908/1000
排名
5478
昨日变化

16

主题

192

帖子

908

积分

Rank: 5Rank: 5

UID
236132
好友
2
蛮牛币
2422
威望
0
注册时间
2017-8-6
在线时间
440 小时
最后登录
2019-7-23
2019-4-20 11:28:57 显示全部楼层
可以用两个相机 点击后主相机加上一个模糊蒙版 或者直接用shader 副相机只能渲染这个物体就行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则