--- title: 动画蓝图修型相关 date: 2023-01-12 17:03:24 excerpt: tags: rating: ⭐ --- ## 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 Targets**(Morph Target/Blend Shape)或者Curves。其主要参数是: - **源骨骼(Source Bone)** :由哪个骨骼进行驱动? - **驱动源(Drive Source)**:根据骨骼的哪个数据进行数据插值?有**Rotation/Location**。 - **仅驱动骨骼(Only Drive Bones)**:Pose Driver节点仅修改阵列中指定的骨骼(Source Bone对应的修型Twist骨骼)。 1. 相当于过滤器,相关的形变数据K在动画中,位于PoseAsset。 - **姿势目标(Pose Targets)**:指定的用于驱动的Pose集。 1. 着重需要设置好每个Pose的立面角。注意避免万向锁的产生。 2. 每个立面角最好保证有较小的重叠,以保证插值的正确性。 - **驱动输出(Drive Output)**:选择驱动输出的是**Curves/Poses**。 - **RBFParams**:插值参数。 ### 小灰人的修型方案 主要分为**Arm_Left/Right**与**Leg_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 ## 表情 - https://zhuanlan.zhihu.com/p/113396468 - https://arkit-face-blendshapes.com/ # UE5.3新添加的功能 PoseDriverConnect - https://www.unrealengine.com/marketplace/zh-CN/product/pose-driver-connect - https://www.unrealengine.com/zh-CN/blog/create-more-realistic-animation-in-less-time-with-pose-driver-connect 主要的功能是通过PoseDriver来驱动其他次级PoseDriver,来此来得到更加好的修形效果。