直入主题:

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 带骨骼的人体模型换装的更多相关文章

  1. cocos2d下,优秀骨骼spine的换装思路

    语文老师说,文章要有个好开头!!! 最近正在引入spine骨骼代替dragon bone骨骼,既然要替代,那么原先在dragon bone上的一些额外需求,不管dragon bone上能不能实现,都应 ...

  2. Unity3d 3d角色换装实现原理及步骤

    http://www.cnblogs.com/dosomething/archive/2012/04/15/2450526.html 1.角色模型制作 unity3d支持Skin动画  但是不支持Ph ...

  3. 【Unity3d】3d角色换装实现原理及步骤

    http://www.cnblogs.com/dosomething/archive/2012/04/15/2450526.html 1.角色模型制作 unity3d支持Skin动画  但是不支持Ph ...

  4. Unity3D教程:换装方法

    http://www.manew.com/4136.html 游戏内的角色,能够像纸娃娃换装那样子让玩家可以为自己的角色改变外观,一直是相当受欢迎的功能:一般而言,我们建好的 3D 模型,如果要将其中 ...

  5. 浅谈角色换装功能--Unity简单例子实现

    在前置篇中,基本上梳理了一下换装功能背后涉及到的美术工作流.但程序员嘛,功能终归是要落到代码上的.本文中会结合Unity提供的API及之前提到的内容来实现一个简单的换装功能.效果如下: (图1:最终效 ...

  6. Unity动态换装之Spine换装

    注:转载请注明转载,并附原链接 http://www.cnblogs.com/liaoguipeng/p/5867510.html 燕双飞情侣 一.动态换装原理 换装,无非就是对模型的网格,或者贴图进 ...

  7. Unity 之 人物换装

    http://www.cnblogs.com/mcwind/archive/2011/02/18/1957453.html  原理 一. SkinedMeshRender:该对象负责网格绘制.主要数据 ...

  8. unity 角色换装

    unity角色换装的关键是更改角色部位上的物体的SkinnedMeshRenderer组件的属性: 更改mesh:mesh决定了部位的物体的外形,是主要的数据. 刷新骨骼:同一个部位下,不同的mesh ...

  9. Unity3d 换装Avatar系统

    原理就是用新造的部件和角色的骨骼进行重新对接. demo的使用方法: PartIdx设置要换那个部件[0,4],一共5个部件 EquipIdx设置要更换部件的装备索引[0,1],具体看我的Change ...

随机推荐

  1. [Python3 练习] 003 货币转换

    题目:货币转换 (1) 描述 人民币和美元是世界上通用的两种货币,写一个程序进行货币间币值转换 记人民币和美元之间的汇率为:1 美元 = 6.78 人民币 程序可以接受人民币或美元输入,转换为另一种货 ...

  2. Spring IoC,IoC原理

    一.IoC概念及原理 IOC的别名:依赖注入(DI) 2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是“哪些方面的控制被反转了呢?”,经过详细地分析和论证后,他 ...

  3. ESP32、GPRS A9测试

    测试内容: 1.A9作为客户端,在服务器主动断开连接或异常断开的时候,使用网络连接状态查询接口,能否获得准确的网络连接状态. 结果: TCP: A9开多连接时,成功连接TCP服务器后,发送查询语句AT ...

  4. JDK中主要包的介绍

    java.lang——包含一些Java语言的核心类,如String.Math.Integer.System和Thread,提供常用功能.java.net——包含执行与网络相关的操作的类和接口.java ...

  5. X86平台下用汇编写"HelloWorld"

    首先需要安装一个汇编器,我用的是Nasm,这个汇编器在Linux下安装还是很简单的. Nasm下载地址http://www.nasm.us/pub/nasm/releasebuilds/ 在下载之后对 ...

  6. Spring Boot & Restful API 构建实战!

    作者:liuxiaopeng https://www.cnblogs.com/paddix/p/8215245.html 在现在的开发流程中,为了最大程度实现前后端的分离,通常后端接口只提供数据接口, ...

  7. 使用class 自动创建设备节点

    #include <linux/init.h>// __init __exit #include <linux/module.h> // module_init module_ ...

  8. [BZOJ1074] [luogu 4036] [JSOI 2008] 火星人 (二分答案+哈希+fhq treap)

    [BZOJ1074] [luogu 4036] [JSOI 2008] 火星人 (二分答案+哈希+fhq treap) 题面 给出一个长度为n的字符串,m个操作,字符串仅包含小写英文字母 操作1:在k ...

  9. python 搜索路径顺序查找

    但我们通过 import 或者frome .. import...查找模块的时候,当你导入一个模块,Python 解析器对模块位置的搜索顺序是 1.当前目录 2, 如果不在当前目录,Python 则搜 ...

  10. PhotonServer新增应用的配置

    一,如下代码配置 <MyGameInstance MaxMessageSize=" MaxQueuedDataPerPeer=" PerPeerMaxReliableData ...