天天看点

Unity 带骨骼的人体模型换装

直入主题:

1、实验材料

Unity 带骨骼的人体模型换装

两个模型,虽然缺胳膊少腿的,但是能用!!!

2、条件  

   两个模型在制作时是基于同一套骨骼,导出模型部位时连着该部位的骨骼一起导出,这样导入到Unity的模型就带有SkinnedMeshRenderer组件。

3、目标及实现

   目标:将右侧的衣服换给左侧的模型

   代码:  

public SkinnedMeshRenderer HeroSMR;    //左侧模型衣服部位的SkinnedMeshRenderer

public SkinnedMeshRenderer TargetSMR;  //右侧模型衣服部位的SkinnedMeshRenderer

void Start()

{

HeroSMR.sharedMesh = TargetSMR.sharedMesh;

HeroSMR.materials = TargetSMR.sharedMaterials;

}

   So Easy 是不是!!

4、效果

Unity 带骨骼的人体模型换装

新Mesh也能很好的适应原先骨骼的变形,反正就是皮换骨不换。

Unity 带骨骼的人体模型换装

5、结论

   蒙过皮带有骨骼的模型导入u3d后会自动生成SkinnedMeshRenderer组件,存储了骨骼和Mesh的信息,比如权重边界什么的。

   但Mesh和骨骼对应的信息,比如哪个点受哪根骨骼的影响,这个我觉得是导入骨骼模型后存在了Mesh里(猜测)。

   因为根据我做的实验,同样的衣服模型,分别导入带骨骼的和不带骨骼的,带骨骼的如上所示,能正常更换上去,不带骨骼的代码如下:

public SkinnedMeshRenderer HeroSMR;

public MeshFilter TargetMF;

public MeshRenderer TargetMR;

void Start()

{

HeroSMR.sharedMesh = TargetMF.sharedMesh;

HeroSMR.materials = TargetMR.sharedMaterials; 

}

   这样操作后虽然衣服是换成了,但是位置信息完全错误,也就是Mesh没和骨骼对应上,所以我猜测Mesh和骨骼对应的信息是存在Mesh里的,

仅仅是猜测,不喜勿骂~~~

转载于:https://www.cnblogs.com/ljx12138/p/6051558.html

继续阅读