Unity 带骨骼的人体模型换装

直入主题:

1、实验材料

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

 

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、效果

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

 

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里的,

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

posted @ 2016-11-10 16:51  谁家玉笛暗飞声  阅读(7193)  评论(0编辑  收藏  举报