vault backup: 2023-11-06 17:34:19
This commit is contained in:
parent
5537b0af2e
commit
827f38819c
40
.obsidian/plugins/various-complements/data.json
vendored
40
.obsidian/plugins/various-complements/data.json
vendored
@ -47,22 +47,6 @@
|
|||||||
},
|
},
|
||||||
"showLogAboutPerformanceInConsole": false,
|
"showLogAboutPerformanceInConsole": false,
|
||||||
"selectionHistoryTree": {
|
"selectionHistoryTree": {
|
||||||
"ShaderLab笔记": {
|
|
||||||
"ShaderLab笔记": {
|
|
||||||
"internalLink": {
|
|
||||||
"count": 1,
|
|
||||||
"lastUpdated": 1695796563725
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"github": {
|
|
||||||
"github": {
|
|
||||||
"currentFile": {
|
|
||||||
"count": 1,
|
|
||||||
"lastUpdated": 1696078782607
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"以垂直关系依次旋转每个轴。": {
|
"以垂直关系依次旋转每个轴。": {
|
||||||
"以垂直关系依次旋转每个轴。": {
|
"以垂直关系依次旋转每个轴。": {
|
||||||
"currentFile": {
|
"currentFile": {
|
||||||
@ -70,6 +54,30 @@
|
|||||||
"lastUpdated": 1698213001403
|
"lastUpdated": 1698213001403
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"设置Skeleton与PreviewMesh资产。": {
|
||||||
|
"设置Skeleton与PreviewMesh资产。": {
|
||||||
|
"currentFile": {
|
||||||
|
"count": 1,
|
||||||
|
"lastUpdated": 1699256932874
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"。里面初始化了SourceSkeleton、TargetSkeleton、根骨骼重定向器、UIKRigProcessor、": {
|
||||||
|
"。里面初始化了SourceSkeleton、TargetSkeleton、根骨骼重定向器、UIKRigProcessor、": {
|
||||||
|
"currentFile": {
|
||||||
|
"count": 1,
|
||||||
|
"lastUpdated": 1699258408430
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TargetSkeleton、根骨骼重定向器、UIKRigProcessor、": {
|
||||||
|
"TargetSkeleton、根骨骼重定向器、UIKRigProcessor、": {
|
||||||
|
"currentFile": {
|
||||||
|
"count": 2,
|
||||||
|
"lastUpdated": 1699258527676
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,12 +6,36 @@ tags:
|
|||||||
rating: ⭐
|
rating: ⭐
|
||||||
---
|
---
|
||||||
# 前言
|
# 前言
|
||||||
|
最近研究过了一下UE的重定向逻辑,所以写点笔记作为记录。(IK部分没有去看)
|
||||||
|
|
||||||
|
- FIKRetargetBatchOperation::RunRetarget():编辑器调用的重定向函数。主要是复制对应需要重定向资产并且进行重定向,之后通知UI。
|
||||||
|
- FIKRetargetBatchOperation::RetargetAssets():重定向资产逻辑。
|
||||||
|
- 复制所有曲线轨道(不含数值)。
|
||||||
|
- 设置Skeleton与PreviewMesh资产。
|
||||||
|
- 提前调用重定向资产的PostEditChange(),以避免编辑后钩子函数被调用,产生依赖顺序问题。
|
||||||
|
- ConvertAnimation()
|
||||||
|
- 替换动画蓝图并且编译。
|
||||||
# ConvertAnimation()
|
# ConvertAnimation()
|
||||||
主要逻辑位于`UAnimationEditorUtilityLibrary::ConvertAnimation()`或者`FIKRetargetBatchOperation::ConvertAnimation()`。核心重定向逻辑为`UIKRetargetProcessor::RunRetargeter()`。
|
一开始是一些初始化逻辑,主要的是调用UIKRetargetProcessor的Initialize()。里面初始化了
|
||||||
|
- SourceSkeleton & TargetSkeleton:用于重定向计算用的数据载体,存储了骨骼链、骨骼、当前重定向Pose等数据。
|
||||||
|
- RootRetargeter:根骨骼重定向器。
|
||||||
|
- ChainPairsIK、ChainPairsFK:用于FK与IK的骨骼链数据。
|
||||||
|
- UIKRigProcessor:IK重定向处理器。
|
||||||
|
- 所有FIKRigGoal
|
||||||
|
|
||||||
|
从FRetargetSkeleton& SourceSkeleton & FTargetSkeleton& TargetSkeleton获取对应参数来进行之后的动画资产重定向循环,循环逻辑如下:
|
||||||
|
- 获取动画帧数,并且重新构建骨骼动画数据轨道。
|
||||||
|
- 取得速度曲线。
|
||||||
|
- 之后对每一帧Pose进行重定向,主要是的逻辑是:
|
||||||
|
- 取得当前帧Pose,并将其转化WorldSpace。
|
||||||
|
- UIKRetargetProcessor Processor->RunRetargeter()
|
||||||
|
- 将重定向完的结果转化成LocalSpace,并且将每个骨骼的数据放入对应骨骼动画数据轨道。
|
||||||
|
- 调用IAnimationDataController的AddBoneTrack() & SetBoneTrackKeys()给资产设置上关键帧。
|
||||||
|
|
||||||
FRetargetSkeleton:
|
# RunRetargeter()
|
||||||
|
此为核心重定向逻辑,分为RunRootRetarget()、RunFKRetarget()、RunIKRetarget()、RunPoleVectorMatching()。
|
||||||
|
|
||||||
|
重定向数据会直接修改TargetSkeleton的Pose数据。Root与FK重定向执行完之后会调用UpdateGlobalTransformsBelowBone()更新后续骨骼的WorldSpace Transform。
|
||||||
|
|
||||||
## RunRootRetarget()
|
## RunRootRetarget()
|
||||||
FRootRetargeter::EncodePose():
|
FRootRetargeter::EncodePose():
|
||||||
@ -34,12 +58,3 @@ FChainEncoderFK::EncodePose():
|
|||||||
|
|
||||||
FChainDecoderFK::DecodePose():
|
FChainDecoderFK::DecodePose():
|
||||||
|
|
||||||
## RunIKRetarget()
|
|
||||||
|
|
||||||
## RunPoleVectorMatching()
|
|
||||||
|
|
||||||
|
|
||||||
# UIKRetargetProcessor
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user