vault backup: 2024-11-19 17:11:20
This commit is contained in:
parent
e4bc1c7b02
commit
e41d30be45
@ -424,17 +424,39 @@ public:
|
||||
2. GetModelBones()
|
||||
1. 主要在FAnimNode_FullBody::Initialize_AnyThread()被调用。
|
||||
2. 填充`TArray<FBoneReference> BoneRefList;`,顺带初始化SampledFullBodyData。
|
||||
3. InitBoneRefIndex(),初始化BoneRefList中每个FBoneReference的BoneIndex(通过骨骼名称找到)
|
||||
3. InitBoneRefIndex(),初始化BoneRefList中每个FBoneReference的BoneIndex(通过骨骼名称找到),如果没有找到会提示对应的Log。
|
||||
4. FAnimNode_FullBody::Evaluate_AnyThread(),作用在[[#ApplyDataToPose()]]。
|
||||
3. GetMorphTargets()
|
||||
1. 主要在FAnimNode_FullBody::Initialize_AnyThread()被调用。
|
||||
|
||||
## ApplyDataToPose()
|
||||
### BoneTransform
|
||||
遍历BoneRefList(从UMotionUtils::GetModelBones()获得)
|
||||
1. 遍历BoneRefList(从UMotionUtils::GetModelBones()获得)
|
||||
2. 对BoneIndex有效的骨骼进行一些操作。
|
||||
1. 取得当前动画蓝图输出Pose的**骨骼Index**以及**采样后动捕数据的旋转值**。
|
||||
2. 如果骨骼名是Hips,就将当前Index设置给HipsIndex。
|
||||
3. 将旋转值应用到OutputPose中。
|
||||
4. 判断当前骨骼名是否为MoveableBones中的名称,将这些骨骼的Location设置到OutputPose中。
|
||||
|
||||
### MorphValues
|
||||
Apply Morph Values
|
||||
|
||||
将对应MorphTarget数据应用到对应的CurveChannel上。
|
||||
### RootMotion
|
||||
bUseHipsTranslation
|
||||
根据bUseHipsTranslation变量执行不同的逻辑:
|
||||
|
||||
#### MapTranslationToHips
|
||||
调用函数形参如下:
|
||||
```c++
|
||||
MapTranslationToHips(Output, EvaluatedFullBodyData, 0, HipsIndex);
|
||||
```
|
||||
|
||||
1. 获取Joints骨骼的Locaiton作为RootMotion数据
|
||||
2. 判断Joints骨骼是不是根骨骼,如果**是**则调整RootMotion数据轴向。
|
||||
3. 将Joints骨骼的Location归零。
|
||||
4. 如果Hips骨骼有效,则将RootMotion数据加到其Location上。
|
||||
|
||||
#### ExtractRootMotionInfo
|
||||
1. 获取Joints骨骼的Locaiton作为RootMotion数据。
|
||||
2. 判断Joints骨骼是不是根骨骼,如果**不是**则调整RootMotion数据轴向。(**轴向与MapTranslationToHips()不同**)
|
||||
3. 将Joints骨骼的Location归零。
|
||||
4. 将RootMotion设置给AnimInstance的RootMotionLocation。
|
||||
5. 如果Hips骨骼有效,进行一堆计算,最终将Rotation设置AnimInstance的RootMotionRotation。
|
Loading…
x
Reference in New Issue
Block a user