vault backup: 2023-08-09 15:29:13
This commit is contained in:
parent
656f24a986
commit
60bedd8df5
@ -62,9 +62,10 @@ Epic网站上也有一篇文章作为参考[[1]](https://zhuanlan.zhihu.com/p/61
|
|||||||
- EvaluateSkeletalControl_AnyThread:在其他线程计算骨骼结果。
|
- EvaluateSkeletalControl_AnyThread:在其他线程计算骨骼结果。
|
||||||
|
|
||||||
# VMC4UE
|
# VMC4UE
|
||||||
|
1. 支持多端口(多台捕捉机器)一起工作。
|
||||||
|
|
||||||
***存在问题***:
|
***存在问题***:
|
||||||
1. 只做了简单的BoneTransform与Morph适配。没有针对VMC协议的其他内容进行适配。
|
1. 只做了简单的BoneTransform与Morph适配。没有针对VMC协议的其他内容进行适配。
|
||||||
|
|
||||||
## AnimNode_ModifyVMC4UEBones
|
## AnimNode_ModifyVMC4UEBones
|
||||||
继承自FAnimNode_SkeletalControlBase。
|
继承自FAnimNode_SkeletalControlBase。
|
||||||
- Initialize_AnyThread:调用InitializeBoneReferences()
|
- Initialize_AnyThread:调用InitializeBoneReferences()
|
||||||
@ -93,10 +94,20 @@ Epic网站上也有一篇文章作为参考[[1]](https://zhuanlan.zhihu.com/p/61
|
|||||||
- `TArray<FTransform> InitialBones`:记录初始RefPose的骨骼形变,找不到骨骼的情况会使用。
|
- `TArray<FTransform> InitialBones`:记录初始RefPose的骨骼形变,找不到骨骼的情况会使用。
|
||||||
|
|
||||||
### VRMMaping的作用
|
### VRMMaping的作用
|
||||||
|
存储VRM角色骨骼映射表与BlendShape信息。
|
||||||
VMC软件只用于驱动VRM角色或者与VRM骨骼结构相同的角色,角色的骨骼数量、排序大概率不同,会使得Index不同。所以需要搞一个BoneName映射表,用来寻找驱动的骨骼。
|
VMC软件只用于驱动VRM角色或者与VRM骨骼结构相同的角色,角色的骨骼数量、排序大概率不同,会使得Index不同。所以需要搞一个BoneName映射表,用来寻找驱动的骨骼。
|
||||||
|
|
||||||
## GetStreamingSkeletalMeshTransform
|
## GetStreamingSkeletalMeshTransform
|
||||||
|
Create部分的逻辑主要是创建NewStreamingSkeletalMeshTransform并且绑定一个UUEOSCReceiver对象。由对接受到数据进行处理。
|
||||||
|
端口与NewStreamingSkeletalMeshTransform的Map存储在OSCManager中。
|
||||||
|
### OnReceivedVMC
|
||||||
|
根据VMC Address(其实是数据类型)进行对应判断:
|
||||||
|
- /VMC/Ext/Root/Pos
|
||||||
|
- /VMC/Ext/Bone/Pos
|
||||||
|
- /VMC/Ext/Blend/Val
|
||||||
|
- /VMC/Ext/Blend/Apply
|
||||||
|
|
||||||
|
按照VMC的协议格式将数据进行反序列化并且填充到UVMC4UEStreamingSkeletalMeshTransform中。
|
||||||
|
|
||||||
## FAnimNode_ModifyVMC4UEMorph
|
## FAnimNode_ModifyVMC4UEMorph
|
||||||
继承自FAnimNode_Base。大致逻辑与AnimNode_ModifyVMC4UEBones相似。
|
继承自FAnimNode_Base。大致逻辑与AnimNode_ModifyVMC4UEBones相似。
|
||||||
@ -105,4 +116,12 @@ VMC软件只用于驱动VRM角色或者与VRM骨骼结构相同的角色,角
|
|||||||
2. 调用UVMC4UEBlueprintFunctionLibrary::GetStreamingSkeletalMeshTransform()。
|
2. 调用UVMC4UEBlueprintFunctionLibrary::GetStreamingSkeletalMeshTransform()。
|
||||||
3. 从AnimInstanceProxy取得Skeleton。
|
3. 从AnimInstanceProxy取得Skeleton。
|
||||||
4. 相关有效性判断。
|
4. 相关有效性判断。
|
||||||
5.
|
5. Reset所有MorphStates的值为0。
|
||||||
|
6. 开启StreamingSkeletalMeshTransform的线程读写锁。
|
||||||
|
7. StreamingSkeletalMeshTransform->CurrentBlendShapes,获取所有BlendShape进行遍历。
|
||||||
|
1. 寻找名字匹配的BlendShape.Clips,不匹配则直接进入下一次循环。
|
||||||
|
2. 寻找名字匹配的BlendShape.Meshs,不匹配则直接进入下一次循环。
|
||||||
|
3. 修改对应MorphStates[MorphName]的数值。
|
||||||
|
8. 输出所有MorphState.Value。
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user