2023-06-29 11:55:02 +08:00
|
|
|
|
---
|
|
|
|
|
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
|
2023-12-07 18:18:33 +08:00
|
|
|
|
- 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,来此来得到更加好的修形效果。
|