Maya布料系统布料约束.docx
《Maya布料系统布料约束.docx》由会员分享,可在线阅读,更多相关《Maya布料系统布料约束.docx(10页珍藏版)》请在冰豆网上搜索。
Maya布料系统布料约束
[Maya]布料系统布料约束
[Maya]布料系统布料约束
布料约束
创建布料系统后,我们还需要对其进行相应的约束,才能满足我们的具体动画要求,如裙子、围巾、披风等物体的运动。
*在创建好布料之后,直接进行布料对物体的约束(不创建被动碰撞物体),软件会自动给物体增加被动碰撞属性,但此时物体的碰撞属性是关闭的,布料会穿过物体,需手动设置被动碰撞物体的属性节点nRigidShape的Collide为on。
布料运算需要有缓冲的过程,如果布料附着的物体运动幅度过大,容易导致布料出现错误解算。
*如果使用了布料缓存,一定要将布料的nucleus内核解算器关闭,否则在播放动画的时候,Maya仍然会进行布料解算;
在创建布料缓存后,应该将布料物体的布料属性用RemovenCloth去除(包括被动物体属性),然后再赋予布料缓存。
创建并编辑布料约束
进入nMesh->nConstraint菜单
nConstrainW
■■匚“—・-£
Slrdeq-nSurfaceO
WefdAdjacentBorders&
FotteField°
AttracttoMatchingMesh°
TearableSurface°
DisableCollision
ExcludeCollidePairs
RemoveDynamicCpnstraintnConstraintMembershipTool
SelectMembers
ReplaceMembers
AddMembers
RemoveMembers
PaintPropertiesbyVertexMap
PaintPropertiesbyT©ctureMap
ConvertTexturetoVEttexMap
ConvertVertextoTextureMap
Transformconstraint
创建布料变形约束
创建一个变形约束来控制空间中特定的布料成分,并可在XYZ轴向移动它们。
例如,可以制作一个变形约束的布料,使其与场景中穿过的被动物体产生碰撞跟随。
1•在场景视图中,选择要约束的布料物体或者布料成分(点、线、面),如果选择线或者面,它们所包含的点将被变形约束;
2.在布料的菜单设置中,进入nConstraint->Transform的选项,开启变形约束选项窗口;
3.开启UseSets,将所有选择的布料物体的成分,或者只是部分选择的布料成分,增加到一个动力学约束的选择设置中;
4.点击CreateConstraint或者Apply完成变形约束的创建;
现在,所选择的布料物体或者其成分已经被约束到它们在XYZ空间的当前位置,并且一个变形约束定位器locator被创建,用于控制选择的布料物体或者其成分。
所有选择的布料物体或者成分会通过一个动力学约束节点连接到布料的MayaNucleusCMaya内核)解算器。
动力学约束节点上的预设,决定着约束的类型(如当前是变形约束)和行为。
例如,变形约束包括SpringConstraintMethod(弹性约束方法),ObjecttoConstraintConstraint
Relation(约束用的物体的约束关系),和ComponentOrderConnection
Method(成分命令连接方法)。
5.(可选的)变形约束定位器控制着布料物体的移动。
例如,对变形约束定位器进行动画设置,使变形约束的布料丝绸围巾直接进行移动,就像穿过空气落下。
ComponenttoComponentconstraint创建一个布料的成分相互约束
创建一个成分相互约束,可以将布料成分(点、线、面)吸附到其他布料或者被动物体成分上。
例如,将一个布料披肩顶部的点约束到角色的肩部,使得披肩能够悬挂在角色肩上,并随着角色移动。
1•在场景视图中,选择要约束的布料成分(点、线、面),如果选择线或者面,它们所包含的点将被变形约束;
2.选择约束布料点的H标成分(点、线、面)。
此成分可以是同一布料物体、不同布料物体、被动物体,或者一个不含布料属性的物体。
如果选择线或者面,它们所包含的点将被变形约束。
注意:
如果选择的是不含布料属性的LI标成分,
当创建约束后,该物体将被转为被动物体;
3.在布料菜单设置中,进入nConstraint->ComponenttoComponent的选项,开启成分相互约束窗口;
4.开启UseSets,将选择的布料成分和目标成分,增加到一个动力学约束的选择设置中;
Apply完成成分相互约束的创建5.点击CreateConstraint或者
选择的布料成分被约束到所选的LI标点上,并通过一个
dynamicConstraint(动力学约束)节点连接到布料的MayaNucleus(Maya内核)解算器。
动力学约束节点上的预设,决定着约束的类型(如当前是成分相互约束)和行为。
例如,成分相互约束包括SpringConstraintMethod(弹性约束方法),ObjecttoObjectConstraintRelation(物体相互约束关系),AlltoAllComponentRelation(所有成分间关系).和NearestPairsConnectionMethod(最近成对连接方法)
PointtoSurfaceconstraint点面约束
创建一个点面约束,可以将布料成分(点、线、面)吸附到□标表面上(布料表面,被动的碰撞物体)。
例如,使用点面约束,可以将角色臀部的布料裤子或裙子上的腰带固定住。
1•在场景视图中,选择要约束的布料成分(点、线、面);
2.按住Shift加选要约束布料成分的LI标表面;
H标表面可以是同一系统下的不同的布料物体、布料的被动物体、或者一个不含布料属性的物体。
注意:
如果选择的LI标表面是一个不含布料属性的物体,该表面会在创建约束后转为被动物体。
3.在布料菜单设置中,进入nConstraint->PointtoSurface的选项;4.开启UseSets,将选择的布料成分和忖标成分,增加到一个动力学约束的选择设置中;
5.点击CreateConstraint或者Apply完成点面约束的创建。
SlideonSurfaceconstraint表面滑动约束
创建表面滑动约束,可以使布料成分(点、线、面)吸附到一个LI标表面(其他布料表面,被动的碰撞物体),并沿该表面滑动。
我们可以创建表面滑动约束来替代碰撞,而且表面滑动约束的运算速度会比碰撞的运算速度快。
例如,将一个角色模型的布料衬衫的所有点进行表面滑动约束,替代角色作为被动物体的碰撞效果。
【注意】如果使用表面滑动约束替代布料物体的碰撞,要在布料属性编辑器面板中将Collide(碰撞)关闭。
否则,碰撞和约束将被进行双重计算。
如果使用表面滑动约束替代布料物体的碰撞,则不能使用CollisionLayers(碰撞层),对
"MayaNucleus(Maya内核)系统与被约束的布料物体的碰撞”进行有效的控制。
1•在场景视图中,选择要约束的布料成分(点、线、面)。
如果选择线或者面,
它们所包含的点将被变形约束;
2.按Sh辻t加选要约束布料成分的LI标表面。
LI标表面可以是同一系统下的不同布料物体、布料的被动物体、或者一个不含布料属性的物体。
注意:
如果选择的LI标表面是一个不含布料属性的物体,该表面会在创建约束后转为被动物体;
3.在布料菜单设置中,进入nConstraint->SlideonSurface的选项面板;
4.开启UseSets,将选择的布料成分和目标表面,增加到一个动力学约束的选择设置中
5.点击CreateConstraint或者Apply完成表面滑动约束的创建。
WeldAdjacentVerticesconstraint焊接临近点约束
创建焊接临近点约束,可以将布料的borderedges(边界边)或者nCVs点一起约束在一个非弹性样式中。
例如,创建焊接临近点约束,可以将多个布料网格行为焊接成单独的一块布料物体(即缝合布料)
1•选择要约束的单个布料物体、两个临近的布料物体,或者两个临近的布料物体上的边界nCVs点。
你可以选择具有相同或者不同拓扑结构的布料物体,并且nCVs点的组数可以变更;
注意:
所选的用于约束的布料物体或者nCVs点,在场景的3D空间视图中,需要相离很近或者被定位在相同的XYZ位置。
否则,会出现以下问题:
出创建焊接临近点约束后,选择的布料或者nCVs会爆开或者跳跃。
焊接临近点约束将失效,除非增加最大距离的数值
2.进入nConstraint->WeldAdjacentVertices的选项窗口;3.开启UseSets,将选择的布料的边界nCVs点,增加到一个动力学约束的选择设置中;
4.点击CreateConstraint或者Apply完成焊接临近点约束的创建。
如果选择的是一个单独的布料物体,它的临近边界边将使用Weld(焊接)的约束方法;
如果选择了两个临近的布料物体,布料最近的边界边将使用Weld(焊接)的约束方法;
如果所选的布料边界上的nCVs点数量不同,这些点将被约束替代;如果选择两个分离布料的nCVs点,这些点将使用Weld(焊接)的约束方法。
ForceFieldconstraint
力场约束
创建一个力场,可以推动布料成分或者物体远离约束的中心,,通过一个放射状的圆球进行弹开。
例如,通过放置力场约束到手肘关节上,可以推开附在角色手肘上的布料。
相反的,也可以在约束的范围内将布料吸附到物体。
1.选择要约束的布料或者被动物体;
2.进入nConstraint~>ForceField的选项窗口;
3.开启UseSets,将选择的布料物体,增加到一个动力学约束的选择设置中;
4.点击CreateConstraint或者Apply完成力场约束的创建;5.使用Maya的移动、缩放和旋转工具,调整力场约束的位置、大小和旋转定位器的位置、大小和方向,可修改力场约束的大小、形状和体积;6.(可选的)在dynamicConstraint(动力学约束)节点下,调整Force(压
力),Strength(强度)和StrengthDropoff(强度衰减)属性,设定力场的力
度。
正数时力场是推开作用,负数时力场吸引布料。
AttracttoMatchingMeshconstraint吸附到匹配网格约束
创建一个吸附到匹配网格的约束,可以将布料物体上的点,通过匹配的拓扑结构,吸附到相应的网格点。
例如,使用这种约束,可以创建一个从角色上脱落的外套的结束形状(外套落到地上形成的特定形状或者在场景中的朝向)1.选择要约束的布料物体;
2.进入nConstraint>AttracttoMatchingMesh的选项窗口;3.开启UseSets,将选择的布料物体,增加到一个动力学约束的选择设置中;4.点击Create
Constraint或者Apply完成吸附到匹配网格约束的创建;5.(可选的)在动力学约束节点中调整强度属性。
Strength强度属性决定了布料物体与IJ标布料网格的相似程度
TearableSurfaceconstraint撕裂表面约束
创建一个撕裂表面约束,可以制作布料物体与被动物体或者其他布料物体接触时产生的裂缝或者解散。
例如,使用撕裂表面约束制作一片布料丝绸落到很尖的被动物体上产生的撕裂效果。
1•选择要产生裂缝、撕裂或者解散的布料物体;
2.如果你想使布料的解散效果大于撕裂效果,设置它的BendResistance(抗
;弯曲)参数大于0.2
3.进入nConstraint->TearableSurface的属性选项;
4.开启UseSets,将选择的布料物体,增加到一个动力学约束的选择设置中;
5.点击CreateConstraint或者Apply完成撕裂表面约束的创建;通过分离当前布料的所有面,产生新的边和点,最终结果是,布料输出网格的拓扑将不再与它的输入网格匹配
6.调整布料的撕裂或者解散的强度,增大或减小撕裂表面约束的GlueStrength(粘合强度)的数值;
7.(可选的)对布料绘制一个粘合强度贴图,可以设定布料撕裂和解散的位置。
注意:
如果想给撕裂或者分散的布料增加额外的约束,则增加约束到它的输入网格(nMeshShape)
如果想给撕裂或者分散的布料绘制纹理贴图,则在它的输入网格上绘制。
同样的,制作布料撕裂或者解散会改变它的输出网格拓扑,所以不要使用点贴图到撕裂或者解散的布料物体上。
对布料、被动物体或者nCVs点创建取消碰撞约束,可以阻止它们与所有其他布料、被动物体或者nCVs点的碰撞。
这类约束可用于改进布料的运动或者避免碰撞儿何体的穿插。
1.选择要取消碰撞的布料物体、被动物体或者nCVs点;
2.选择nConstraint->DisableCollisions;
被选择的布料物体、被动物体或者nCVs点将不再与其他的任何物体或者成分产生碰撞,并且将使用同一个MayaNucleus(Maya内核)解算器。
ExcludeCollisionPairsconstraint排除成对碰撞的约束
对布料、被动物体或者nCVs点创建此类约束,可以避免它们与特定布料、被动物体或者nCVs点的碰撞。
这类约束可用于改进布料的运动或者避免碰撞儿何体的穿插。
1•选择要取消碰撞的成对物体或者成分。
例如,选择两个布料物体,一个布料物体和一个被动物体,或者布料上一组nCVs点与不同布料或者被动物体上的一
组nCVs点;
2.选择nConstraint~>ExcludeCollisionsPairs。
选择的物体之间将不再发生碰撞。
*选择Outliner的dynamicConstraint节点,执行nConstraint-
>RemoveDynamicConstraint命令可移除约束
nConstraint下的其他命令是对布料物体进行更细微的点操作,在这我就不进行详细说明了。