Unity的MeshFilter、MeshRenerer、SkinnedMeshRenderer

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linxinfa/article/details/88695474

MeshFilter网格过滤器

MeshFilter决定使用哪一个Mesh。MeshFilter只有一个参数,就是指定Mesh。
属性:mesh,sharedMesh
sharedMesh就像引用传递,mesh就像值传递。
建议只使用sharedMesh来读网格数据而不是来写,因为那有可能修改导入的资源及所有使用此网格的对象都将受到影响。

MeshRender网格渲染器

MeshRender 负责渲染 MeshFilter 指定的 Mesh,在 Transform 的位置渲染这个Mesh。
MeshRender参数主要指定是否产生和接受阴影,以及使用的Meterial。

Unity不支持对使用了阴影的MeshRenderer进行批处理。

SkinnedMeshRenderer蒙皮网格过滤器

有动画的网格用SkinnedMeshRenderer,静止不动的网格用MeshRender。
SkinnedMesh 技术的精华在于蒙皮,所谓的皮并不是模型的贴图,而是 Mesh 本身,蒙皮是指将 Mesh 中的顶点附着(绑定)在骨骼之上。可以这么理解,具有蒙皮信息(Skin数据)的 Mesh 就是SkinnedMesh,没有 Skin 数据就是一个普通的静态 Mesh 了。 Skin 数据决定顶点如何绑定到骨骼上。顶点的 Skin 数据包括顶点受哪些骨骼影响以及这些骨骼影响该顶点时的权重 (weight) ,另外对于每块骨骼还需要骨骼偏移矩阵 (BoneOffsetMatrix) 用来将顶点从 Mesh 空间变换到骨骼空间。骨骼控制蒙皮运动,动画控制骨骼的运动。
SkinnedMeshRenderer中有个BakeMesh()函数,功能是按照网格当前的动画状态创建网格数据快照,并输出这个网格数据用于其它地方。

Unity不支持对SkinnedMeshRenderer进行批处理

关于Unity中Skinned Mesh Renderer中Quality中的坑: https://blog.csdn.net/qq_33716394/article/details/78653136
最近打包项目的时候发现一个飘动的地毯在不同的机器上运行的时候,有的机器上显示正常,有的机器上会有会有裂缝出现,经过排查发现和Skinned Mesh Renderer中的Quality属性有关。在unity中默认的Skinned Mesh Renderer中Quality是Auto,也就是说在不同的机器上运行时,会根据显卡的不同来自动进行选择,因此在一些性能较差的显卡上会出现裂缝。所以在出现这种情况时,我们要手动把Quality根据需要改成1 Bone,2 Bones或者4 Bones,这样就解决了出现裂缝的问题。

猜你喜欢

转载自blog.csdn.net/linxinfa/article/details/88695474
今日推荐