六一的部落格


行百里者半九十




概览

  • 问题描述
  • FABRIK
  • 在动画蓝图中使用FABRIK

问题描述


调整游戏角色Camera组件位置, 使之拍摄游戏角色正面

BP_STUBaseCharacter

  1. 在SpringArm组件细节面板设置Camera组件的Socket Offset

    • 之前


    • SpringArm > Details > Camera > Socket Offset > X = 600 Y = 0


  2. 设置Camera组件变换属性

    • 之前


    • Camera > Details > Transform > Rotation > Yaw = 180


  3. 效果图



操控游戏角色运动时, 左手和枪管之间未固定, 二者会有错开的情况


在动画蓝图添加FABRIK, 将左手固定在枪管合适位置


FABRIK

文档


说明

Forward and Backward Reaching Inverse Kinematics


逆运动学

Inverse Kinematics

给出子骨骼的位置, 反求推导出其所在骨骼链上n级父骨骼位置, 从而确定整条骨骼链的方法


末端执行器

End Effector

位于机械臂末端、与外界环境进行物理交互的工具, 也称作臂端工具 End-of-Arm Tooling , 缩写为EOAT

FABRIK的设置, 就是给出骨骼链和末端执行器的描述, 计算骨骼链各关节变换


在动画蓝图中使用FABRIK

AnimGraph

末端执行器变换默认作为针脚



切换末端执行器变换在细节面板设置

  1. Details > End Effector > Effector Transform > 左键Pin, 取消Expose As Pin的勾选


  2. FABRIK


  3. Effector Transform



配置末端执行器

-
Effector Target 在动画蓝图绑定的骨骼树中选取目标
Effector Transform Space 与Target类型有关, 默认Component Space, 骨骼对应Bone Space
Effector Transform 相对于Target的变换

配置Solver

设置骨骼链

-
Tip Bone 机械臂末端骨骼
Root Bone 机械臂根骨骼

在动画蓝图添加FABRIK

ABP_BaseCharacter > AnimGraph

在动画蓝图添加FABRIK, 切换末端执行器变换在细节面板设置


确定骨骼链

  1. 在导航栏选择骨骼


  2. 左臂的起点为b_LeftArm, 终点为b_LeftWeapon


  3. 配置FABRIK > Solver

    -
    Tip Bone b_LeftWeapon
    Root Bone b_LeftArm



游戏角色移动时, 左手和右手都在武器上, 以右手为参照, 固定左手位置

  1. 设置末端执行器Target
  2. 设置相对Target的变换
-
Effector Target b_RightHand
Effector Transform Space Bone Space
Effector Transform X=-50 Y=-11 Z=4



将FABRIK加入到输出

  1. 将AO_BaseCharacter作为FABRIK的输入 Component Pose

    自动添加转换座标系的节点 LocalToComponent
  2. 将输出作为Slot的输入
    • 自动添加转换座标系的节点 ComponentToLocal
    • 播放死亡动画时, 左手不需要扶在枪管上



查看

操控游戏角色运动时, 左手固定在枪管合适位置


FABRIK



概览

  • 问题描述
  • FABRIK
  • 在动画蓝图中使用FABRIK

问题描述


调整游戏角色Camera组件位置, 使之拍摄游戏角色正面

BP_STUBaseCharacter

  1. 在SpringArm组件细节面板设置Camera组件的Socket Offset

    • 之前


    • SpringArm > Details > Camera > Socket Offset > X = 600 Y = 0


  2. 设置Camera组件变换属性

    • 之前


    • Camera > Details > Transform > Rotation > Yaw = 180


  3. 效果图



操控游戏角色运动时, 左手和枪管之间未固定, 二者会有错开的情况


在动画蓝图添加FABRIK, 将左手固定在枪管合适位置


FABRIK

文档


说明

Forward and Backward Reaching Inverse Kinematics


逆运动学

Inverse Kinematics

给出子骨骼的位置, 反求推导出其所在骨骼链上n级父骨骼位置, 从而确定整条骨骼链的方法


末端执行器

End Effector

位于机械臂末端、与外界环境进行物理交互的工具, 也称作臂端工具 End-of-Arm Tooling , 缩写为EOAT

FABRIK的设置, 就是给出骨骼链和末端执行器的描述, 计算骨骼链各关节变换


在动画蓝图中使用FABRIK

AnimGraph

末端执行器变换默认作为针脚



切换末端执行器变换在细节面板设置

  1. Details > End Effector > Effector Transform > 左键Pin, 取消Expose As Pin的勾选


  2. FABRIK


  3. Effector Transform



配置末端执行器

-
Effector Target 在动画蓝图绑定的骨骼树中选取目标
Effector Transform Space 与Target类型有关, 默认Component Space, 骨骼对应Bone Space
Effector Transform 相对于Target的变换

配置Solver

设置骨骼链

-
Tip Bone 机械臂末端骨骼
Root Bone 机械臂根骨骼

在动画蓝图添加FABRIK

ABP_BaseCharacter > AnimGraph

在动画蓝图添加FABRIK, 切换末端执行器变换在细节面板设置


确定骨骼链

  1. 在导航栏选择骨骼


  2. 左臂的起点为b_LeftArm, 终点为b_LeftWeapon


  3. 配置FABRIK > Solver

    -
    Tip Bone b_LeftWeapon
    Root Bone b_LeftArm



游戏角色移动时, 左手和右手都在武器上, 以右手为参照, 固定左手位置

  1. 设置末端执行器Target
  2. 设置相对Target的变换
-
Effector Target b_RightHand
Effector Transform Space Bone Space
Effector Transform X=-50 Y=-11 Z=4



将FABRIK加入到输出

  1. 将AO_BaseCharacter作为FABRIK的输入 Component Pose

    自动添加转换座标系的节点 LocalToComponent
  2. 将输出作为Slot的输入
    • 自动添加转换座标系的节点 ComponentToLocal
    • 播放死亡动画时, 左手不需要扶在枪管上



查看

操控游戏角色运动时, 左手固定在枪管合适位置