Unity 合并skinnedMeshRenderer中遇到的一个大坑
转载
将多个skinnedMeshRenderer合并成一个skinnedMeshRenderer,主要涉及的mesh合并、骨骼列表合并、重定向顶点骨骼索引。其中重定向顶点骨骼索引只是通过加偏值即可完成,所以总体来说并无耗时操作。但合并一个由十几个skinnedMeshRenderer组成,总顶点数不足一万,总骨骼数150的人物模型,在PC上花费一秒多,而在普通安卓手机上花费7秒多。
经过下面一步非常简单的优化以后,合并同样的模型在同样手机上则可瞬间完成。
1.boneWeights(主要)
for(int x=0;x<smrenderer.sharedMesh.boneWeights.Length ;x++)
改成:
BoneWeight[] boneWs = smrenderer.sharedMesh.boneWeights;
int bl = boneWs.Length;
for(int x=0; x<bl; x++)
2.bones
for(int x=0;x<smrenderer.bones.Length;x++)
改成:
int mbl = myBons.Length;
for(int x=0; x<mbl; x++)