命令条目:“创建”面板 “辅助对象”“MassFX”(位于下拉列表中)“对象类型”卷展栏 “UConstraint”按钮 在视口中创建约束辅助对象。 “修改”面板 “常规”卷展栏 “应用刚体”。
命令条目:选择一个或两个对象。“MassFX”工具栏 单击活动约束或从弹出按钮选择其他约束。
命令条目:标准菜单:选择一个或两个对象。“动画”菜单 “模拟 - MassFX” 从子菜单中选择约束。
命令条目:增强型菜单:选择一个或两个对象。“模拟”菜单 “约束 - MassFX” 从子菜单中选择约束。
MassFX 中的约束辅助对象允许两个刚体结合使用,就像使用“转枢”约束的门和门框。或者,您可以使用约束来将单个刚体链接到空间中的点。对于约束的概述,请参见约束物理对象。
约束辅助对象界面包括“修改”面板上的数个卷展栏和一些修改器堆栈的子对象层级。这些控件一次只可用于一个约束,如果选定了多个约束,将不显示卷展栏。但是可以在“MassFX 工具”对话框的“多对象编辑器”面板上编辑多个选定的约束。“多对象编辑器”面板中的大多数控件与“修改”面板中的控件相同。
步骤
要使用 MassFX 约束,请执行以下操作:
应用 MassFX 约束最方便的方法是从 MassFX 工具栏应用:
创建要约束的对象。使用“层次”面板 轴控件来定位要在其上附加约束的轴。
例如,如果一个对象是门,则将其轴沿垂直边(现实世界中附加转枢的位置)放置。
根据是否要将刚体约束到空间中的点或约束到另一个刚体,请分别选择一个或两个对象。
如果选择两个对象,请先选择父对象,然后再选择子对象。子对象是主要受约束的对象;例如,对于转枢门,门是子对象,门框是父对象。
提示约束对“刚体”修改器而不是对象本身起作用,但不需要首先应用修改器。如果修改器不存在,系统会在您应用约束时提示您添加。如果确认提示,MassFX 将自动添加修改器。
在“MassFX”工具栏上,单击活动约束预设或从“约束”弹出按钮中选择其他约束。
如果提示您应用“MassFX 刚体”修改器,单击“是”以继续。
注意在所有情况下,添加相同的辅助对象:UConstraint。根据要应用的约束操作的类型,不同的预设只不过应用不同的设置。应用辅助对象后,可以根据需要调整这些设置以创建任何类型的约束。
在视口中沿着水平方向来回移动鼠标,以调整约束的显示大小,然后单击以设定大小。
命令面板切换为“修改”面板并显示“UConstraint”设置。
根据需要调整设置,并定位应在模拟中启动的对象和约束。
提示使用“多对象编辑器”面板可以同时调整多个约束。
界面
可以移动和旋转约束以指定允许运动的范围。例如,旋转转枢约束可指示旋转转枢子对象的范围。
修改器堆栈 - 子对象层级
通过 MassFX 约束的修改器堆栈,可以访问影响模拟的设置。当子对象层级处于活动状态时,可以通过变换相应的 Gizmo 更改约束行为。
子附加点
约束连接到子刚体的位置,描述为线框立方体。
访问该子对象层级时,MassFX 会自动选择子附加点 Gizmo,并激活“移动”工具。
子附加点子对象处于活动状态的通用约束。红色箭头(用于说明目的)指示附加点。
子初始扭曲
约束限制内角运动的默认中心,描述为线框箭头。
访问该子对象层级时,MassFX 会自动选择子初始扭曲 Gizmo,并激活“旋转”工具。
子初始扭曲子对象(白色箭头)处于活动状态的通用约束。红色箭头(用于说明目的)指示初始扭曲子对象。
“常规”卷展栏
“连接”组
使用这些控件可以将刚体指定给约束。可以将父对象和子对象都指定给约束,也可仅指定子对象。父对象可以是任何刚体类型;子对象必须为动力学类型。
如果指定父对象和子对象,则父对象(如果为动力学)的运动将受模拟影响,子对象的运动将受父对象运动、约束和模拟的影响。如果仅指定子对象,则子对象将受约束和模拟的影响。
您也可以使用这些控件从约束中删除对象,更改受约束对象和约束之间的附加点,以及反转父/子关系。
父对象
设置刚体以作为约束的父对象使用。单击使用关联对象的名称标记的按钮,然后在视口中选择要作为新父对象使用的刚体。约束即链接到父对象,并随其一起旋转和移动。父对象可以是动力学对象或运动学对象,但不可以是静态对象。
要删除父对象,请单击“X”按钮。当父对象被取消设置(未链接到任何刚体),并由“无”标签指示时,约束会锚定到全局空间(即其当前的位置)。在选定单个刚体的情况下创建约束会将相应刚体设置为子对象,但无父对象,并相对于全局空间约束刚体。
设置在父对象的轴的约束位置。此选项对于子对象应围绕父对象轴旋转的相应约束非常有用,如破碎球约束到起重机的顶部。
反转父/子关系,之前的父对象变成子对象,反之亦然。
设置刚体以作为约束的子对象使用。单击使用关联对象的名称标记的按钮,然后在视口中选择要作为新子对象使用的刚体。子对象仅可以是动力学刚体,而不能是运动学刚体或静态刚体。
您可以使用“X”按钮以删除子对象,但这将导致无效的约束。
调整约束的位置,以将其定位在子对象的轴上。例如,此选项对于两个骨骼之间的约束非常有用。
选择约束使用受约束实体的加速度还是力来确定行为。
使用加速度执行弹簧和阻尼行为时需要考虑加速度。使用此选项,受约束刚体的质量不会成为影响行为的因素。
“使用加速度”选项有助于提高关节的总体稳固性,但关节之间的质量平衡可能会出错。
使用力 此模式处于活动状态时,弹簧和阻尼行为的所有等式都包括质量,导致产生力而非加速度。结果可能更难控制,但可以生成物理上更精确的行为。
注意(适用于高级用户)使用此模式时,请记住弹簧和阻尼常量将质量和重心框架视为与约束相对。“使用力”模式不执行任何自动转化计算以保持相同行为,因为此功能与“使用加速度”模式不同,目的不是维持相同行为。要匹配“使用加速度”模式的行为,请在使用“软限制”(请参见下文)选项时手动增加这些值。由于 MassFX 内的基本解算器计算不同,因此无法实现该模式的精确匹配转化。作为一个有用的起点,请将父对象和子对象的质量相乘。
选择子实体达到限制时,约束如何根据在“平移限制”及“摆动和扭曲限制”卷展栏(请参见下文)中的设置的定义采取行为:
硬限制当子刚体遇到运动范围的边界时,将根据定义的“反弹”值反弹回来。
当“硬限制”处于活动状态时,只有“限制”和“反弹”控件可用。弹簧和阻尼设置仅适用于软限制。
软限制
此限制类型之所以称为“软限制”,是因为子对象可以超越该限制。当子刚体遇到运动范围的边界(限制)时,将激活弹簧和阻尼行为来减慢子对象并/或应用力以使其返回限制范围内。
注意如果力足够大(或弹簧值太低),则可能永久保持在限制范围之外,因为限制只是弹簧和阻尼行为激活的范围。
当“软限制”处于活动状态时,只有“限制”、“弹簧”和“阻尼”控件可用。反弹设置仅适用于硬限制。
要在视口中绘制约束辅助对象的大小。此属性不会影响模拟;它只是使您的约束足够大以便不会隐藏在所约束的对象内,但不能太大。
为每个轴选择沿轴约束运动的方式:
锁定防止刚体沿此局部轴移动。
受限允许对象按“限制半径”大小将沿此局部轴移动(远离父对象和子对象之间的初始偏移)。如果多个轴设置为“受限”,运动是径向受限:在圆或球体内,不是正方形或长方体。“限制半径”的距离针对每个“受限”轴在视口中直观地表示。
自由刚体沿着各自轴的运动是不受限制的。
父对象和子对象可以从其初始偏移移离的沿受限轴的距离。
对于任何受限轴,碰撞时对象偏离限制而反弹的数量。值 0.0 表示没有反弹,而值 1.0 表示完全反弹。仅当将“约束限制”设置为“硬限制”时才可用。
对于任何受限轴,是指在超限情况下将对象拉回限制点的“弹簧”强度。较小的值表示低弹簧力,而较大的值会随着力增加将对象拉回到限制。0.0 值是用于指示强制限制的特殊值,试图避免对象超出平移限制。仅当将“约束限制”设置为“软限制”时才可用。
对于任何受限轴,在平移超出限制时它们所受的移动阻力数量。仅当将“约束限制”设置为“软限制”时才可用。
锁定防止父对象和子对象围绕约束的各自轴旋转。
受限允许父对象和子对象围绕轴的中心旋转固定数量的度数(由“角度限制”设置所指定)。
要偏移中心点,请旋转约束。视口中约束辅助对象的可视化将会显示这些限制。
自由允许父对象和子对象围绕约束的局部轴无限制旋转。
当“摆动”设置为“受限”时,离开中心允许旋转的度数。这应用到两侧,因此总的运动范围是该值的两倍。例如,如果将“角度限制”设置为 45 度,则允许旋转的总数等于 90 度。
当“摆动”设置为“受限”时,碰撞时对象偏离限制而反弹的数量。值 0.0 表示没有反弹,而值 1.0 表示完全反弹。仅当将“约束限制”设置为“硬限制”时才可用。
当“摆动”设置为“受限”时,将对象拉回到限制(如果超出限制)的弹簧强度。较小的值表示低弹簧力,而较大的值会随着力增加将对象拉回到限制。0.0 值是用于指示硬限制的特殊值,尝试避免对象超出摆动限制。仅当将“约束限制”设置为“软限制”时才可用。
当“摆动”设置为“受限”且超出限制时,对象在限制以外所受的旋转阻力数量。仅当将“约束限制”设置为“软限制”时才可用。
锁定防止父对象和子对象围绕约束的局部 X 轴旋转。
受限允许父对象和子对象围绕局部 X 轴在固定角度范围内旋转。
自由允许父对象和子对象围绕约束的局部 X 轴无限制旋转。
当“扭曲”设置为“受限”时,“左”和“右”值是每侧限制的绝对度数。(视口中这些限制的可视化可帮助您按需要调整它们。)
当“扭曲”设置为“受限”时,碰撞时对象偏离限制而反弹的数量。每个限制可以指定唯一的值。值 0.0 表示没有反弹,而值 1.0 表示完全反弹。仅当将“约束限制”设置为“硬限制”时才可用。
当“扭曲”设置为“受限”时,将对象拉回到限制(如果超出限制)的弹簧强度。每个限制可以指定唯一的值。较小的值表示低弹簧力,而较大的值会随着力增加将对象拉回到限制。0.0 值是用于指示硬限制的特殊值,尝试避免对象超出摆动限制。仅当将“约束限制”设置为“软限制”时才可用。
当“扭曲”设置为“受限”且超出限制时对象所受的旋转阻力数量。每个限制可以指定唯一的值。仅当将“约束限制”设置为“软限制”时才可用。
始终将父对象和子对象的平移拉回到其初始偏移位置的力量。较小值代表弹簧力低,而较大值会通过不断增加的力将对象推回到初始偏移。值 0.0 表示没有弹簧力。
弹性不为零时用于限制弹簧力的阻力。这不会导致对象本身因阻力而移动,而只会减轻弹簧的效果。
如果禁用此选项(默认),由某个约束所连接的父刚体和子刚体将无法相互碰撞。举例来说,这样会使大腿和小腿的刚体在膝部重叠而不会出现问题。如果启用此选项,可以使两个刚体彼此响应,并对其他刚体做出反应。
如果启用此选项,在模拟阶段可能会破坏此约束。如果在父对象和子对象之间应用超出“最大力”的线性力或超出“最大扭矩”的扭曲力(请参见下文),则约束“破坏”;也就是说,将禁用且不再应用此约束。
“可断开”处于启用状态时,如果线性力的大小超过该值,将断开约束。要使约束更难破坏,请增加该值。
注意在“多对象编辑器”面板中,此设置标记为“断开力”。
“可断开”处于启用状态时,如果扭曲力的数量超过该值,将断开约束。要使约束更难破坏,请增加该值。
注意在“多对象编辑器”面板中,此设置标记为“断开扭矩”。
无投影不执行投影。
线性仅投影线性距离。设置“距离”值。
使用此选项可以比使用“线性和角度”更快地进行模拟。
线性和角度同时执行线性投影和角度投影。设置“距离”和“角度”值。
“线性和角度”选项模拟速度较慢,但更精确。
为了投影生效要超过的约束冲突的最小距离。低于此距离的错误不会使用投影。将该值设置过小会导致将不必要的振动带入模拟中。
必须超过约束冲突的最小角度(以度为单位),投影才能生效。低于该角度的错误将不会使用投影。
选择约束所属的碎布玩偶。
移动到父对象的轴
切换父/子对象
子对象
移动到子对象的轴
“行为”组
约束行为
约束限制
图标大小
“平移限制”卷展栏
使用这些设置可以指定受约束子对象的线性运动的允许范围。
注意仅当将至少一个轴设置为“受限”时,数值设置才可用。
X/Y/Z
限制半径
反弹
Spring
阻尼
“摆动和扭曲限制”卷展栏
使用这些设置可以指定受约束子对象的角运动的允许范围。
注意仅当选中“受限”选项时,数值设置才可用。
“摆动 Y”和“摆动 Z”组
“摆动 Y”和“摆动 Z”分别表示围绕约束的局部 Y 轴和 Z 轴的旋转。为每个轴选择下列选项之一:
角度限制
反弹
Spring
阻尼
“扭曲”组
扭曲是指围绕约束的局部 X 轴旋转。
限制
反弹
Spring
阻尼
“弹簧”卷展栏
约束限制(请参见上文)的“反弹”和“弹簧”设置控制着约束越过限制边的行为,而同时始终会应用“弹簧”卷展栏上的设置。这些设置与在现实世界中称为“弹簧”的设置更为相似。
“弹到基准位置”组
弹性
阻尼
“弹到基准摆动”组
类似于“弹到基准位置”,但将对象拉回到其围绕局部 Y 轴和 Z 轴的初始旋转偏移,而不是它们的位置偏移。
“弹到基准扭曲”组
类似于“弹到基准摆动”,但将对象拉回到其围绕局部 X 轴的初始旋转偏移。
“高级”卷展栏
父/子刚体碰撞
“可断开约束”组
可断开
最大力
最大扭矩
“投影”组
投影类型
父对象和子对象违反约束的限制时,投影通过将它们强制到限制来解决此问题。
关节投影是针对“钝器”的内容。它只是移动一个角色,不考虑可能干预的碰撞。这可能导致碰撞几何体的穿透,因此建议您避免使用关节投影,除非有涉及关节冲突的实际问题,然后明智地使用它。
选择投影方法并设置相应的值:
距离
角度
“相对节点”卷展栏
仅当约束成为碎布玩偶对象的一部分时,此卷展栏才可用。
选择碎布玩偶