

用nCloth和Paint Effects制作落叶效果-用Maya8.5最新的nCloth模块和Paint Effects制作落叶效果 作者: Duncan Brinsmead来源: Autodesk Area![]() sunsetLeafFall.avi sunsetLeaf.zip 现在你可以使用Maya8.5最新的nCloth模块来制作树叶坠落的动画效果了。你可以很容易的用nCloth的constraints功能把树叶像胶水一样粘到树枝上面,然后使用动力模块把他们吹落下来。基本的工作流程如下: 1:用Paint Effects制作树木。 2:把树木转换成Polygon面片格式。 3:选择树叶,转换成nCloth。 以下是对这些步骤详细的描述: 1. 用Paint Effects制作树木一般来讲,你应该使用容易转换成Polygon面片格式的Paint Efeects树木模型,每一张树叶不应该有太多的面片数(否则Maya的运算时间会大大加长)。下面提供的Paint Effects笔刷符合这样的要求。下载以下两个文件,放入Maya的“treesMesh”文件夹。(使用菜单"Paint effects:Get Brush",你可以在Visor窗口看到“treesMesh”文件夹的路径。) oakBigLeaf.mel oakBigLeaf.mel.icon 把以上两个文件正确放入Maya的“treesMesh”文件夹后,你可以在Visor窗口里选择"oakBigLeaf"笔刷,制作Paint Effects树木了。 ![]() 2. 使用菜单"Modify: Convert: Paint Effects to Polygons"把树木转换成Polygon面片格式:3. 选择树叶![]() 4. 使用菜单"nCloth: Create nCloth"把树叶转换成nCloth完成转换后,当你在Maya里实时播放,树叶就会向下坠落了。在nucleus节点的属性里面,激活"Use Plane",这样树叶就会和地面产生碰撞。但是Maya的实时播放速度就会很慢。为了加快播放的速度,在nucleus节点的属性里面,把“substeps”和“max collision iterations”设为1。在nClothShape节点的属性里面,关闭“Self Collide”(自我碰撞)。(如果你想让树叶之间产生碰撞,你可以打开“Self Collide”属性,但是你应该把“selfCollideWidthScale”设为1,把“thickness”也设的小一点。)。经过这样的设置,实时播放的速度应该变得很快了。在nCloth属性里面提高“friction”(摩擦),在nucleus节点的属性里面提高“planeFriction”,这样树叶就不会到处滑行了。 ![]() 5. 增加nCloth的“bend resistance“ (弯曲抗拒系数)在我们的教程中,所有的树叶在坠落的时候都会产生一点弯曲。但是实际的树叶在坠落的时候并不会弯曲,所以我们要改变树叶的抗弯曲属性,让它们在坠落的时候不会产生弯曲的现象。在nucleus节点的属性里面,把“Stretch/Compression/Bend resistance”都设置成1.0。如果你的树叶有很多面片的话,这些树值应该设置的更高。 6. 在nCloth里提高“Lift“和“Drag“数值把“Lift“和“Drag“都设为0.3。一般来讲,如果你把"Lift"设置的比"Drag"要高的话,树叶在下降的时候就会活动的太厉害。你也可以把"tangential drag"设置的比0稍微高一点点,这样树叶看上去就有了一点自身的阻力。如果把"tangential drag"设置为1,把"lift"设置为0的话, 树叶的运动方式看上去就会很单调和不自然. sunsetLeafUniformDrag.avi 如果我们降低“tangentialDrag”到0,同时“lift”设为0, 得到的动画看上去挺有趣, 但是还是不很自然. sunsetLeafNoLift.avi 当我们把"lift"的值设置高于0以后, 树叶坠落的动画看上去就更自然了. sunsetLeafFall.avi 7. 应用不同的设置, 得到不同的效果我们可以在播放实时动画时改变nCloth的各种属性, 观察它们对动画产生的影响. 试着在nucleus节点下改变风的强度和方向, 观察风是怎样推动树叶的. 你也可以提高"Input Mesh Attract"数值, 把树叶推回到树枝上去. 值得关注的一个现象是: 如果你对之前的Paint Effects树木(还没有转换成Polygon面片之前的模型)制作了动画, 那么这个"Input Mesh Attract"属性影响的是树叶的位置. 你也可以用Paint Effects节点上的"turbulence"属性制作树木的动画, 然后用"Input Mesh Attract"属性在1和0之间做一段释放树叶的动画. 你也可以提高"Deform Resistance"属性的数值, 所有的树叶会变得像冻在一块冰上面一样. 接下去的教程会教你怎样把树叶"粘"上树枝, 然后让这些树叶通过风或树木的抖动自然地坠落, 而不是所有的树叶同时掉落. The rest of this tutorial will cover how to attach the leaves to the tree and dynamically break the attachments(through wind or tree shaking) such that the leaves don't all fall at once. 8. 选择树叶和树9. 使用菜单"nConstraint: Component to Component"每一片树叶上面的点(CV)连到离它最近的树木物体上的点(CV). 而我们只想要最靠近树枝的树叶上的点和树枝有联系. 我们可以通过把Constraint的"Connection Method"设置为 "Within Max Distance"来达到目的. 现在当你播放实时动画时, 有一些叶子就会掉落, 那是应为这些叶子的点(cv)离开树枝的距离都大于设为"0.1"的Max Distance数值. 我们可以试着增加"Max Distance"到0.3左右. 实时动画会变慢, 因为更多的树叶的点连上了树枝. 增加这个数值的一个好处是可以防止某些树叶围着树枝的点打转, 但是实时动画播放速度会变慢. 一个更准确的连接方法是将树叶的边(Edge)和树枝的边(Edge)相连接, 同时使用constraint上的"bendStrength"来防止树叶打转的现象, 当然, 这样会使实时动画播放更慢. 具体的做法是将constraint的"max distance"设置为0.08左右, 同时将两个nComponent节点属性上的"Component Type"设为edge. ![]() 10. 通过设置"glue strength"以分开树叶和树枝之间的连接.把constraint的“glue strength“设置为0.2左右,在nucleus节点属性下提高风速, 这样树叶就会被吹下树枝. 你可以把风速参数设置为高于1.0, 也可以用oakBigLeaf笔刷的 turbulence属性做出树枝抖动的动画, 另一个方法是用oakBigLeaf笔刷的"Uniform Force"属性使树枝弯曲制作关键桢动画. 注意: 如果你用的是edge to edge constraint(边对边), 那么你也需要设置constraint的"Bend Break Angle"属性. ![]() 下面的动画是在Paint Effects笔刷的"brush Path Follow"属性上, 设置关键桢使树木弯曲, 而得到的动画, 同时nucleus节点下的风速也被提高了. ![]() sunsetLeafBlow.avi 以下文件包括场景文件“sunsetLeafFall.ma“和“sunsetLeafBlow.ma“还有贴图文件。 sunsetLeaf.zip |