vault backup: 2023-11-08 18:16:49

This commit is contained in:
BlueRose 2023-11-08 18:16:50 +08:00
parent 7641b9750f
commit df1082fbf3
4 changed files with 24 additions and 5 deletions

View File

@ -1,6 +1,8 @@
# 动画方案 # 动画方案
预制开始/等待动画 -> VMC推流动画 -> 预制结束/等待动画 预制开始/等待动画 -> VMC推流动画 -> 预制结束/等待动画
## VMC推流 ## VMC推流
[[AnimNode & VMC笔记]]
## 迭代动画状态机方案 ## 迭代动画状态机方案
1. 由ChatGPT模型AI使用之前录制动画素材拼凑出N组排列组合。 1. 由ChatGPT模型AI使用之前录制动画素材拼凑出N组排列组合。
@ -207,7 +209,7 @@ https://docs.unrealengine.com/5.1/en-US/remote-control-for-unreal-engine/
- FAnimNode_ModifyVMC4UEBones - FAnimNode_ModifyVMC4UEBones
- FAnimNode_ModifyVMC4UEMorph - FAnimNode_ModifyVMC4UEMorph
![[AnimNode]] ![[AnimNode & VMC笔记]]
# VMC APP代码参考 # VMC APP代码参考
- [VirtualMotionCaptureProtocol](https://github.com/sh-akira/VirtualMotionCaptureProtocol)提供了最基础的实现。 - [VirtualMotionCaptureProtocol](https://github.com/sh-akira/VirtualMotionCaptureProtocol)提供了最基础的实现。

View File

@ -15,9 +15,18 @@
1. 文字 => 声音 => 表情(口型) 1. 文字 => 声音 => 表情(口型)
2. 文字 => 动作 2. 文字 => 动作
# 设计思路 # 推流设计思路
1. 服务器发送的数据都使用一个基于玩家发送对话生成的UUID作为时间戳。 1. 服务器发送的数据都使用一个基于玩家发送对话生成的UUID作为时间戳或许还需要一个**用户ID**)。
2. 数据采用Stream式发送。 2. 数据采用Stream式发送。动作与口型使用VMC来传输音频使用RTMP协议来传输。其中推流模式分为2种实现
1. Stream式实时接受所有数据。
2. Stream式缓存预读。
3. 架构
1. 根据上面说得2种模式在服务端控制时间戳的重置**数据截断,并且发送给客户端进行截断与时间轴统一操作**)。
1. Puerts的Nodejs负责接收数据以及管理状态机来管理接受的推流数据以及是否播放。**相关核心函数写在C++中**
2. AIVirtualIdolServer端接受到动作数据之后发送给AIVirtualIdol。
3. RTMP的音频推流AI端需要部署RTMP推流器AIVirtualIdolServer部署RTMP ServerAIVirtualIdol接受Server数据后播放。
UE中的RTMP实现
参考RTMP 参考RTMP
- RTMP协议 01 入门:https://www.jianshu.com/p/715f37b1202f - RTMP协议 01 入门:https://www.jianshu.com/p/715f37b1202f
@ -63,6 +72,14 @@ Message被拆分成一个或多个Chunk然后在网络上发送
来源:简书 来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
# 开发计划
1. C++实现RecivedDataManagerComponent管理音频、口型&动作数据、文字。
2. Puerts实现数据接收逻辑。
3. 实现声音播放逻辑。
4. 实现口型&动作动画节点。
5. 实现动画状态机结构初版。
# 声音 # 声音
## Runtime Import Sound ## Runtime Import Sound
使用`RuntimeAudioImporter`插件里面的解码使用了第三方库https://github.com/mackron/dr_libs。导入Sound使用了`UImportedSoundWave::PopulateAudioDataFromDecodedInfo()` 使用`RuntimeAudioImporter`插件里面的解码使用了第三方库https://github.com/mackron/dr_libs。导入Sound使用了`UImportedSoundWave::PopulateAudioDataFromDecodedInfo()`