zoukankan      html  css  js  c++  java
  • 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里的,

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

  • 相关阅读:
    cf605 div3
    how to find Longest Increasing Subsequence Size
    luogu1641 [SDOI2010]生成字符串
    luogu1441 砝码称重
    luogu4218 [JSOI2008] 最小生成树计数
    luogu1514 引水入城
    luogu1312 Mayan游戏 剪枝
    luogu1081 开车旅行 树上倍增
    luogu1052 过河
    luogu1026 统计单词个数
  • 原文地址:https://www.cnblogs.com/ljx12138/p/6051558.html
Copyright © 2011-2022 走看看