2018-08-20 【Unity官方功能】模型;蒙皮,网格,骨骼动画,布料概念

原文: https://blog.csdn.net/ljy1988123/article/details/8037081
1.驱动人物需要骨架、绑骨的Mesh和动画
2.在maya里,骨架、mesh和动画都是一种单独的存在,谁混一起谁郁闷。在unity里面也是如此,再复杂一点展开。

1.骨架

骨架就是transform。不像maya和理论那样,是一种实体的单独的存在。在unity里,骨架就是transform的层次关系。一个骨头就是一个transform。这个人体的骨架(Transform)组织结构一般是abdome(spine,LeftUpLeg,RightUpLeg),abdome是根(有时用hip),向上是spine(neck,LeftUpArm,RightUpArm)。这个在哪里都差不多。关键是root,就是abdome。在unity里,引用骨架都是靠它。

2.mesh

因为Unity里的Mesh有绑骨未绑骨两种(在哪里都差不多)。在导入资源的时候,unity会为绑骨的Mesh自动生成一个SkinnedMeshRenderer,为未绑骨的生成一个MeshFilter和一个MeshRenderer。不精细的人物,头盔、手、武器(甚至靴子)等都不用绑骨,像骑马与砍杀,只需要把armor绑骨就好
示例图片:

2018-08-20 【Unity官方功能】模型;蒙皮,网格,骨骼动画,布料概念_第1张图片
未绑骨.png

2018-08-20 【Unity官方功能】模型;蒙皮,网格,骨骼动画,布料概念_第2张图片
未绑骨.png

2018-08-20 【Unity官方功能】模型;蒙皮,网格,骨骼动画,布料概念_第3张图片
绑骨.png

2.1 不绑骨情况:

MeshFilter负责从文件中取出真实的Mesh(这里用的是Script里的类来表示,具体可以查reference)。MeshRender负责显示。这种想要固定在人体上,其实很简单,把这个GameObject的tansform的parent设置为需要绑定的骨头的transform就好。(比如武器,transform.parent=item_l,item_l是左手一个绑定武器骨头)所以,缺点也很明显,一个mesh只能绑定到一个骨头,也就是这个mesh不会变形。(这个可以作为绑骨和不绑骨的依据,看Mesh是否需要变形,所以头盔,武器都不需要绑骨(仅在unity中成立))

2.2 绑骨情况:

SkinnedMeshRenderer有俩个重要成员,一个是Mesh,一个是Bones。当然,Mesh里有每一个顶点的绑骨数据,但这里存的是序号。就是第几个骨头,并没有指明是哪个骨头,但是如果给一个根骨头就能推测出所有的骨头了。 (PS:原作者使用的是老版本,现在只有一个root bone) 这里的Bones把所有的骨头都列出来了,至于顺序,有点扯淡,没啥规律(调试结果)。问题出来了,那SkinnedMeshRenderer里的骨头这么没顺序,Mesh里的骨头序号怎么对应过来呢?好吧,仔细想想,其实没那么复杂。因为SkinnedMeshRenderer里包含Mesh和Bones两个成员,由于都是一起生成的,那么就一个坑埋一个人,正好就对应起来了。之所以要这么个Bones列表,是因为要把它画成transform树吧。

3.动画

3.1 动画重定位

重用同一套骨骼
待续

布料

Unity5.0功能教学: http://tieba.baidu.com/p/3690939628?see_lz=1#66786973073l

2018-08-20 【Unity官方功能】模型;蒙皮,网格,骨骼动画,布料概念_第4张图片
image.png

经过我的尝试,这个cloth有严重的网格穿透。一不小心就穿透了。可以做一些简单的效果,比如说旗帜,风帆之类的。衣服的话,需要固定一些点,防止衣服脱落和穿透。
OBI插件效果很不错,但是用起来不是很方便。
实现布料效果

你可能感兴趣的:(2018-08-20 【Unity官方功能】模型;蒙皮,网格,骨骼动画,布料概念)