From df1082fbf393e2639d4931c8f4e4589b77b11144 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Wed, 8 Nov 2023 18:16:50 +0800 Subject: [PATCH] vault backup: 2023-11-08 18:16:49 --- .../AIVirtualIdel动画方案.md | 4 +++- .../DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md | 23 ++++++++++++++++--- .../AI虚拟偶像陪伴项目开发计划与阶段目标.md} | 2 +- .../{AnimNode.md => AnimNode & VMC笔记.md} | 0 4 files changed, 24 insertions(+), 5 deletions(-) rename 02-Note/DAWA/{AI => AI偶像陪伴项目}/AIVirtualIdel动画方案.md (99%) rename 02-Note/DAWA/{AI/AI虚拟偶像陪伴项目.md => AI偶像陪伴项目/AI虚拟偶像陪伴项目开发计划与阶段目标.md} (98%) rename 03-UnrealEngine/Gameplay/Animation/{AnimNode.md => AnimNode & VMC笔记.md} (100%) diff --git a/02-Note/DAWA/AI/AIVirtualIdel动画方案.md b/02-Note/DAWA/AI偶像陪伴项目/AIVirtualIdel动画方案.md similarity index 99% rename from 02-Note/DAWA/AI/AIVirtualIdel动画方案.md rename to 02-Note/DAWA/AI偶像陪伴项目/AIVirtualIdel动画方案.md index 45a4e0d..376169a 100644 --- a/02-Note/DAWA/AI/AIVirtualIdel动画方案.md +++ b/02-Note/DAWA/AI偶像陪伴项目/AIVirtualIdel动画方案.md @@ -1,6 +1,8 @@ # 动画方案 预制开始/等待动画 -> VMC推流动画 -> 预制结束/等待动画 ## VMC推流 +[[AnimNode & VMC笔记]] + ## 迭代动画状态机方案 1. 由ChatGPT模型AI使用之前录制动画素材拼凑出N组排列组合。 @@ -207,7 +209,7 @@ https://docs.unrealengine.com/5.1/en-US/remote-control-for-unreal-engine/ - FAnimNode_ModifyVMC4UEBones - FAnimNode_ModifyVMC4UEMorph -![[AnimNode]] +![[AnimNode & VMC笔记]] # VMC APP代码参考 - [VirtualMotionCaptureProtocol](https://github.com/sh-akira/VirtualMotionCaptureProtocol)提供了最基础的实现。 diff --git a/02-Note/DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md b/02-Note/DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md index f6e7b60..0f48d90 100644 --- a/02-Note/DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md +++ b/02-Note/DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md @@ -15,9 +15,18 @@ 1. 文字 => 声音 => 表情(口型) 2. 文字 => 动作 -# 设计思路 -1. 服务器发送的数据都使用一个基于玩家发送对话生成的UUID作为时间戳。 -2. 数据采用Stream式发送。 +# 推流设计思路 +1. 服务器发送的数据都使用一个基于玩家发送对话生成的UUID作为时间戳(或许还需要一个**用户ID**)。 +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 Server;AIVirtualIdol接受Server数据后播放。 + +UE中的RTMP实现: 参考RTMP - 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 使用`RuntimeAudioImporter`插件,里面的解码使用了第三方库https://github.com/mackron/dr_libs。导入Sound使用了`UImportedSoundWave::PopulateAudioDataFromDecodedInfo()` diff --git a/02-Note/DAWA/AI/AI虚拟偶像陪伴项目.md b/02-Note/DAWA/AI偶像陪伴项目/AI虚拟偶像陪伴项目开发计划与阶段目标.md similarity index 98% rename from 02-Note/DAWA/AI/AI虚拟偶像陪伴项目.md rename to 02-Note/DAWA/AI偶像陪伴项目/AI虚拟偶像陪伴项目开发计划与阶段目标.md index ea3cda5..b6c6d6c 100644 --- a/02-Note/DAWA/AI/AI虚拟偶像陪伴项目.md +++ b/02-Note/DAWA/AI偶像陪伴项目/AI虚拟偶像陪伴项目开发计划与阶段目标.md @@ -53,4 +53,4 @@ - Node-Pinus游戏服务器框架:https://github.com/node-pinus/pinus - 案例:https://github.com/node-pinus/pinus/tree/master/examples/simple-example - Pomelo的wiki:https://github.com/NetEase/pomelo/wiki/Home-in-Chinese -- Nodejs RPC:https://zhuanlan.zhihu.com/p/598460945 \ No newline at end of file +- Nodejs RPC:https://zhuanlan.zhihu.com/p/598460945 diff --git a/03-UnrealEngine/Gameplay/Animation/AnimNode.md b/03-UnrealEngine/Gameplay/Animation/AnimNode & VMC笔记.md similarity index 100% rename from 03-UnrealEngine/Gameplay/Animation/AnimNode.md rename to 03-UnrealEngine/Gameplay/Animation/AnimNode & VMC笔记.md