unity 合并skinnedMeshRenderer中遇到的一个大坑

Posted wantnon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity 合并skinnedMeshRenderer中遇到的一个大坑相关的知识,希望对你有一定的参考价值。

将多个skinnedMeshRenderer合并成一个skinnedMeshRenderer,主要涉及的mesh合并、骨骼列表合并、重定向顶点骨骼索引。其中重定向顶点骨骼索引只是通过加偏值即可完成,所以总体来说并无耗时操作。但合并一个由十几个skinnedMeshRenderer组成,总顶点数不足一万,总骨骼数150的人物模型,在PC上却花费一秒多,而在普通安卓手机上花费7秒多。

经过下面一步非常简单的优化以后,合并同样的模型在同样手机上则可瞬间完成。

    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++)
            {   。。。}

以及

    for(int x=0;x<smrenderer.bones.Length;x++)
            {。。。}

改成

    int mbl = myBons.Length;
            for(int x=0;x<mbl;x++)
            {。。。}

第一处改动是主要的。

以上是关于unity 合并skinnedMeshRenderer中遇到的一个大坑的主要内容,如果未能解决你的问题,请参考以下文章

unity替换mesh测试

unity怎么把物体合并

unity合并材质怎么做

Unity 网格合并

关于合并Unity项目中不同的AndroidManifest.xml

Unity网格合并_材质合并