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里的,
仅仅是猜测,不喜勿骂~~~
Unity 带骨骼的人体模型换装的更多相关文章
- cocos2d下,优秀骨骼spine的换装思路
语文老师说,文章要有个好开头!!! 最近正在引入spine骨骼代替dragon bone骨骼,既然要替代,那么原先在dragon bone上的一些额外需求,不管dragon bone上能不能实现,都应 ...
- Unity3d 3d角色换装实现原理及步骤
http://www.cnblogs.com/dosomething/archive/2012/04/15/2450526.html 1.角色模型制作 unity3d支持Skin动画 但是不支持Ph ...
- 【Unity3d】3d角色换装实现原理及步骤
http://www.cnblogs.com/dosomething/archive/2012/04/15/2450526.html 1.角色模型制作 unity3d支持Skin动画 但是不支持Ph ...
- Unity3D教程:换装方法
http://www.manew.com/4136.html 游戏内的角色,能够像纸娃娃换装那样子让玩家可以为自己的角色改变外观,一直是相当受欢迎的功能:一般而言,我们建好的 3D 模型,如果要将其中 ...
- 浅谈角色换装功能--Unity简单例子实现
在前置篇中,基本上梳理了一下换装功能背后涉及到的美术工作流.但程序员嘛,功能终归是要落到代码上的.本文中会结合Unity提供的API及之前提到的内容来实现一个简单的换装功能.效果如下: (图1:最终效 ...
- Unity动态换装之Spine换装
注:转载请注明转载,并附原链接 http://www.cnblogs.com/liaoguipeng/p/5867510.html 燕双飞情侣 一.动态换装原理 换装,无非就是对模型的网格,或者贴图进 ...
- Unity 之 人物换装
http://www.cnblogs.com/mcwind/archive/2011/02/18/1957453.html 原理 一. SkinedMeshRender:该对象负责网格绘制.主要数据 ...
- unity 角色换装
unity角色换装的关键是更改角色部位上的物体的SkinnedMeshRenderer组件的属性: 更改mesh:mesh决定了部位的物体的外形,是主要的数据. 刷新骨骼:同一个部位下,不同的mesh ...
- Unity3d 换装Avatar系统
原理就是用新造的部件和角色的骨骼进行重新对接. demo的使用方法: PartIdx设置要换那个部件[0,4],一共5个部件 EquipIdx设置要更换部件的装备索引[0,1],具体看我的Change ...
随机推荐
- SpringBoot 创建 console程序
1.在pom中添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...
- Leveldb--Slice
http://www.kuqin.com/database/20110919/265041.html Slice非常简单的数据结构,它包括length和一个指向外部字节数组的指针.为什么使用Slice ...
- 《剑指offer》面试题21 包含min函数的栈 Java版
(min函数的作用是返回栈内最小值) 首先这个栈要具有普通栈所具有的push()和pop()方法,那么内部一定包含一个Stack.至于还要能实现min函数,而且还是在O(1)时间复杂度内,我们不得不考 ...
- js Array 数组方法扩展
//去重复 Array.prototype.unique = function() { this.sort(); var re=[this[0]]; for(var i ...
- Nginx针对前端静态资源的缓存处理
当用户上报一个线上的bug后,开发者修改前端代码的bug上新后,用户反映问题依旧存在的问题...这种情况是不是曾经遇到过,这个问题跟浏览器的缓存机制有很大关系(强制缓存和协商缓存,这里我就不介绍具体的 ...
- java 判断点是否在一条线段上
public static void main(String[] args) { Scanner scan = new Scanner(System.in); Point point1 = new P ...
- Linux安装Sqoop及基础使用
下载Sqoop 官网地址 http://sqoop.apache.org/ wget http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7 ...
- 朴素贝叶斯算法——实现新闻分类(Sklearn实现)
1.朴素贝叶斯实现新闻分类的步骤 (1)提供文本文件,即数据集下载 (2)准备数据 将数据集划分为训练集和测试集:使用jieba模块进行分词,词频统计,停用词过滤,文本特征提取,将文本数据向量化 停用 ...
- 脚本_统计 Linux 进程相关数量信息
#!bin/bash#作者:liusingbon#功能:统计 Linux 进程相关数量信息,running(运行的进程),sleeping(睡眠中的进程),stoped(停止的进程),zombie(僵 ...
- thinkphp 视图view
一. 继承Controller类 <?php namespace app\index\controller; use http\Params; use think\Config; use thi ...