diff --git a/02-Note/DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md b/02-Note/DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md index 9d5b016..f6e7b60 100644 --- a/02-Note/DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md +++ b/02-Note/DAWA/AI偶像陪伴项目/AI偶像陪伴项目笔记.md @@ -1,5 +1,67 @@ +# 各个服务负责人 +- TTS(文字=>音频) + - 张守高 +- 动作 (文字=>动作) + - 张渤林 + - 孙佳俊 +- 口型(音频=>表情数据) + - 张渤林 + - 常清 + # 存在问题 -1. 文字、声音、表情与动作的关联性。(主要是声音、表情与动作) +1. 目前是否以文件的方式实现。 +2. 文字、声音、表情与动作的关联性。(主要是声音、表情与动作) +3. 生成资产数据存在顺序依赖问题 + 1. 文字 => 声音 => 表情(口型) + 2. 文字 => 动作 + +# 设计思路 +1. 服务器发送的数据都使用一个基于玩家发送对话生成的UUID作为时间戳。 +2. 数据采用Stream式发送。 + +参考RTMP +- RTMP协议 01 入门:https://www.jianshu.com/p/715f37b1202f +- RTMP协议 02 视频Chunk和音频Chunk到底长啥样?:https://www.jianshu.com/p/cc813ba41caa +- RTMP协议 03 RTMP设计思想:https://www.jianshu.com/p/9459606c2025 +- RTMP协议 04 RTMP播放基本流程:https://www.jianshu.com/p/4577a61af0c7 +- RTMP协议 05 时间戳:https://www.jianshu.com/p/119075482a54 + +## RTMP +### Message & Chunk +RTMP中一个重要的概念就是消息。 +![600](https://upload-images.jianshu.io/upload_images/1720840-a4e1d3c0d08d671e.png?imageMogr2/auto-orient/strip|imageView2/2/w/870/format/webp) + +![600](https://upload-images.jianshu.io/upload_images/1720840-f291fa10767d860b.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp) + +![800](https://upload-images.jianshu.io/upload_images/1720840-76439153b7b7aec6.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp) +**网络中实际发送的内容**。 + +![600](https://upload-images.jianshu.io/upload_images/1720840-9dcadc0699c290c0.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp) + +Chunk Format + + +Message被切割成一个或多个Chunk,然后在网络上进行发送。 +当发送时,一个chunk发送完毕后才可以发送下一个chunk。 + +![600](https://upload-images.jianshu.io/upload_images/1720840-a476d0c147ffa144.png?imageMogr2/auto-orient/strip|imageView2/2/w/897/format/webp) + +Message被拆分成一个或多个Chunk,然后在网络上发送 + +拆分的时候,**默认的Chunk Size是128字节**,以Message大小为300字节举例,进行拆分。 + +```undefined +300 = 128 + 128 + 44 +``` + +![600](https://upload-images.jianshu.io/upload_images/1720840-5f7e632acaf568ab.png?imageMogr2/auto-orient/strip|imageView2/2/w/955/format/webp) + + + +作者:FlyingPenguin +链接:https://www.jianshu.com/p/715f37b1202f +来源:简书 +著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 # 声音 ## Runtime Import Sound diff --git a/03-UnrealEngine/卡通渲染相关资料/VRM4U/VRM4U 功能分析与功能列表翻译.md b/03-UnrealEngine/卡通渲染相关资料/VRM4U/VRM4U 功能分析与功能列表翻译.md index b4f0826..32eaf2d 100644 --- a/03-UnrealEngine/卡通渲染相关资料/VRM4U/VRM4U 功能分析与功能列表翻译.md +++ b/03-UnrealEngine/卡通渲染相关资料/VRM4U/VRM4U 功能分析与功能列表翻译.md @@ -49,8 +49,8 @@ UVrmImportUI用于存储用户设置的导入选项数据。ULoaderBPFunctionLib 导入流程为: 1. 在初始化UVrmImportUI(导入选项对象)后,会调用ULoaderBPFunctionLibrary::GetVRMMeta(),通过Assimp读取VRM文件的Meta数据(缩略图与版权信息)来填充UVrmImportUI。对于PMX格式会有额外的设置。(模型缩放1=>0.1、不合并材质、不合并图元、强制材质双面显示) 2. 取得父窗口,之后创建并添加自定义的SWindow2包裹SVrmOptionWindow来进行导入参数显示,会在用户选择好数据后,进行之后的步骤。 -3. 创建TAssetPtr、TArray< TAssetPtr >、TAssetPtr对象。 -4. 取得默认加载设置对象UVrmRuntimeSettings,之后会依次尝试载入VrmObjectListBP、VrmAssetListObjectBP、UVrmAssetListObject来初始化上一步说的TAssetPtr。 +3. 创建`TAssetPtr`、`TArray< TAssetPtr >`、`TAssetPtr`对象。 +4. 取得默认加载设置对象UVrmRuntimeSettings,之后会依次尝试载入VrmObjectListBP、VrmAssetListObjectBP、UVrmAssetListObject来初始化上一步说的`TAssetPtr`。 5. 创建static VRMConverter::Options并使用之前的用户修改过的设置选项进行初始化。 6. 使用上一步取得选项对象,并调用ULoaderBPFunctionLibrary::LoadVRMFileLocal()来导入文件。导入的存放在UVrmAssetListObject mret中。 7. 返回mret->GetOuter();