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

僅僅是猜測,不喜勿罵~~~


免責聲明!

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



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