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里的,
仅仅是猜测,不喜勿骂~~~
最新文章
- Android APP 读取 AndroidManifest.xml 中的版本信息详解
- adroid 目录
- kylin1.5新特性 new aggregation group
- C#字符补位
- 二十一、contextMap中放的常用数据
- everything搜索工具小技巧
- 设置ISE/vivado中默认文本编辑器为gvim
- LeetCode OJ学习
- 如何安装windows7系统
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]
- JAVA内容回顾(一)——基本语法
- Linux安装JDK、MySQL和Tomcat
- Linux块设备加密之dm-crypt分析
- ubuntu设置ssh登录
- 【K8S】client-go、python-k8sclient开发K8S
- Data Science With R In Visual Studio
- Hbase建表时遇到的问题This could be a sign that the server has too many connections
- Google Bazel简介
- cget cmake 包管理工具
- ECMAScript 6 Promise 对象