BlueRoseNote/03-UnrealEngine/Animation/动画蓝图修型相关.md

5.3 KiB
Raw Permalink Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
动画蓝图修型相关 2023-01-12 17:03:24

DAWA数字人

主资产(全裸身体模型)使用dawa_Skeleton_AnimBlueprint动画蓝图后处理蓝图用于在编辑器中预览大部分曲线用于控制材质效果EPIC的数字人技术其他衣服使用CopyPose将主资产的动画结果拷贝到模型的骨骼上。

PS.

  1. 调试时需要将后处理动画蓝图清除。
  2. 动画蓝图的tick部分那么多节点完全可以使用c++以提高性能。

流程

  1. 表情使用苹果ARKit驱动表情。此外LiveLink Face 也可以用于驱动一些曲线来控制头部旋转但需要使用EvaluateLiveLinkFrame节点。本项目没有使用。
  2. AnimLayer biaoqing主要用于计算与更新曲线数值来实现一些材质/(Morph Target/Blend Shape)修型效果。该项目的动画资产并没有设置曲线值,所以这个层大部分逻辑都在空跑。
  3. Kawaii节点用于制作乳摇。
  4. SpringController 系列节点应该是没用作用的。
  5. AnimLayer xiuxing一堆PoseDriver节点与2个上臂骨骼偏移。主要是通过PoseDriver进行修型。
  6. AnimLayer bonedriver使用骨骼的一些数值对骨骼数值进行修改。
  7. AnimLayer Shoes根据高跟鞋的形状调整脚部骨骼形变。该项目对脚部骨骼调整了旋转。

Pose Driver

UE使用Pose Driver动画节点来实现修型,主要是通过几种类型的数据来驱动Pose TargetsMorph Target/Blend Shape或者Curves。其主要参数是

  • 源骨骼Source Bone :由哪个骨骼进行驱动?
  • 驱动源Drive Source:根据骨骼的哪个数据进行数据插值?有Rotation/Location
  • 仅驱动骨骼Only Drive BonesPose Driver节点仅修改阵列中指定的骨骼Source Bone对应的修型Twist骨骼
    1. 相当于过滤器相关的形变数据K在动画中位于PoseAsset。
  • 姿势目标Pose Targets指定的用于驱动的Pose集。
    1. 着重需要设置好每个Pose的立面角。注意避免万向锁的产生。
    2. 每个立面角最好保证有较小的重叠,以保证插值的正确性。
  • 驱动输出Drive Output:选择驱动输出的是Curves/Poses
  • RBFParams:插值参数。

小灰人的修型方案

主要分为Arm_Left/RightLeg_Left/Right。修型的方案基本查看骨骼与MorphTarget的名字就可以看出来。

  • Arm
    • Clavicle
      • clavicle_l/r_fwd_30
      • clavicle_l/r_down_20
      • clavicle_l/r_back_30
      • clavicle_l/r_up_40
    • Upperarm
      • upperarm_l/r_back_45
      • upperarm_l/r_out_55
      • upperarm_l/r_out110_twist_in_70
      • lowerarm_l/r_in_35
      • upperarm_l/r_out_85
      • upperarm_l/r_fwd_110
      • upperarm_l/r_in_10
      • upperarm_l/r_out110_twist_out_70
      • upperarm_l/r_out_twist_a
      • upperarm_l/r_fwd_15
      • upperarm_l/r_out_15
      • upperarm_l/r_back_10
      • upperarm_l/r_out110
      • upperarm_l/r_fwd_twist_in_a
      • upperarm_l/r_fwd_90
    • Lowerarm
      • lowerarm_l/r_in_110
      • lowerarm_l/r_out_35
      • lowerarm_l/r_in_50
      • lowerarm_l/r_in_75
      • lowerarm_l/r_out_10
      • lowerarm_l/r_in_90
      • lowerarm_l/r_in_10
    • Hand
      • hand_l/r_down_90
      • hand_l/r_up_20
      • hand_l/r_up_90
  • Leg
    • Calf
      • calf_l/r_back_50
      • calf_l/r_back_120
      • calf_l/r_back_90
      • calf_l/r_back_150
    • Thigh
      • thigh_l/r_bck_10
      • thigh_l/r_fwd_10
      • thigh_l/r_in_45_out_90
      • thigh_l/r_fwd_90
      • thigh_l/r_bck_90
      • thigh_l/r_bck_50
      • thigh_l/r_out_110
      • thigh_l/r_out_10
      • thigh_l/r_fwd_45
      • thigh_l/r_in_50
      • thigh_l/r_fwd_110
      • thigh_l/r_out_55
      • thigh_l/r_out_85
    • Foot
      • foot_l/r_down_60
      • foot_l/r_up_35

其他

Maya中的类似操作

在Maya中通过Pose Editor可以通过指定Pose+Morph实现动捕修型。

使用Pose曲线驱动的程序动画

UE曲线驱动的动画https://docs.unrealengine.com/4.27/zh-CN/AnimatingObjects/SkeletalMeshAnimation/AnimHowTo/CurveDrivenAnimation/

  1. 通过AnimSequence资产创建PoseAsset。
  2. 使用PoseAsset->CreateAsset->CreateAnimation->ReferencePose创建一个只有参考Pose的空AnimSequence资产。
  3. 通过添加Variables Curve对指定的Pose添加曲线来制作曲线驱动动画。

厄风女神Echo

角色蓝图没什么东西主要的逻辑位于Echo_AnimBP

  • Echo_AnimLayerInterface被Echo_AnimBP引用。但里面没有东西。
  • Echo_LiveLink_AnimBP演示基础的LinkLive用法。

后处理动画蓝图使用了Echo_PostProcess_AnimBP。

Echo_AnimBP

简化简洁的AdvancedLocomotionV4逻辑。动画蓝图层级为

  • Locomotion
  • MainState
  • FullyBodyLayer(Echo_AnimLayerInterface)
  • AnimMontageSlot
  • Inertialization过滤曲线
  • ControlRig

Echo_PostProcess_AnimBP

  1. 将C Biped开头的修型曲线归零。
  2. 使用PoseDriver进行修型。
    1. neck_02
    2. upperarm_l
    3. lowerarm_l
    4. calf_l
    5. hand_l
    6. upperarm_r
    7. lowerarm_r
    8. calf_r
    9. hand_r

表情

UE5.3新添加的功能 PoseDriverConnect

主要的功能是通过PoseDriver来驱动其他次级PoseDriver来此来得到更加好的修形效果。