BlueRoseNote/02-Note/DAWA/AI偶像陪伴项目/AI虚拟偶像陪伴 & AI虚拟直播间 开发计划与阶段目标.md

123 lines
5.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI虚拟直播间需求&任务整理
## 实现目标&内容&工期
>拿给EOE老板看的Demo版本
1. 控制AI行为以及数据交互的导播台应用Electron + Server
1. 实现目标
1. =>AI服务器
1. 能够发送文字、语音数据以及其他指令到AI服务器。
2. 能够接收文字、音频、CSV、FBX数据。
2. =>渲染机器
1. 能够转发音频、CSV、FBX数据到渲染机中。
2. 实现内容基础Electron用户界面以及对应的Server第一版放在一起后续分离工期 2周左右。
1. 转发数据逻辑
2. 用户界面
3. 未来TODO
1. 自定VMC协议用来传输音频等其他数据
2. 渲染机UE插件
1. 导播台应用=>
1. 制作角色蓝图、动画蓝图以及状态机可以播放音频、CSV、FBX。
2. 接收导播台AI服务器的控制指令
2. 实现内容:编写插件实现对应的数据接收节点。
- 闲时模式
- 循环动画+随机动画
- 语音模式(说话与唱歌)
- 说话
- 表情、口型、声音、身体动作Gesture
- 唱歌N套预先录制
- 表情、口型、声音、身体动作Gesture
  - 指令模式
- 文字输入
- 跳舞
- 动作
- AI数据混合
需要的资产:
1. N套预制唱歌资产
2. 闲时模式的相关资产
## 状态机设计
1. 相关数据都存储在角色类AAIVirtualIdolCharacter中。
1. Idol状态相关控制数据。
2. 实时 - 表情指令的预制渐入渐出曲线以及表情文件。
2. EOE歌曲可以制作专门的UDataAsset以方便播放。
### 状态
- 可切换状态待开发功能后续的AI偶像陪伴项目会需要。
- 不可切状态必须等到当前状态执行完才能执行其他Action并且执行完后会回到Idol状态
- 播放状态(预制资产)。角色开始唱歌&跳舞,可以选择只跳舞。
- 聊天状态AI实时生成。角色做出语音、动作、表情&口型。
### 指令
- 实时指令:用于即使切换角色面部表情&口型或者播放一些场景效果。一般不会改变与打断当前状态。
- [ ] 表情系列指令(预制表情)
- [ ] 微笑
- [ ] 皱眉
- 强制指令:用于导播强制中断有问题的表演。
- [x] 强制进入Idle状态。
- 状态切换指令待开发功能后续的AI偶像陪伴项目会需要。用于定制当前状态完成后执行的下一个状态可以打断当前状态并开始执行下一个状态。
## 资产制作
### 歌曲
1. 动捕Motion&Facial FBX
2. 歌曲音频
# AI虚拟偶像陪伴
## 阶段技术需求 & 实现目标
### 第零阶段快速简历可供AI迭代的基础程序
1. Express Http服务器。
1. 提供静态文件下载服务。
2. 建立一个获取所有Uasset文件的url。
2. UE客户端
1. 动画蓝图中建立多个子AnimGraph使用动态方式挂载。
### 第一阶段(建立高可用、迭代性的基础架构)
需求功能(优先&难易度排序):
1. 资产 & 逻辑脚本热更新逻辑 => Puerts热更新逻辑。
2. 客户端发送文字信息给服务端。=> 构建一个Http聊天服务器。
3. 服务端控制虚拟角色行为 => ~~RPC事件同步~~ Http服务器WebSocket连接Puerts间接控制方案。**后续可能需要改成帧同步方案**。
4. 客户端在动画蓝图中实时混合**新下载**的**动画资产**。
5. 客户端在动画蓝图中实时混合**实时推流**的**动画数据**,以及播放**AI生成语音**。
#### 技术细节
- 客户端:
- 使用Puerts控制逻辑。
- 使用Puerts热更新逻辑 & 资产。
- 使用下载Pak重启后批量读取方案。
- 使用ModuleGameFeature框架进行网络缓存的方案。堡垒之夜目前使用
- 使用Puerts宿主环境Nodejs构建Http服务以此与服务端通信。优点是不会卡住游戏线程
- IOS得进行测试是否可以使用这个方案。
- * 实现 **动画数据**推流功能。
- 服务端:客户端同步采用事件同步 + 缓存动画数据的方式实现
- Demo期间使用Nodejs进行打底。采用Nodejs + Express搭建后台管理页面采用VUE3。
- 序列化使用 Protobuf
- RPC协议gRPC ?
- Http聊天服务器。
- 账号权限判断。
- Pak文件 / ModuleGameFeature缓存方案所用的文件服务器。
- 文件上传功能(语音数据)。
- * 实现 **动画数据**推流功能。
使用其他框架?
- https://github.com/node-pinus/pinus
#### 现阶段问题:
我需要知道:
1. 玩家发送文字信息后,虚拟角色是否会发出语音?
2. AI如何对虚拟角色行为树进行迭代仅仅是迭代行为树中的某一个行为么
3. 如何针对某一个演员的指定行为进行迭代?录制一定的演员表演动作动画数据进行迭代?
### 第二阶段使用借助AI配合UE动画系统迭代动画效果
需求功能(优先&难易度排序):
1. 构建一个可以不断热更、优化AI系统迭代动画资产的动画框架。
1. MotionMarching
2. Motion匹配。
2. 游戏性提升。
# 其他资料
- 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