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

8
回复
1208
查看
打印 上一主题 下一主题
[ 复制链接 ]
3偶尔光临
265/300
排名
11372
昨日变化

14

主题

55

帖子

265

积分

Rank: 3Rank: 3Rank: 3

UID
294324
好友
0
蛮牛币
1266
威望
0
注册时间
2018-8-22
在线时间
118 小时
最后登录
2019-5-26
20蛮牛币

113644aoimzwezvx8ea28x.jpg (29.9 KB, 下载次数: 60)

效果这样就好

效果这样就好
7日久生情
1603/5000
排名
1250
昨日变化

0

主题

113

帖子

1603

积分

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

UID
29853
好友
0
蛮牛币
2210
威望
0
注册时间
2014-6-16
在线时间
536 小时
最后登录
2019-6-26
沙发
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熟悉之中
746/1000
排名
5477
昨日变化

9

主题

219

帖子

746

积分

Rank: 5Rank: 5

UID
91563
好友
2
蛮牛币
473
威望
0
注册时间
2015-4-12
在线时间
256 小时
最后登录
2019-6-26
板凳
2019-4-10 11:36:52 只看该作者
这要写个ZWrite shader
3偶尔光临
265/300
排名
11372
昨日变化

14

主题

55

帖子

265

积分

Rank: 3Rank: 3Rank: 3

UID
294324
好友
0
蛮牛币
1266
威望
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
蛮牛币
1266
威望
0
注册时间
2018-8-22
在线时间
118 小时
最后登录
2019-5-26
5#
楼主 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
蛮牛币
1266
威望
0
注册时间
2018-8-22
在线时间
118 小时
最后登录
2019-5-26
6#
楼主 2019-4-10 11:48:22 只看该作者
dmxy 发表于 2019-4-10 11:36
这要写个ZWrite shader

求代码啊,大佬
5熟悉之中
746/1000
排名
5477
昨日变化

9

主题

219

帖子

746

积分

Rank: 5Rank: 5

UID
91563
好友
2
蛮牛币
473
威望
0
注册时间
2015-4-12
在线时间
256 小时
最后登录
2019-6-26
7#
2019-4-10 14:23:45 只看该作者
简单点搞个透明带线框的shader 用脚本控制一下
7日久生情
1622/5000
排名
2307
昨日变化

5

主题

356

帖子

1622

积分

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

UID
175097
好友
4
蛮牛币
2035
威望
0
注册时间
2016-10-12
在线时间
637 小时
最后登录
2019-6-24
8#
2019-4-15 09:47:10 只看该作者
本帖最后由 菜鸟笨笨 于 2019-4-15 09:49 编辑

改变材质球的透明度(代码动态去改变 应该可以达到要求) 前提是模型上的球要适当的分离,原理是改动材质球属性,所以所有用改变后的材质球的模型,它的模型透明度都会改变
5熟悉之中
859/1000
排名
5477
昨日变化

16

主题

178

帖子

859

积分

Rank: 5Rank: 5

UID
236132
好友
2
蛮牛币
2285
威望
0
注册时间
2017-8-6
在线时间
405 小时
最后登录
2019-6-26
9#
2019-4-20 11:28:57 只看该作者
可以用两个相机 点击后主相机加上一个模糊蒙版 或者直接用shader 副相机只能渲染这个物体就行了
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则