123 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 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
 |