这几天Unity开发中遇到一个穿模问题!辛路历程:。。。
1.打出的Apk会出现穿模(头和脖子间有断层),情况如下: 2.但是Unity编辑器中没问题,如下: 3. 几经周折后还是没找到问题所在。。。。 (看现象像是skin没跟着bone动) 4. 后来创建空项目进行测试, 打出的apk居然没问题,大概排除是资源和代码的原因,应该是一些项目设置导致的。。。 5. 查看项目设置(ProjectSetting–Quality)发现,开发平台和android/ios选择的品质等级不同,开发平台(Very High),android/ios(Very Low);Quality其中一个选项(SkinWeights)是设置Mesh的顶点最多随几个骨骼运动,将VeryLow–SkinWeights改为2Bone,打出apk,脖子断层消失。问题解决。 总结: 模型用SkinMeshRender,骨骼运动,带动蒙皮的运动和拉扯;蒙皮的拉扯其实就是模型中每个mesh中的顶点运动带动uv的变化;顶点的运动是受到骨骼运动的影响,开发者可以设置vertex受几个骨骼的影响,(上面出现的问题在于美术做的骨骼数大于我们设置的骨骼数,mesh不能被正常的拉扯,则出现断层);
问题拓展: ProjectSetting-Quality-SkinWeights设置的是最大的骨骼数; 实例化出来的SkinMeshRender中Quality是对该SkinMeshRender的最大骨骼数,Quality可设置为Auto/1Bone/2Bone/4Bone; 若SkinMeshRender-Quality为Auto,则最大骨骼数为ProjectSetting-Quality-SkinWeights; 若SkinMeshRender-Quality为1Bone/2Bone/4Bone,则最大骨骼数为1Bone/2Bone/4Bone,但是不能超过项目设置的最大数ProjectSetting-Quality-SkinWeights;即: ProjectSetting-Quality-SkinWeights = 2,SkinMeshRender-Quality = 4,最大骨骼数是2。
|