设置头发约束

 
 
 

使用约束来设计头发曲线。例如,约束可以用作把头发后向束或扎成马尾的发扣。可以创建各种类型的约束:“橡皮筋”(Rubber Band)“连杆”(Stick)“变换”(Transform)“头发到头发”(Hair to Hair)“发束”(Hair Bunch)“碰撞球体”(Collide Sphere)“碰撞立方体”(Collide Cube)。有关约束类型的描述,请参见头发约束类型。最后两个约束类型为隐式碰撞约束,其工作原理与其他约束类型不同;请参见使用碰撞头发约束

创建约束时,会将约束设定为影响选定的头发曲线。这些毛发曲线的标识存储在 hairConstraint 节点的“curveIndices”属性中。ID 表示头发系统中头发的索引(UV 栅格位置)。

在开始帧,模拟可确定受约束曲线上距离约束节点位置最近的点。如果当前帧小于或等于此开始帧,可以将约束节点及连接移动到最近的点更新。模拟运行时约束仅适用于初始的这一组点,而不是整个曲线。约束类型确定模拟如何处理这一组点。

这样可以确保约束在开始模拟时不对头发应用力,而在模拟进行过程中应用约束。通常,应在建模和确定头发的开始位置和形状后应用约束。如果在模拟开始帧处需要根据场景编辑或设置模型位置,可以在头发毛囊节点或对象变换下为约束分组,这样在开始帧处与头发的相对位置将不会更改(因为始终相对于“开始位置”(Start Position)来定义约束,“发束”(Hair Bunch)除外)。

约束通过对一组点应用力来发挥作用。所应用力的量由约束的“刚度”(Stiffness)属性缩放。另外还有“粘合强度”(Glue Strength)属性,用于确定向点附着约束的阈值,超过此阈值,约束即会中断。点在开始帧粘合到约束。约束应用的力超出粘合强度时,约束即会被断开,然后,该点在剩余的模拟过程中将不受约束。粘合强度为 1 强度已足够,约束永不会中断。在模拟过程中将约束突然中断所需的强度难以确定,可能需要使用不同的胶合值(介于 0 和 1 之间)进行实验才能让中断在所需的点发生(如果需要,可以将粘合强度动态设置为 1 到 0 间的值)。

由于约束仅影响每条选定曲线上的一个点,可以对一组曲线应用位于不同位置的多个约束,以便约束这些曲线上的多个点。

设置头发约束

  1. 选择所需头发曲线。
  2. 选择头发 > 创建约束(Hair > Create Constraint),然后选择所需约束类型。请参见头发约束类型
  3. 在 hairConstraintShape 节点中设定约束属性。有关约束属性的描述,请参见 hairConstraintShape

头发约束类型

以下是对约束类型的描述。

橡皮筋(Rubber Band)

其效果如同在约束和点集之间附着橡皮筋每个橡皮筋的长度就是开始帧处从约束到点之间的距离。如果点和约束之间的距离大于橡皮筋长度,将会应用一个将其拉向约束方向力。

连杆(Stick)

其效果如同从约束到点集之间附着单线,这些单线可以围绕约束中心自由旋转。此类型类似于“橡皮筋”(Rubber Band)约束,不同的是,除了约束和点之间的距离大于开始距离时会应用吸引力,当距离小于开始距离时,也会应用排斥力。这样可以保持所有受约束的点到约束中心的距离固定不变(开始帧处的距离)。

变换(Transform)

其效果如同在开始帧将点限制在一块胶状物中。与“连杆”(Stick)约束不同,当约束节点旋转或缩放时,此约束会沿受约束的点拉伸。约束节点的变换实际上就是这块胶状物的变换。这在将头发约束为沿接触点(如肩膀)垂落下来时非常有用。另外,此约束也可以用于模拟用手抓或者拧头发的效果。如果将约束的比例做成动画,则可以看到头发被抓做一束或者分散开来的效果。

头发到头发(Hair to Hair)

此约束可以将头发绑在一起(就像使用绷带一样),同时头发组可以相对于约束位置自由移动。其效果如同实际约束可以随头发自由移动时的“连杆”(Stick)约束。仅在开始帧引用约束位置,之后将动态更新内部使用的约束。

发束(Hair Bunch)

这可以帮助创建头发实体,因为其动画效果类似于自碰撞,但计算量相对更少。距离约束最近的一组初始点将在重叠的时(根据束宽度)相互排斥。在点接触时轻微粘滞在一起的位置还会出现轻微静电吸附。如果发束在开始帧重叠,可能突然散开(与其他方法不同,在模拟开始时没有应用力)。可在发束稳定后运行模拟,然后设定“开始位置”(Start Position)解决此问题。

碰撞球体碰撞立方体(Collide Sphere Collide Cube)

插入行为类似于隐式碰撞对象的球体或立方体。根据需要变换球体或立方体。有关详细信息,请参见使用碰撞头发约束

注意

如果头发不静止或在“碰撞球体”(Collide Sphere)“碰撞立方体”(Collide Cube)约束上反弹,请降低约束“刚度”(Stiffness)。特别是快速移动的约束,否则头发会使头发从约束中快速射出。低“刚度”(Stiffness)值通常可以修复此问题。

使用碰撞头发约束

与其他头发约束不同,“碰撞球体”(Collide Sphere)“碰撞立方体”(Collide Cube)影响所有头发,而非特定的头发 CV。这些对象与和几何体碰撞相比有多个优点。

通常,需要使用这些在变换几何体下分组的约束中一部分,在碰撞区域(如头部和肩部)大致形成几何体的外形。对于有机对象,可能需要使用几个球体,将某些有些对象缩放为椭球体。虽然在某些情况下锐边会导致稳定性问题(球体不会出现类似问题),碰撞立方体最适合用于墙壁和平面。但是,降低“碰撞立方体”(Collide Cube)“刚度”(Stiffness)值往往可以磨平立方体的边。

另一方面,高非等比缩放球体可能会出现点滑向边(最弯曲的区域)的问题。非等比缩放立方体不会出现该问题。