2 - 应用 AnimDynamics

现在我们的角色已经设置了 动画蓝图 并有了我们希望动态地产生动画的骨骼,而要产生动态动画,我们可以在 动画蓝图动画图 中使用 AnimDynamics 节点来实现。

在我们的示例中,角色的脖子上挂着一个大炉子,我们希望它根据角色的运动产生动画。如果您使用自己的角色,可以按下面的步骤操作,指定您要用 AnimDynamics 驱动的骨骼,并根据需要调整设置。

步骤

  1. 内容浏览器 中,打开角色的 动画蓝图 (GruntAnimBP)。

    1_OpenAnimBP.png

  2. 单击 我的蓝图(MyBlueprint,再单击 动画图(AnimGraph)以打开动画图。

    2_AnimGraph.png

  3. 在图中 右键单击,搜索并添加 AnimDynamics 节点。

    3_AddNode.png

    AnimDynamics 节点有一个 外力(External Force)值,它是应用于模拟中所有物体的附加力(这个力不是必需的,不过可以考虑)。它还有一个作为参考姿势数据的 组件姿势(Component Pose),以及一个 阿尔法(Alpha)值(应用骨骼控件的力度,0 表示无力,1 表示全力)。

  4. 复制(Copy)粘贴(Paste)该节点,然后按下图所示连接节点。

    4_ConnectNodes.png

    局部到组件(Local to Component)组件到局部(Component to Local)将在连接姿势引脚时自动创建。

    我们在示例中使用了两个 AnimDynamics 节点(一个用于影响背带,另一个用于影响炉子)。

  5. 选择序列中的第一个 AnimDynamics 节点,然后在 细节(Details)面板中指定下图所示的设置。

    5_Furnance1.png

    预览(Preview)部分的功能就是展现效果,可帮助在视口中显示当前对运动应用的限制。如果您使用 平面限制 并且未启用 CoM(质心),还可以查看碰撞球体(它在本示例讨论的范畴之外,不过您可以试验此设置)。

    我们设置的最后一项是 约束骨骼(Bound Bone),也就是我们要影响的骨骼,我们将它设置为角色的 furnace 骨骼(此骨骼影响背带)。

  6. 在仍然选中节点的情况下,按下图所示设置 设置(Setup)约束(Constraint)部分。

    6_Furnance1.png

    设置(Setup)约束(Constraint)部分中您可以定义 AnimDynamics 驱动的骨骼的运动和运动范围。框范围(Box Extent)提供惯性,局部关节偏移(Local Joint Offset)定义支点,角度限制(Angular Limits)提供运动的旋转范围(启用相关预览呈现选项就可以看到)。

    请参见骨骼控件的 AnimDynamics 部分了解更多关于设置和约束设置的信息。

  7. 单击 编译(Compile),注意背带对象如何向一侧倾斜。

    6_Furnance1b.png

    上图中的绿色锥形表明 Y 轴的角度限制很大。让我们来减小这个范围。

  8. 在仍然选中节点的情况下,在 约束(Constraints)部分中,按下图所示调整 角度限制最小/最大值

    6_Furnance1c.png

    这一次在您 编译 后,背带向两侧倾斜的幅度就没有那么大了(即使您调整 速度(Speed)在空中?(IsInAir?)设置也是如此)。

    6_Furnanced.png

  9. 选择序列中的第二个 AnimDynamics 节点,并使用下列设置。

    单击查看大图。

    采用上面的设置后,我们将 约束骨骼(Bound Bone)更改为角色中的 Furnace_Pivot 骨骼,它影响炉子对象。我们还调整了 扭转轴(Twist Axis),使其在 Y 轴上扭转,从而提供前后而不是左右运动。角度限制设置为 -5050,作为运动范围。

  10. 编译(Compile)保存(Save),然后在编辑器中运行。

最终结果

现在您应该可以看到示例角色的炉子根据我们的约束设置随着对象的移动而弹跳。

您可以自由地试验 设置(Setup)部分中的 框范围(Box Extent)局部关节偏移(Local Joint Offset)值,以及 约束(Constraints)部分中的 线性(Linear)角度限制(Angular Limits)值,看看这会如何改变受 AnimDynamics 影响的骨骼的运动。