找回密码
 立即注册

布料绑定篇之Maya卡通角色制作

[复制链接]
xiongz 发表于 2013-5-27 14:11:23 | 显示全部楼层 |阅读模式
布料绑定篇之Maya卡通角色制作3d教程
1.制作布料的初始形态
制作服装上的蝴蝶结装饰时,我使用的是布料系统解算完成。首先,赋予模型nCloth属性,通过约束动画,将布料解算到一定程度后复制当前的模型,最后再删除原模型和布料系统。
bc33dc1904929fc1889612212512b9bb.jpg

5ba42c0ca4ddb29bae08386ce7660368.jpg

6512416979fab3c1f4babec15671e3b0.gif
2.Hair系统模拟布料
并不是所有的布料都用到nCloth系统,因为那样解算既慢又容易出错;碰撞效果并不明显的头戴、耳边挂饰、胸前蝴蝶结、鞋子后的蝴蝶结,我采用的是Hair系统+线性IK控制骨骼的方式。操作方法可参考:头发,尾巴的动力学制作--骨骼与动力学曲线的结合技术。
1091b020109c821652a0a11a48892c37.jpg
3.nCloth系统
选择角色身上的其他服装模型,转为动力学布料:nMesh->Create nCloth,选择预设的silk(丝绸);选择角色身体,执行nMesh->CreatePassiveCollider。
内核系统下的PassiveCollider被动碰撞体和刚体系统的被动刚体差不多,但它可以将已绑定的几何体作为被动刚体,范围相对较广。
2724f492c9be531aacaa887fc3fca76d.jpg
4.约束的使用
选择裙子上部的点,执行nConstraint->Transform,创建一个变形约束,固定裙子上部。当裙子衣服的表面没有什么大的变化,使用Transform比Point toSurface执行效率高。
2d65db96c9443863f3d43c300333106e.jpg
布料的约束是很灵活的,既可以用来固定布料,还可以用来模拟布料的碰撞和撕裂效果。裙子,袖口以及肩膀两侧的飘带,除了使用约束来固定一端,我还选择布料模型所有点以及角色身体,执行nConstraint->SlideOnSurface,通过约束来模拟碰撞。场景中,会出现布料点到被动物体之间的最近连线,表示约束的计算距离。
4fa90874c138cf54bf463f7927d09e5d.jpg
使用约束模拟布料碰撞,可以关闭布料节点的Collide功能,模拟速度很快;不过缺点是没有反弹,摩擦,粘性,推进力等参数可调节,适用于较为光滑的布料效果。
584af53e06bb7f4516c5dd3d1d68362c.jpg
当完成了约束设置,为了不影响画面,我们可以去掉布料约束节点下的DisplayConnections的勾选,隐藏场景中的约束。
6039daac736c1719146481a22625f65f.jpg
5.单位比例的设置
因为模型的场景比例是“模型:实物=1:10”,因此将内核系统节点的SpaceScale设置为0.1。而Substeps和MaxCollisionIterations可在稍后的模拟中适当提升数值。
8bd665f9dcc6bb5eaab5d0be714ff6e8.jpg
6.布料碰撞层的使用
裙子上的饰物除了本身的运动,还会和裙子之间产生影响,这就为绑定增加一些难题。首先分析效果,排除一些可以忽略的因素。腰间挂带、裙子、裙子上的挂带都会受到风力的影响,彼此之间也会相互碰撞;从运动效果上,可以制作如下:腰间挂带、裙子、裙子上的挂带的碰撞层(CollisionLayer)数值为1,纽扣碰撞层为0,角色身体为0(因为角色身体直接是被动碰撞物体,因此不用刻意设置)。碰撞层的优先级从高到低的顺序,是根据碰撞层数值的从小到大排列的,如碰撞层为1会推开碰撞层为2的布料物体,而不会受到碰撞层为2的布料物体的反作用力影响;默认的nucleus内核节点下的CollisionLayerRange 设置为4,表示布料之间的碰撞层的差值小于4才可发生碰撞作用。
5fe9f57e6e317417845c4287b545431f.jpg
7.骨骼蒙皮(smoothBind)和布料(nCloth)的关系
布料系统的布料或被动碰撞物体可执行蒙皮操作,尽管它们在动画开始后将不会考虑蒙皮效果,但在第0帧的时候,可以通过蒙皮来进行布料初始形态的设置,这样就可以省下角色从绑定时的姿态运动到所需状态时的解算过程。如果先生成布料,然后对场景中的布料物体执行蒙皮,计算结果将是错误的。这是因为布料系统和柔体的Duplicate,makeCopySoft方式一样,会隐藏原始物体,将复制的物体执行动力学解算(也就是当赋予了模型布料属性,当前的模型并不是原始的模型)。我们可以选择布料物体,执行nMesh->DisplayInputMesh来查看原始物体。当最先创建布料,那么要进行蒙皮时,应该通过此方法,将原始物体和关节进行蒙皮操作。
38e0fcbebead8c0aed1e2aa654920e9d.jpg
内核节点默认是从第1帧开始解算,用户可根据需要改变,参数位于内核形节点下的TimeAttributes的StartFrame。
3f46e74c3dada1a4c6e827857d2a9440.jpg

8.布料吸附(InputMeshAttract)和布料刚性(Rigidity)的区别
布料吸附和布料刚性看似效果一样,但布料吸附对蒙皮后的布料具有很重要的意义—保持布料和蒙皮效果的同步,而布料刚性只是保持布料在解算之前的初始形状的级别。当启用了InputMeshAttract(大于0时),不光是第0帧,执行动画时,骨骼蒙皮的效果都会直接作用于布料物体上,而吸附程度取决于InputMeshAttract的数值以及其对应的动力学属性贴图。尽管布料的InputMeshAttract可设置大于1的数值,但是取值不要大于2,因为这会导致解算异常缓慢。一旦开启了InputMeshAttract,需要配合一定的InputAttractDamp数值,因为阻尼是能量吸收的一个重要参数,要避免布料解算时产生的跳跃或穿插现象,需要一定的阻尼。
dc7b5929c39bd6b3bf6f71282cab331c.jpg
9.Maya2011新增加的约束功能PointOnPoly
使用物体上的点控制其他物体,可使用布料约束,柔体弹簧,或者一些MEL语句;不过Maya2011给我们提供了很大的便利,它增加了PointOnPoly(多边形点约束)这样一个实用的功能。因此制作衣服纽扣这样的特殊约束动画,除了使用布料约束,新约束也是个不错的方法。角色腰带的小球就是普通的几何体通过PointOnPoly被约束在布料物体上。
81fa9652ee6c8fb58578e2ab6977c7f8.jpg
10.布料问题的解决
相对于头发,布料解算时出现的穿插现象是比较麻烦的,很难从根本上解决,只能根据需要适时提高解算精度或隐藏在镜头画面以外。执行解算前,模型之间的间隔一定要大于布料之间的碰撞厚度;如果出现一些模型穿透跳跃,可以启用布料节点下的TrappedCheck,检测碰撞异常并自动修复,但这会增加计算时间;使用滑动约束(slideOnSurface)模拟布料碰撞;对布料的smooth圆滑操作,应该是在布料创建了缓存后再进行;使用Maya2011新增加的碰撞强度(CollideStrength)贴图,对容易发生穿插的区域设置碰撞强度;结合布料多个属性,进行权重贴图绘制,如InputMeshAttract,Rigidity,StretchResistance等。
31655c86030d5a0fe740f2b1d2aff2da.jpg
11.创建布料缓存
布料缓存单个文件最大不能超过2G,因此通常都会选择Onefile per frame的文件形式。
029b677cdc53242eb36e1b6d9a60e56b.jpg
12.绑定动力学系统到角色骨骼
将所有动力学系统附加到骨骼系统中,使它们能跟随角色发生运动,操作如下:
毛发系统的毛囊节点,动力学曲线的输出曲线,柔体系统的原始几何体,布料系统的约束节点,将这些关键元素作为运动骨骼的子级即可(使用约束的方法也可以)。
612839b6ed61aedeb40e01bc47d96958.jpg
【总结】
e379a8ae5434edaff1765be56aedcad5.gif
进行布料模拟,可以使用动力学曲线,柔体,nCloth来完成创意设计
nCloth系统与模型的单位比例有很大的关系,因此在布料绑定前,一定要将模型缩放至合适的比例大小再进行。
nCloth系统的约束是布料效果的一个重要功能,它的作用往往要高于布料属性设置,所以要善于利用。
此文由admin  2013.05.29 15:10分重新编辑!
顺滑好心情,开心一整天!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|电视包装网 ( 京ICP备13020041号-1 )

GMT+8, 2024-4-19 21:22

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表