Unity 3D 残影的研究 截取当前模型的网格材质并显示
来源:互联网 发布:手机位置定位软件 编辑:程序博客网 时间:2024/04/20 01:38
版本:unity 5.4.1 语言:C#
参考实战核心技术的第七章,不过只分析了其中核心的代码。
与之前的换装核心有点像,但此次是直接新建一个对象,只替换material、mesh两个,并没有涉及到骨骼的添加。
下面来看看代码:
Material mat = null; //残影的材质float colorA = 1f; //残影当前的透明度// Use this for initializationvoid Start (){ // 获取对象的皮肤渲染 SkinnedMeshRenderer meshRenderer = gameObject.GetComponent<SkinnedMeshRenderer>(); // 烘培出当前的网格 Mesh mesh = new Mesh(); meshRenderer.BakeMesh(mesh); // 新建一个残影 GameObject go = new GameObject(); go.hideFlags = HideFlags.HideAndDontSave; //在Hierarchy中不显示,并保留到新场景中 // 添加MeshFilter、MeshRenderer的情况 //MeshFilter goMeshFilter = go.AddComponent<MeshFilter>(); //goMeshFilter.mesh = mesh; //MeshRenderer goMeshRenderer = go.AddComponent<MeshRenderer>(); //goMeshRenderer.material = meshRenderer.material; // 添加SkinnedMeshRenderer的情况 SkinnedMeshRenderer goSkinnedMeshRenderer = go.AddComponent<SkinnedMeshRenderer>(); goSkinnedMeshRenderer.material = meshRenderer.material; //添加材质 goSkinnedMeshRenderer.sharedMesh = mesh; //添加网格 // 将残影放到原对象的上一格 go.transform.position = (gameObject.transform.position + new Vector3(0, 1f, 0)); go.transform.rotation = gameObject.transform.rotation; // 替换能够透明显示的Shader //mat = goMeshRenderer.material; mat = goSkinnedMeshRenderer.material; mat.shader = Shader.Find("JiuYinT/Toon/Basic Replace");}// Update is called once per framevoid Update (){ if (mat == null) return; // 渐变消失的效果 colorA -= Time.deltaTime; if (colorA <= 0f) colorA = 1f; Color col = mat.GetColor("_Color"); col.a = colorA; mat.SetColor("_Color", col);}
我用了个球做测试,不过出现了一个问题:
编辑器中正常显示,但下面的Game窗口下的显示就。。
直接变全黑了,找了组里的美工询问原因,估计是Shader的原因,换成Standard就正常了,老版本的Shader无法在新版本中使用啊。具体Shader是什么原因,我会过一段时间仔细研究一下Unity的光照、Shader系统。
0 0
- Unity 3D 残影的研究 截取当前模型的网格材质并显示
- Unity自带地形中改树预制体的材质,并显示到场景中
- Qt 3D的研究(三):显示3D模型
- unity材质的切换
- Unity 3D: c#中字符串截取使用的方法
- unityTaidou(三)unity模型材质比较暗的解决方法
- blender导出的模型在unity里无法贴图材质
- Qt 3D的研究(四):指定渲染的材质以及效果
- u3d游戏中显示模型的网格
- Unity中在界面上显示3D模型的方法
- Unity教程之-合并(Combine)引用相同材质球的网格(Mesh)
- 【Unity3D】3dsmax中带Vray材质的3D模型的导入
- 在sparkle中如何对3d模型设置不同的Brush材质
- Qt 3D教程(三)实现对模型材质参数的控制
- unity中把材质截图当材质的matcap材质
- Unity 3D 海水的实现1 海水网格的生成 LOD优化海水
- Unity 3D 矩阵和四元数的研究
- Ext的网格研究
- PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
- Android App 沉浸式状态栏解决方案
- Caffe深度学习操作流程
- Waf 基本功能
- MSSQL扫盲系列(1)-CREATE,ALTER,DROP
- Unity 3D 残影的研究 截取当前模型的网格材质并显示
- 建筑行业将掀起一阵装配式建筑风潮
- 如何理解HTTP协议的“无连接,无状态”特点?
- 生物信息学基础入门! For CS(计算机) 基础的人员学习。
- oracle前言
- 一名3年工作经验的程序员应该具备的技能 !
- Junit学习资料(转1)
- 关于构造函数的小结(学习中)
- angularJS 路由模块--未实现