命令条目:“创建”面板 “辅助对象”“MassFX”(位于下拉列表中)“对象类型”卷展栏 “UConstraint”按钮 在视口中创建约束辅助对象。 “修改”面板 “常规”卷展栏 “应用刚体”。

命令条目:选择一个或两个对象。“MassFX”工具栏 单击活动约束或从弹出按钮选择其他约束。

命令条目:标准菜单:选择一个或两个对象。“动画”菜单 “模拟 - MassFX” 从子菜单中选择约束。

命令条目:增强型菜单:选择一个或两个对象。“模拟”菜单 “约束 - MassFX” 从子菜单中选择约束。

MassFX 中的约束辅助对象允许两个刚体结合使用,就像使用“转枢”约束的门和门框。或者,您可以使用约束来将单个刚体链接到空间中的点。对于约束的概述,请参见约束物理对象。          

约束辅助对象界面包括“修改”面板上的数个卷展栏和一些修改器堆栈的子对象层级。这些控件一次只可用于一个约束,如果选定了多个约束,将不显示卷展栏。但是可以在“MassFX 工具”对话框的“多对象编辑器”面板上编辑多个选定的约束。“多对象编辑器”面板中的大多数控件与“修改”面板中的控件相同。          

步骤

要使用 MassFX 约束,请执行以下操作:

应用 MassFX 约束最方便的方法是从 MassFX 工具栏应用:

  1. 创建要约束的对象。使用“层次”面板 轴控件来定位要在其上附加约束的轴。                  

    例如,如果一个对象是门,则将其轴沿垂直边(现实世界中附加转枢的位置)放置。

  2. 根据是否要将刚体约束到空间中的点或约束到另一个刚体,请分别选择一个或两个对象。

    如果选择两个对象,请先选择父对象,然后再选择子对象。子对象是主要受约束的对象;例如,对于转枢门,门是子对象,门框是父对象。                  

    提示约束对“刚体”修改器而不是对象本身起作用,但不需要首先应用修改器。如果修改器不存在,系统会在您应用约束时提示您添加。如果确认提示,MassFX 将自动添加修改器。                      

  3. 在“MassFX”工具栏上,单击活动约束预设或从“约束”弹出按钮中选择其他约束。                  

    如果提示您应用“MassFX 刚体”修改器,单击“是”以继续。

    注意在所有情况下,添加相同的辅助对象:UConstraint。根据要应用的约束操作的类型,不同的预设只不过应用不同的设置。应用辅助对象后,可以根据需要调整这些设置以创建任何类型的约束。                      

  4. 在视口中沿着水平方向来回移动鼠标,以调整约束的显示大小,然后单击以设定大小。                  

    命令面板切换为“修改”面板并显示“UConstraint”设置。

  5. 根据需要调整设置,并定位应在模拟中启动的对象和约束。

    提示使用“多对象编辑器”面板可以同时调整多个约束。      

界面

可以移动和旋转约束以指定允许运动的范围。例如,旋转转枢约束可指示旋转转枢子对象的范围。

修改器堆栈 - 子对象层级              

通过 MassFX 约束的修改器堆栈,可以访问影响模拟的设置。当子对象层级处于活动状态时,可以通过变换相应的 Gizmo 更改约束行为。                

子附加点

约束连接到子刚体的位置,描述为线框立方体。

访问该子对象层级时,MassFX 会自动选择子附加点 Gizmo,并激活“移动”工具。  

子附加点子对象处于活动状态的通用约束。红色箭头(用于说明目的)指示附加点。

子初始扭曲

约束限制内角运动的默认中心,描述为线框箭头。

访问该子对象层级时,MassFX 会自动选择子初始扭曲 Gizmo,并激活“旋转”工具。  

子初始扭曲子对象(白色箭头)处于活动状态的通用约束。红色箭头(用于说明目的)指示初始扭曲子对象。

“常规”卷展栏                

“连接”组                  

使用这些控件可以将刚体指定给约束。可以将父对象和子对象都指定给约束,也可仅指定子对象。父对象可以是任何刚体类型;子对象必须为动力学类型。                  

如果指定父对象和子对象,则父对象(如果为动力学)的运动将受模拟影响,子对象的运动将受父对象运动、约束和模拟的影响。如果仅指定子对象,则子对象将受约束和模拟的影响。                  

您也可以使用这些控件从约束中删除对象,更改受约束对象和约束之间的附加点,以及反转父/子关系。                  

父对象

设置刚体以作为约束的父对象使用。单击使用关联对象的名称标记的按钮,然后在视口中选择要作为新父对象使用的刚体。约束即链接到父对象,并随其一起旋转和移动。父对象可以是动力学对象或运动学对象,但不可以是静态对象。                            

要删除父对象,请单击“X”按钮。当父对象被取消设置(未链接到任何刚体),并由“无”标签指示时,约束会锚定到全局空间(即其当前的位置)。在选定单个刚体的情况下创建约束会将相应刚体设置为子对象,但无父对象,并相对于全局空间约束刚体。                            

移动到父对象的轴

设置在对象的轴的约束位置。此选项对于子对象应围绕父对象轴旋转的相应约束非常有用,如破碎球约束到起重机的顶部。

切换父/子对象

反转父/子关系,之前的父对象变成子对象,反之亦然。

子对象

设置刚体以作为约束的子对象使用。单击使用关联对象的名称标记的按钮,然后在视口中选择要作为新子对象使用的刚体。子对象仅可以是动力学刚体,而不能是运动学刚体或静态刚体。                            

您可以使用“X”按钮以删除子对象,但这将导致无效的约束。                            

移动到子对象的轴

调整约束的位置,以将其定位在对象的轴上。例如,此选项对于两个骨骼之间的约束非常有用。

“行为”组                  

约束行为

选择约束使用受约束实体的加速度还是力来确定行为。

  • 使用加速度执行弹簧和阻尼行为时需要考虑加速度。使用此选项,受约束刚体的质量不会成为影响行为的因素。                                  

    “使用加速度”选项有助于提高关节的总体稳固性,但关节之间的质量平衡可能会出错。                                  

  • 使用力 此模式处于活动状态时,弹簧和阻尼行为的所有等式都包括质量,导致产生力而非加速度。结果可能更难控制,但可以生成物理上更精确的行为。                                  

    注意(适用于高级用户)使用此模式时,请记住弹簧和阻尼常量将质量和重心框架视为与约束相对。“使用力”模式不执行任何自动转化计算以保持相同行为,因为此功能与“使用加速度”模式不同,目的不是维持相同行为。要匹配“使用加速度”模式的行为,请在使用“软限制”(请参见下文)选项时手动增加这些值。由于                                    MassFX 内的基本解算器计算不同,因此无法实现该模式的精确匹配转化。作为一个有用的起点,请将父对象和子对象的质量相乘。

约束限制

选择子实体达到限制时,约束如何根据在“平移限制”及“摆动和扭曲限制”卷展栏(请参见下文)中的设置的定义采取行为:

  • 硬限制当子刚体遇到运动范围的边界时,将根据定义的“反弹”值反弹回来。                                  

    当“硬限制”处于活动状态时,只有“限制”和“反弹”控件可用。弹簧和阻尼设置仅适用于软限制。

  • 软限制                

    此限制类型之所以称为“软限制”,是因为子对象可以超越该限制。当子刚体遇到运动范围的边界(限制)时,将激活弹簧和阻尼行为来减慢子对象并/或应用力以使其返回限制范围内。                                  

    注意如果力足够大(或弹簧值太低),则可能永久保持在限制范围之外,因为限制只是弹簧和阻尼行为激活的范围。

    当“软限制”处于活动状态时,只有“限制”、“弹簧”和“阻尼”控件可用。反弹设置仅适用于硬限制。        

图标大小

要在视口中绘制约束辅助对象的大小。此属性不会影响模拟;它只是使您的约束足够大以便不会隐藏在所约束的对象内,但不能太大。                      

“平移限制”卷展栏              

使用这些设置可以指定受约束子对象的线性运动的允许范围。

注意仅当将至少一个轴设置为“受限”时,数值设置才可用。                    

X/Y/Z

为每个轴选择沿轴约束运动的方式:

  • 锁定防止刚体沿此局部轴移动。

  • 受限允许对象按“限制半径”大小将沿此局部轴移动(远离父对象和子对象之间的初始偏移)。如果多个轴设置为“受限”,运动是径向受限:在圆或球体内,不是正方形或长方体。“限制半径”的距离针对每个“受限”轴在视口中直观地表示。                            

  • 自由刚体沿着各自轴的运动是不受限制的。  

限制半径

父对象和子对象可以从其初始偏移移离的沿受限轴的距离。                      

反弹

对于任何受限轴,碰撞时对象偏离限制而反弹的数量。值 0.0 表示没有反弹,而值 1.0 表示完全反弹。仅当将“约束限制”设置为“硬限制”时才可用。

Spring

对于任何受限轴,是指在超限情况下将对象拉回限制点的“弹簧”强度。较小的值表示低弹簧力,而较大的值会随着力增加将对象拉回到限制。0.0 值是用于指示强制限制的特殊值,试图避免对象超出平移限制。仅当将“约束限制”设置为“软限制”时才可用。                    

阻尼

对于任何受限轴,在平移超出限制时它们所受的移动阻力数量。仅当将“约束限制”设置为“软限制”时才可用。                    

“摆动和扭曲限制”卷展栏              

使用这些设置可以指定受约束子对象的角运动的允许范围。                

注意仅当选中“受限”选项时,数值设置才可用。                  

“摆动 Y”和“摆动 Z”组                  

“摆动 Y”和“摆动 Z”分别表示围绕约束的局部 Y 轴和 Z 轴的旋转。为每个轴选择下列选项之一:                  

  • 锁定防止父对象和子对象围绕约束的各自轴旋转。

  • 受限允许父对象和子对象围绕轴的中心旋转固定数量的度数(由“角度限制”设置所指定)。

    要偏移中心点,请旋转约束。视口中约束辅助对象的可视化将会显示这些限制。


  • 自由允许父对象和子对象围绕约束的局部轴无限制旋转。

角度限制

当“摆动”设置为“受限”时,离开中心允许旋转的度数。这应用到两侧,因此总的运动范围是该值的两倍。例如,如果将“角度限制”设置为 45 度,则允许旋转的总数等于 90 度。

反弹

当“摆动”设置为“受限”时,碰撞时对象偏离限制而反弹的数量。值 0.0 表示没有反弹,而值 1.0 表示完全反弹。仅当将“约束限制”设置为“硬限制”时才可用。

Spring

当“摆动”设置为“受限”时,将对象拉回到限制(如果超出限制)的弹簧强度。较小的值表示低弹簧力,而较大的值会随着力增加将对象拉回到限制。0.0 值是用于指示硬限制的特殊值,尝试避免对象超出摆动限制。仅当将“约束限制”设置为“软限制”时才可用。

阻尼

当“摆动”设置为“受限”且超出限制时,对象在限制以外所受的旋转阻力数量。仅当将“约束限制”设置为“软限制”时才可用。

“扭曲”组                  

扭曲是指围绕约束的局部 X 轴旋转。                  

  • 锁定防止父对象和子对象围绕约束的局部 X 轴旋转。

  • 受限允许父对象和子对象围绕局部 X 轴在固定角度范围内旋转。

  • 自由允许父对象和子对象围绕约束的局部 X 轴无限制旋转。

限制

当“扭曲”设置为“受限”时,“左”和“右”值是每侧限制的绝对度数。(视口中这些限制的可视化可帮助您按需要调整它们。)

反弹

当“扭曲”设置为“受限”时,碰撞时对象偏离限制而反弹的数量。每个限制可以指定唯一的值。值 0.0 表示没有反弹,而值 1.0 表示完全反弹。仅当将“约束限制”设置为“硬限制”时才可用。

Spring

当“扭曲”设置为“受限”时,将对象拉回到限制(如果超出限制)的弹簧强度。每个限制可以指定唯一的值。较小的值表示低弹簧力,而较大的值会随着力增加将对象拉回到限制。0.0 值是用于指示硬限制的特殊值,尝试避免对象超出摆动限制。仅当将“约束限制”设置为“软限制”时才可用。

阻尼

当“扭曲”设置为“受限”且超出限制时对象所受的旋转阻力数量。每个限制可以指定唯一的值。仅当将“约束限制”设置为“软限制”时才可用。

“弹簧”卷展栏                

               

约束限制(请参见上文)的“反弹”和“弹簧”设置控制着约束越过限制边的行为,而同时始终会应用“弹簧”卷展栏上的设置。这些设置与在现实世界中称为“弹簧”的设置更为相似。                

“弹到基准位置”组                  

弹性

始终将父对象和子对象的平移拉回到其初始偏移位置的力量。较小值代表弹簧力低,而较大值会通过不断增加的力将对象推回到初始偏移。值 0.0 表示没有弹簧力。

阻尼

弹性不为零时用于限制弹簧力的阻力。这不会导致对象本身因阻力而移动,而只会减轻弹簧的效果。

“弹到基准摆动”组                  

类似于“弹到基准位置”,但将对象拉回到其围绕局部 Y 轴和 Z 轴的初始旋转偏移,而不是它们的位置偏移。                  

“弹到基准扭曲”组                  

类似于“弹到基准摆动”,但将对象拉回到其围绕局部 X 轴的初始旋转偏移。

“高级”卷展栏                

父/子刚体碰撞

如果禁用此选项(默认),由某个约束所连接的父刚体和子刚体将无法相互碰撞。举例来说,这样会使大腿和小腿的刚体在膝部重叠而不会出现问题。如果启用此选项,可以使两个刚体彼此响应,并对其他刚体做出反应。

“可断开约束”组                  

可断开

如果启用此选项,在模拟阶段可能会破坏此约束。如果在父对象和子对象之间应用超出“最大力”的线性力或超出“最大扭矩”的扭曲力(请参见下文),则约束“破坏”;也就是说,将禁用且不再应用此约束。

最大力

“可断开”处于启用状态时,如果线性力的大小超过该值,将断开约束。要使约束更难破坏,请增加该值。                            

注意在“多对象编辑器”面板中,此设置标记为“断开力”。

最大扭矩

“可断开”处于启用状态时,如果扭曲力的数量超过该值,将断开约束。要使约束更难破坏,请增加该值。                            

注意在“多对象编辑器”面板中,此设置标记为“断开扭矩”。

“投影”组                  

投影类型

父对象和子对象违反约束的限制时,投影通过将它们强制到限制来解决此问题。                            

关节投影是针对“钝器”的内容。它只是移动一个角色,不考虑可能干预的碰撞。这可能导致碰撞几何体的穿透,因此建议您避免使用关节投影,除非有涉及关节冲突的实际问题,然后明智地使用它。                            

选择投影方法并设置相应的值:                              

  • 无投影不执行投影。              

  • 线性仅投影线性距离。设置“距离”值。                                  

    使用此选项可以比使用“线性和角度”更快地进行模拟。  

  • 线性和角度同时执行线性投影和角度投影。设置“距离”和“角度”值。  

    “线性和角度”选项模拟速度较慢,但更精确。    

距离

为了投影生效要超过的约束冲突的最小距离。低于此距离的错误不会使用投影。将该值设置过小会导致将不必要的振动带入模拟中。

角度

必须超过约束冲突的最小角度(以度为单位),投影才能生效。低于该角度的错误将不会使用投影。

“相对节点”卷展栏              

仅当约束成为碎布玩偶对象的一部分时,此卷展栏才可用。                

选择碎布玩偶

选择约束所属的碎布玩偶。                    

,