Language:
Page Info
Skill Level:
Engine Version:
Share

结合模拟父项使用运动学形体

物理资源工具 (PhAT) 提供了多种对物理形体进行模拟的方式,运动学物理形体结合模拟父项也是其中之一。这使用户能够对由动画数据驱动的子形体进行定义,而这些形体的父项则由物理模拟数据所驱动。这种技术十分实用于这类情况:设置角色吊在边缘或沿边缘攀行,对滚落的岩石或其他废墟作出反应,生成基于物理的反应动作。

在此指南中,我们使用带模拟父项的运动学形体生成角色悬吊在边缘的效果,而身体的其他部分则由物理进行模拟。

EndResultImage.png

步骤

在此指南中,我们使用的是启用了 Starter ContentBlueprint Third Person 模板 项目。

  1. 在项目的 Content/Mannequin/Character/Mesh 文件夹中,打开 SK_Mannequin_PhysicsAsset

    KinematicHowTo_01.png

  2. Hierarchy 窗口中,点击 All Bones 下拉菜单并将其改为 Bones With Bodies

    KinematicHowTo_02.png

    这将过滤层级仅显示形体的骨骼,易于选择需要进行操作的骨骼。

  3. 在层级列表中,长按 Ctrl 并选择 hand_lhand_r 骨骼,然后在 Details 面板中将 Physics Type 改为 Kinematic

    KinematicHowTo_03.png

    将这些骨骼设为 Kinematic 后,它们将不再模拟物理,而是跟随动画数据。

    另一种方法是 右键点击 层级列表中的骨骼,并在滚出菜单中设置其 Physics Type

    KinematicHowTo_04.png

    此选项可用于设置当前骨骼下子形体的 Physics Type 属性。

  4. 点击视口中的空白位置取消选择所有骨骼,然后在 Details 面板中将 Physics Update Mode 改为 Component Transform is Kinematic

    KinematicHowTo_05.png

    此选项决定根形体的模拟是更新组件变形,或是动态学。

  5. 点击工具栏中的 Simulate 按钮。

    KinematicHowTo_06.png

    视口中的角色将呈蜷曲状,体现出用手臂悬吊的动作。

    KinematicHowTo_07.png

  6. 点击工具栏中的 Animation 选项图标,然后选择 ThirdPersonJump_Loop 动画。

    KinematicHowTo_08.png

    角色双手将跟随 ThirdPersonJump_Loop 运动中包含的动画数据来移动(因为它们已被设为运动学)。

    KinematicHowTo_09.png

  7. 在主编辑器窗口中将 SK_Mannequin_PhysicsAsset 拖入关卡,然后在 Details 面板中将 Physics Transform Update Mode 设为 Component Transform is Kinematic

    KinematicHowTo_10.png

  8. 选择 SkeletalMeshComponent,然后将 Animation Mode 改为 Use Animation AssetAnim to Play 改为 ThirdPersonJump_Loop

    KinematicHowTo_11.png

  9. 在工具栏中点击 Play 按钮即可在编辑器中进行游戏。

最终结果

以下视频中可以看到,我们在墙边缘放置了一个角色,操纵另一个角色撞向悬吊的角色时它会对物理形成响应,而双手则较为固定。

上方视频中使用的动画效果并不理想,以下视频中我们将相同的概念应用到了角色悬吊和攀行墙沿的动画上。

手臂和头部设为 Kinematic(金色框表示),而其他身体部位仍为模拟。

ExampleSetup.png