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

第一處改動是主要的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM