From 5192f2f805154de149a98d81162f6032594d8fc5 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Tue, 26 Nov 2024 13:11:01 +0800 Subject: [PATCH 1/4] vault backup: 2024-11-26 13:11:01 --- 02-Note/DAWA/ASoul/导播台笔记/Sequoia.md | 38 ++++++++++++++++++++++++ 07-Other/生活/每周需要做的事情.md | 5 ++++ 2 files changed, 43 insertions(+) create mode 100644 02-Note/DAWA/ASoul/导播台笔记/Sequoia.md create mode 100644 07-Other/生活/每周需要做的事情.md diff --git a/02-Note/DAWA/ASoul/导播台笔记/Sequoia.md b/02-Note/DAWA/ASoul/导播台笔记/Sequoia.md new file mode 100644 index 0000000..33f2cb3 --- /dev/null +++ b/02-Note/DAWA/ASoul/导播台笔记/Sequoia.md @@ -0,0 +1,38 @@ +# 前言 +默认存储数据路径:C:\LiveDirectorSaved\Sequoia +操作方式: +1. 4级中使用`Ctrl + Shift + D`,勾选Sequoia编辑器后显示。 +2. Ctrl + ? 剪切轨道。 + +# 相关类 +- TS:`LiveDirector\Script\Sequoia` + - TsSequoiaManagerActor + - OnPlayButtonClicked():Sequoia播放函数。主要逻辑是打开Sequoia的序列化数据,之后创建或取得播放器斌进行播放/停止。 +- c++:`LiveDirector\Source\Modules\Sequoia` + - SequoiaPlayer + +# 播放逻辑 +```c++ +TsSequoiaManagerActor@OnPlayButtonClicked: start play : 大聲鑽石 +[2024.11.26-04.21.03:648][613]Puerts: (0x00000BD7686682F0) SequoiaManager@ Composer: On start playing... +[2024.11.26-04.21.03:649][613]Puerts: (0x00000BD7686682F0) DirectorCamSequoiaHandle : Enter CamTarget Section: Idol.JiaRan +[2024.11.26-04.21.03:649][613]Puerts: (0x00000BD7686682F0) DirectorCamSequoiaHandle : play Cam Section: ZhuJiwei_Zheng16-24mm group:CC8F4D734664869EC8FE788E7550AC31 index:0 scrub:false +[2024.11.26-04.21.03:665][614]Puerts: (0x00000BD7686682F0) request PGM: WorkShop +``` + +# 其他 +## 添加自定义轨道 +往Sequoia添加一个自定义轨道,可以按照以下大体步骤进行开发 + +1. 大部分的拓展逻辑都写在SequoiaCustomBuilderTool.ts +2. 在SequoiaCustomBuilderTools.ts 的BindingType,TrackType,SectionType中添加组定义类型.在关系Map(BindingToTrackMap)中添加从属关系 +3. 在Sequoia代码文件夹下创建拓展文件夹,创建对应的TsBinding,TsTrack,TsSection等对应的UObject以及Model类,可以参考DirectorCam. +4. Model文件用于数据序列化和存储,通常不要使用UE类型,UObject文件是真正的逻辑类 +5. 创建Binding和BindingModel类,分别定义AssignModel和构造函数用来承接数据 + 1. 在SequoiaCustomBuildertool.CreateBindingModel 和 CreateEmptyBindingModelByBindingType中新增新类型的Model创建。 + 2. 在SequoiaCustomBuildertool.CreateBinding中添加新Binding类型的创建 + 3. Track,Take,Section也是类似于Binding的方式在CustomBuilderTool中添加创建代码。 + 4. 至此就完成了数据部分的定义和代码。 + + 1. 录制逻辑,需要首先创建对应的录制逻辑,继承自ISequoiaTakeRecorder. + 2. 在SequoiaHelper.BuildTakeRecorders 中根据参数创建对应的recorder. \ No newline at end of file diff --git a/07-Other/生活/每周需要做的事情.md b/07-Other/生活/每周需要做的事情.md new file mode 100644 index 0000000..b043ff6 --- /dev/null +++ b/07-Other/生活/每周需要做的事情.md @@ -0,0 +1,5 @@ +1. 清理卫生间。 +2. 清理扫地机器人。 +3. 清理洗碗机。 +4. 全屋打扫。 + 1. \ No newline at end of file From b0061ba79512b41d13ac231d7042f3b1358cbbbf Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Tue, 26 Nov 2024 14:53:52 +0800 Subject: [PATCH 2/4] vault backup: 2024-11-26 14:53:52 --- 07-Other/生活/待办事项.md | 14 ++++++++++++++ 07-Other/生活/每周需要做的事情.md | 5 ----- 2 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 07-Other/生活/待办事项.md delete mode 100644 07-Other/生活/每周需要做的事情.md diff --git a/07-Other/生活/待办事项.md b/07-Other/生活/待办事项.md new file mode 100644 index 0000000..8c5559a --- /dev/null +++ b/07-Other/生活/待办事项.md @@ -0,0 +1,14 @@ +# 待办事项 +- [ ] 婚纱照整理,以及手机照片整理,并且上传到NAS上。 +- [ ] 智能家居 +- [ ] NAS + - [ ] 音乐 + - [ ] 手机照片备份 + - [ ] 自动签到框架 https://www.bilibili.com/video/BV1we4115725/?spm_id_from=333.999.0.0&vd_source=d47c0bb42f9c72fd7d74562185cee290 + +# 每周需要做的事情 +1. 清理卫生间。 +2. 清理扫地机器人。 +3. 清理洗碗机。 +4. 全屋打扫。 + 1. \ No newline at end of file diff --git a/07-Other/生活/每周需要做的事情.md b/07-Other/生活/每周需要做的事情.md deleted file mode 100644 index b043ff6..0000000 --- a/07-Other/生活/每周需要做的事情.md +++ /dev/null @@ -1,5 +0,0 @@ -1. 清理卫生间。 -2. 清理扫地机器人。 -3. 清理洗碗机。 -4. 全屋打扫。 - 1. \ No newline at end of file From c7e0a80a3660b97328b33fd87222a0d52197b3ba Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Tue, 26 Nov 2024 18:16:19 +0800 Subject: [PATCH 3/4] vault backup: 2024-11-26 18:16:19 --- .../various-complements/histories.json | 2 +- 02-Note/{DAWA => }/ASoul/ASoul NAS部署服务.md | 0 02-Note/{DAWA => }/ASoul/ASoul.md | 0 .../ASoul/LiveDirerctor项目结构笔记.md | 0 .../ASoul/优化笔记/2024乃琳生日会优化笔记.md | 0 .../ASoul/优化笔记/2024贝拉生日会优化笔记.md | 0 02-Note/{DAWA => }/ASoul/动画相关/Sequaio.md | 0 .../{DAWA => }/ASoul/动画相关/动捕&面捕.md | 0 02-Note/{DAWA => }/ASoul/动画相关/动捕逻辑.md | 0 .../ASoul/动画相关/动捕逻辑思维导图.canvas | 0 .../{DAWA => }/ASoul/动画相关/动画蓝图逻辑.md | 0 02-Note/{DAWA => }/ASoul/实现效果/传送效果.md | 0 .../ASoul/实现效果/绳子拉取光捕相机.md | 0 02-Note/{DAWA => }/ASoul/导播台架构图.canvas | 0 .../ASoul/导播台笔记/RuntimeEditor.md | 0 02-Note/ASoul/导播台笔记/Sequoia.md | 148 ++++++++++++++++++ .../{DAWA => }/ASoul/导播台笔记/启动逻辑.md | 0 .../ASoul/导播台笔记/场景功能实现.md | 0 .../{DAWA => }/ASoul/导播台笔记/身份判断.md | 0 02-Note/{DAWA => }/ASoul/导播操作笔记.md | 0 02-Note/{DAWA => }/ASoul/引擎相关.md | 0 .../ASoul/流程笔记/MultiView逻辑.md | 0 02-Note/{DAWA => }/ASoul/流程笔记/VJ播放.md | 0 .../ASoul/流程笔记/场景流程&镜头流程.md | 0 .../ASoul/流程笔记/大世界添加笔记.md | 0 .../ASoul/流程笔记/环境&四季流程.md | 0 02-Note/{DAWA => }/ASoul/流程笔记/角色流程.md | 0 .../{DAWA => }/ASoul/流程笔记/调试启动流程.md | 0 02-Note/{DAWA => }/ASoul/流程笔记/道具流程.md | 0 02-Note/{DAWA => }/ASoul/渲染方案/PVW相关.md | 0 .../{DAWA => }/ASoul/渲染方案/Shader部分.md | 0 02-Note/{DAWA => }/ASoul/渲染方案/材质部分.md | 0 02-Note/{DAWA => }/ASoul/问题解决.md | 0 .../{DAWA => }/ASoul/面部软件FaceMask笔记.md | 0 02-Note/DAWA/ASoul/导播台笔记/Sequoia.md | 38 ----- .../第56期用Rider点燃你的UE开发之旅.md | 0 36 files changed, 149 insertions(+), 39 deletions(-) rename 02-Note/{DAWA => }/ASoul/ASoul NAS部署服务.md (100%) rename 02-Note/{DAWA => }/ASoul/ASoul.md (100%) rename 02-Note/{DAWA => }/ASoul/LiveDirerctor项目结构笔记.md (100%) rename 02-Note/{DAWA => }/ASoul/优化笔记/2024乃琳生日会优化笔记.md (100%) rename 02-Note/{DAWA => }/ASoul/优化笔记/2024贝拉生日会优化笔记.md (100%) rename 02-Note/{DAWA => }/ASoul/动画相关/Sequaio.md (100%) rename 02-Note/{DAWA => }/ASoul/动画相关/动捕&面捕.md (100%) rename 02-Note/{DAWA => }/ASoul/动画相关/动捕逻辑.md (100%) rename 02-Note/{DAWA => }/ASoul/动画相关/动捕逻辑思维导图.canvas (100%) rename 02-Note/{DAWA => }/ASoul/动画相关/动画蓝图逻辑.md (100%) rename 02-Note/{DAWA => }/ASoul/实现效果/传送效果.md (100%) rename 02-Note/{DAWA => }/ASoul/实现效果/绳子拉取光捕相机.md (100%) rename 02-Note/{DAWA => }/ASoul/导播台架构图.canvas (100%) rename 02-Note/{DAWA => }/ASoul/导播台笔记/RuntimeEditor.md (100%) create mode 100644 02-Note/ASoul/导播台笔记/Sequoia.md rename 02-Note/{DAWA => }/ASoul/导播台笔记/启动逻辑.md (100%) rename 02-Note/{DAWA => }/ASoul/导播台笔记/场景功能实现.md (100%) rename 02-Note/{DAWA => }/ASoul/导播台笔记/身份判断.md (100%) rename 02-Note/{DAWA => }/ASoul/导播操作笔记.md (100%) rename 02-Note/{DAWA => }/ASoul/引擎相关.md (100%) rename 02-Note/{DAWA => }/ASoul/流程笔记/MultiView逻辑.md (100%) rename 02-Note/{DAWA => }/ASoul/流程笔记/VJ播放.md (100%) rename 02-Note/{DAWA => }/ASoul/流程笔记/场景流程&镜头流程.md (100%) rename 02-Note/{DAWA => }/ASoul/流程笔记/大世界添加笔记.md (100%) rename 02-Note/{DAWA => }/ASoul/流程笔记/环境&四季流程.md (100%) rename 02-Note/{DAWA => }/ASoul/流程笔记/角色流程.md (100%) rename 02-Note/{DAWA => }/ASoul/流程笔记/调试启动流程.md (100%) rename 02-Note/{DAWA => }/ASoul/流程笔记/道具流程.md (100%) rename 02-Note/{DAWA => }/ASoul/渲染方案/PVW相关.md (100%) rename 02-Note/{DAWA => }/ASoul/渲染方案/Shader部分.md (100%) rename 02-Note/{DAWA => }/ASoul/渲染方案/材质部分.md (100%) rename 02-Note/{DAWA => }/ASoul/问题解决.md (100%) rename 02-Note/{DAWA => }/ASoul/面部软件FaceMask笔记.md (100%) delete mode 100644 02-Note/DAWA/ASoul/导播台笔记/Sequoia.md rename 02-Note/{ => 演讲与教程笔记/虚幻开放日2024}/第56期用Rider点燃你的UE开发之旅.md (100%) diff --git a/.obsidian/plugins/various-complements/histories.json b/.obsidian/plugins/various-complements/histories.json index b9b0385..65a3cbc 100644 --- a/.obsidian/plugins/various-complements/histories.json +++ b/.obsidian/plugins/various-complements/histories.json @@ -1 +1 @@ -{"TsDirectorCamManagerActor":{"TsDirectorCamManagerActor":{"currentFile":{"count":1,"lastUpdated":1729139925413}}},"Bloom":{"Bloom":{"currentFile":{"count":1,"lastUpdated":1729490733473}}},"FBloomFinalizeApplyConstantsCS":{"FBloomFinalizeApplyConstantsCS":{"currentFile":{"count":1,"lastUpdated":1729584275683}}},"解决NaiLin高跟":{"解决NaiLin高跟":{"currentFile":{"count":1,"lastUpdated":1729587089926}}},"优化项目举例,参与多个项目。":{"优化项目举例,参与多个项目。":{"currentFile":{"count":1,"lastUpdated":1729696025968}}},"制作各种编辑器工具":{"制作各种编辑器工具":{"currentFile":{"count":1,"lastUpdated":1729696038138}}},"RigidBodyIndex":{"RigidBodyIndex":{"currentFile":{"count":1,"lastUpdated":1730280351906}}},"IOS&Android Engine Package":{"IOS&Android Engine Package":{"internalLink":{"count":1,"lastUpdated":1730702690372}}},"AI动捕优化思路:":{"AI动捕优化思路:":{"currentFile":{"count":1,"lastUpdated":1731243010285}}},"TODO清单":{"TODO清单":{"internalLink":{"count":1,"lastUpdated":1731553316709}}},"CustomThunk":{"CustomThunk":{"internalLink":{"count":1,"lastUpdated":1731555464503}}},"MobileTAA只做两帧混合":{"MobileTAA只做两帧混合":{"currentFile":{"count":1,"lastUpdated":1731557419798}}},"UMG组件作用笔记":{"UMG组件作用笔记":{"internalLink":{"count":1,"lastUpdated":1731557505574}}}} \ No newline at end of file +{"RigidBodyIndex":{"RigidBodyIndex":{"currentFile":{"count":1,"lastUpdated":1730280351906}}},"IOS&Android Engine Package":{"IOS&Android Engine Package":{"internalLink":{"count":1,"lastUpdated":1730702690372}}},"AI动捕优化思路:":{"AI动捕优化思路:":{"currentFile":{"count":1,"lastUpdated":1731243010285}}},"TODO清单":{"TODO清单":{"internalLink":{"count":1,"lastUpdated":1731553316709}}},"CustomThunk":{"CustomThunk":{"internalLink":{"count":1,"lastUpdated":1731555464503}}},"MobileTAA只做两帧混合":{"MobileTAA只做两帧混合":{"currentFile":{"count":1,"lastUpdated":1731557419798}}},"UMG组件作用笔记":{"UMG组件作用笔记":{"internalLink":{"count":1,"lastUpdated":1731557505574}}},"SequoiaCamShotEvalTemplate":{"SequoiaCamShotEvalTemplate":{"currentFile":{"count":1,"lastUpdated":1732609264076}}}} \ No newline at end of file diff --git a/02-Note/DAWA/ASoul/ASoul NAS部署服务.md b/02-Note/ASoul/ASoul NAS部署服务.md similarity index 100% rename from 02-Note/DAWA/ASoul/ASoul NAS部署服务.md rename to 02-Note/ASoul/ASoul NAS部署服务.md diff --git a/02-Note/DAWA/ASoul/ASoul.md b/02-Note/ASoul/ASoul.md similarity index 100% rename from 02-Note/DAWA/ASoul/ASoul.md rename to 02-Note/ASoul/ASoul.md diff --git a/02-Note/DAWA/ASoul/LiveDirerctor项目结构笔记.md b/02-Note/ASoul/LiveDirerctor项目结构笔记.md similarity index 100% rename from 02-Note/DAWA/ASoul/LiveDirerctor项目结构笔记.md rename to 02-Note/ASoul/LiveDirerctor项目结构笔记.md diff --git a/02-Note/DAWA/ASoul/优化笔记/2024乃琳生日会优化笔记.md b/02-Note/ASoul/优化笔记/2024乃琳生日会优化笔记.md similarity index 100% rename from 02-Note/DAWA/ASoul/优化笔记/2024乃琳生日会优化笔记.md rename to 02-Note/ASoul/优化笔记/2024乃琳生日会优化笔记.md diff --git a/02-Note/DAWA/ASoul/优化笔记/2024贝拉生日会优化笔记.md b/02-Note/ASoul/优化笔记/2024贝拉生日会优化笔记.md similarity index 100% rename from 02-Note/DAWA/ASoul/优化笔记/2024贝拉生日会优化笔记.md rename to 02-Note/ASoul/优化笔记/2024贝拉生日会优化笔记.md diff --git a/02-Note/DAWA/ASoul/动画相关/Sequaio.md b/02-Note/ASoul/动画相关/Sequaio.md similarity index 100% rename from 02-Note/DAWA/ASoul/动画相关/Sequaio.md rename to 02-Note/ASoul/动画相关/Sequaio.md diff --git a/02-Note/DAWA/ASoul/动画相关/动捕&面捕.md b/02-Note/ASoul/动画相关/动捕&面捕.md similarity index 100% rename from 02-Note/DAWA/ASoul/动画相关/动捕&面捕.md rename to 02-Note/ASoul/动画相关/动捕&面捕.md diff --git a/02-Note/DAWA/ASoul/动画相关/动捕逻辑.md b/02-Note/ASoul/动画相关/动捕逻辑.md similarity index 100% rename from 02-Note/DAWA/ASoul/动画相关/动捕逻辑.md rename to 02-Note/ASoul/动画相关/动捕逻辑.md diff --git a/02-Note/DAWA/ASoul/动画相关/动捕逻辑思维导图.canvas b/02-Note/ASoul/动画相关/动捕逻辑思维导图.canvas similarity index 100% rename from 02-Note/DAWA/ASoul/动画相关/动捕逻辑思维导图.canvas rename to 02-Note/ASoul/动画相关/动捕逻辑思维导图.canvas diff --git a/02-Note/DAWA/ASoul/动画相关/动画蓝图逻辑.md b/02-Note/ASoul/动画相关/动画蓝图逻辑.md similarity index 100% rename from 02-Note/DAWA/ASoul/动画相关/动画蓝图逻辑.md rename to 02-Note/ASoul/动画相关/动画蓝图逻辑.md diff --git a/02-Note/DAWA/ASoul/实现效果/传送效果.md b/02-Note/ASoul/实现效果/传送效果.md similarity index 100% rename from 02-Note/DAWA/ASoul/实现效果/传送效果.md rename to 02-Note/ASoul/实现效果/传送效果.md diff --git a/02-Note/DAWA/ASoul/实现效果/绳子拉取光捕相机.md b/02-Note/ASoul/实现效果/绳子拉取光捕相机.md similarity index 100% rename from 02-Note/DAWA/ASoul/实现效果/绳子拉取光捕相机.md rename to 02-Note/ASoul/实现效果/绳子拉取光捕相机.md diff --git a/02-Note/DAWA/ASoul/导播台架构图.canvas b/02-Note/ASoul/导播台架构图.canvas similarity index 100% rename from 02-Note/DAWA/ASoul/导播台架构图.canvas rename to 02-Note/ASoul/导播台架构图.canvas diff --git a/02-Note/DAWA/ASoul/导播台笔记/RuntimeEditor.md b/02-Note/ASoul/导播台笔记/RuntimeEditor.md similarity index 100% rename from 02-Note/DAWA/ASoul/导播台笔记/RuntimeEditor.md rename to 02-Note/ASoul/导播台笔记/RuntimeEditor.md diff --git a/02-Note/ASoul/导播台笔记/Sequoia.md b/02-Note/ASoul/导播台笔记/Sequoia.md new file mode 100644 index 0000000..3fb4c44 --- /dev/null +++ b/02-Note/ASoul/导播台笔记/Sequoia.md @@ -0,0 +1,148 @@ +# 前言 +默认存储数据路径:C:\LiveDirectorSaved\Sequoia +操作方式: +1. 4级中使用`Ctrl + Shift + D`,勾选Sequoia编辑器后显示。 +2. Ctrl + ? 剪切轨道。 + +# 相关类 +- TS:`LiveDirector\Script\Sequoia` + - TsSequoiaManagerActor + - OnPlayButtonClicked():Sequoia播放函数。主要逻辑是打开Sequoia的序列化数据,之后创建或取得播放器斌进行播放/停止。 + - TsSequoiaData => USequoiaData => USequoiaObject + - TsSequoiaBinding => USequoiaBinding => UNameableSequoiaObject => USequoiaObject + - TsSequoiaTake => USequoiaTake => UNameableSequoiaObject => USequoiaObject + - *SequoiaDirectorCamTake* + - TsSequoiaTrack => USequoiaTrack => UNameableSequoiaObject => USequoiaObject + - CharacterLiveLinkAnimTrack + - SequoiaMotionTrack + - *SequoiaCamShotTrack*(SequoiaCamShotEvalTemplate ) + - *SequoiaCamTargetTrack*(SequoiaCamTargetEvalTemplate) + - SequoiaAudioTrack + - TsSequoiaSection => USequoiaSection + - *SequoiaCamSection*(TS) + - *SequoiaCamTargetSection*(TS) + - TsSequoiaSectionWithFileRef + - CharacterLiveLinkAnimSection + - SequoiaMotionSection + - SequoiaAudioSection + - ISequoiaEvalTemplate + - *SequoiaCamShotEvalTemplate* + - *SequoiaCamTargetEvalTemplate* + - CharacterLiveLinkAnimEvalTemplate + - SequoiaMotionEvalTemplate + - SequoiaAudioEvalTemplate + - ICamShotEvalHandle + - *SingleCamShotEvalHandle* + - *DoubleCamShotEvalhandle* +- c++:`LiveDirector\Source\Modules\Sequoia` + - SequoiaPlayer + - PlayInternal():播放逻辑,主要调用`SequoiaData->Evaluate();` + - USequoiaObject => UObject + + +# 播放逻辑 +```c++ +TsSequoiaManagerActor@OnPlayButtonClicked: start play : 大聲鑽石 +[2024.11.26-04.21.03:648][613]Puerts: (0x00000BD7686682F0) SequoiaManager@ Composer: On start playing... +[2024.11.26-04.21.03:649][613]Puerts: (0x00000BD7686682F0) DirectorCamSequoiaHandle : Enter CamTarget Section: Idol.JiaRan +[2024.11.26-04.21.03:649][613]Puerts: (0x00000BD7686682F0) DirectorCamSequoiaHandle : play Cam Section: ZhuJiwei_Zheng16-24mm group:CC8F4D734664869EC8FE788E7550AC31 index:0 scrub:false +[2024.11.26-04.21.03:665][614]Puerts: (0x00000BD7686682F0) request PGM: WorkShop +``` + +1. Sequoia界面点击播放后,调用TsSequoiaManagerActor::OnPlayButtonClicked() +2. SequoiaPlayer::PlayInternal(),设置时间范围后。 +3. USequoiaData::Evaluate()。 + 1. 调用所有USequoiaBinding::Evaluate()。 + 1. 调用所有USequoiaTrack::Evaluate()。 + 2. 调用所有USequoiaTake::Evaluate()。 + 1. 调用所有USequoiaTrack::Evaluate()。 + +PS. 实际上Sequoia的镜头录制数据会创建SequoiaCamShotTrack、SequoiaCamTargetTrack轨道。 + +## USequoiaTrack::Evaluate() +```c++ +void USequoiaTrack::Evaluate(TRange EvaluationRange, ESequoiaEvaluateType EvalType) +{ + Super::Evaluate(EvaluationRange, EvalType); + + TArray EvalSections; + USequoiaUtil::GetEvalSections(Sections, EvaluationRange, EvalSections);//根据播放范围取得Section + OnEvaluate(EvalSections, EvaluationRange.GetLowerBoundValue(), EvaluationRange.GetUpperBoundValue(), EvalType);//调用蓝图类的BlueprintImplementableEvent事件。 +} +``` + +在TsSequoiaTrack中Overrider了OnEvaluate(): +```ts +OnEvaluate(EvalSections: $Ref>, EvalStartTime: UE.FrameTime, EvalEndTime: UE.FrameTime, EvalType: UE.ESequoiaEvaluateType) : void{ + if(!this.CanEvaluate() || !EvalSections){ + return + } + + if(!this.evalTemplate){ + this.evalTemplate = this.CreateTemplate() + if(!this.evalTemplate){ + return + } + this.evalTemplate.InitTemplate(this) + } + + + let newEvalSections = new Array() + let evalSectionsRef = $unref(EvalSections) + for(let index = 0; index < evalSectionsRef.Num(); index ++){ + let sectionRef = evalSectionsRef.GetRef(index) + let tsSection = sectionRef.Section as TsSequoiaSection + if(!sectionRef || !tsSection){ + continue + } + + if(sectionRef.EvalMode == UE.ESequoiaEvaluateMode.EEM_Inside || sectionRef.EvalMode == UE.ESequoiaEvaluateMode.EEM_JumpIn){ + newEvalSections.push(tsSection) + if(newEvalSections.length >= MAX_EVAL_COUNT){ + break + } + } + } + + let bTemplateSourceChanged = this.IsTemplateSourceChanged(newEvalSections) + if(bTemplateSourceChanged){ + this.evalTemplate.SetTemplateSource(newEvalSections, EvalType) + } + + this.evalTemplate.Evaluate(EvalStartTime, EvalEndTime, EvalType) + this.lastEvalType = EvalType +} +``` + +看得出主要是主要逻辑是: +1. 创建指定类型的evalTemplate之后,调用`evalTemplate.InitTemplate()`。 +2. 取得ESequoiaEvaluateMode为EEM_Inside与EEM_JumpIn的所有EvalSections。 +3. 判断Template是否发生改变,如果改变则调用`evalTemplate.SetTemplateSource()`。 +4. 调用`evalTemplate::Evaluate()`。 + +## ISequoiaEvalTemplate(SequoiaCamShotEvalTemplate & ) +- InitTemplate: +- SetTemplateSource +- Evaluate + +## SequoiaCamSection +SequoiaCamSection => TsSequoiaSection。 +- 数据Model类使用SequoiaCamSectionModel。 +- SequoiaCamShotEvalTemplate + +# 其他 +## 添加自定义轨道 +往Sequoia添加一个自定义轨道,可以按照以下大体步骤进行开发 + +1. 大部分的拓展逻辑都写在SequoiaCustomBuilderTool.ts +2. 在SequoiaCustomBuilderTools.ts 的BindingType,TrackType,SectionType中添加组定义类型.在关系Map(BindingToTrackMap)中添加从属关系 +3. 在Sequoia代码文件夹下创建拓展文件夹,创建对应的TsBinding,TsTrack,TsSection等对应的UObject以及Model类,可以参考DirectorCam. +4. Model文件用于数据序列化和存储,通常不要使用UE类型,UObject文件是真正的逻辑类 +5. 创建Binding和BindingModel类,分别定义AssignModel和构造函数用来承接数据 + 1. 在SequoiaCustomBuildertool.CreateBindingModel 和 CreateEmptyBindingModelByBindingType中新增新类型的Model创建。 + 2. 在SequoiaCustomBuildertool.CreateBinding中添加新Binding类型的创建 + 3. Track,Take,Section也是类似于Binding的方式在CustomBuilderTool中添加创建代码。 + 4. 至此就完成了数据部分的定义和代码。 + + 1. 录制逻辑,需要首先创建对应的录制逻辑,继承自ISequoiaTakeRecorder. + 2. 在SequoiaHelper.BuildTakeRecorders 中根据参数创建对应的recorder. \ No newline at end of file diff --git a/02-Note/DAWA/ASoul/导播台笔记/启动逻辑.md b/02-Note/ASoul/导播台笔记/启动逻辑.md similarity index 100% rename from 02-Note/DAWA/ASoul/导播台笔记/启动逻辑.md rename to 02-Note/ASoul/导播台笔记/启动逻辑.md diff --git a/02-Note/DAWA/ASoul/导播台笔记/场景功能实现.md b/02-Note/ASoul/导播台笔记/场景功能实现.md similarity index 100% rename from 02-Note/DAWA/ASoul/导播台笔记/场景功能实现.md rename to 02-Note/ASoul/导播台笔记/场景功能实现.md diff --git a/02-Note/DAWA/ASoul/导播台笔记/身份判断.md b/02-Note/ASoul/导播台笔记/身份判断.md similarity index 100% rename from 02-Note/DAWA/ASoul/导播台笔记/身份判断.md rename to 02-Note/ASoul/导播台笔记/身份判断.md diff --git a/02-Note/DAWA/ASoul/导播操作笔记.md b/02-Note/ASoul/导播操作笔记.md similarity index 100% rename from 02-Note/DAWA/ASoul/导播操作笔记.md rename to 02-Note/ASoul/导播操作笔记.md diff --git a/02-Note/DAWA/ASoul/引擎相关.md b/02-Note/ASoul/引擎相关.md similarity index 100% rename from 02-Note/DAWA/ASoul/引擎相关.md rename to 02-Note/ASoul/引擎相关.md diff --git a/02-Note/DAWA/ASoul/流程笔记/MultiView逻辑.md b/02-Note/ASoul/流程笔记/MultiView逻辑.md similarity index 100% rename from 02-Note/DAWA/ASoul/流程笔记/MultiView逻辑.md rename to 02-Note/ASoul/流程笔记/MultiView逻辑.md diff --git a/02-Note/DAWA/ASoul/流程笔记/VJ播放.md b/02-Note/ASoul/流程笔记/VJ播放.md similarity index 100% rename from 02-Note/DAWA/ASoul/流程笔记/VJ播放.md rename to 02-Note/ASoul/流程笔记/VJ播放.md diff --git a/02-Note/DAWA/ASoul/流程笔记/场景流程&镜头流程.md b/02-Note/ASoul/流程笔记/场景流程&镜头流程.md similarity index 100% rename from 02-Note/DAWA/ASoul/流程笔记/场景流程&镜头流程.md rename to 02-Note/ASoul/流程笔记/场景流程&镜头流程.md diff --git a/02-Note/DAWA/ASoul/流程笔记/大世界添加笔记.md b/02-Note/ASoul/流程笔记/大世界添加笔记.md similarity index 100% rename from 02-Note/DAWA/ASoul/流程笔记/大世界添加笔记.md rename to 02-Note/ASoul/流程笔记/大世界添加笔记.md diff --git a/02-Note/DAWA/ASoul/流程笔记/环境&四季流程.md b/02-Note/ASoul/流程笔记/环境&四季流程.md similarity index 100% rename from 02-Note/DAWA/ASoul/流程笔记/环境&四季流程.md rename to 02-Note/ASoul/流程笔记/环境&四季流程.md diff --git a/02-Note/DAWA/ASoul/流程笔记/角色流程.md b/02-Note/ASoul/流程笔记/角色流程.md similarity index 100% rename from 02-Note/DAWA/ASoul/流程笔记/角色流程.md rename to 02-Note/ASoul/流程笔记/角色流程.md diff --git a/02-Note/DAWA/ASoul/流程笔记/调试启动流程.md b/02-Note/ASoul/流程笔记/调试启动流程.md similarity index 100% rename from 02-Note/DAWA/ASoul/流程笔记/调试启动流程.md rename to 02-Note/ASoul/流程笔记/调试启动流程.md diff --git a/02-Note/DAWA/ASoul/流程笔记/道具流程.md b/02-Note/ASoul/流程笔记/道具流程.md similarity index 100% rename from 02-Note/DAWA/ASoul/流程笔记/道具流程.md rename to 02-Note/ASoul/流程笔记/道具流程.md diff --git a/02-Note/DAWA/ASoul/渲染方案/PVW相关.md b/02-Note/ASoul/渲染方案/PVW相关.md similarity index 100% rename from 02-Note/DAWA/ASoul/渲染方案/PVW相关.md rename to 02-Note/ASoul/渲染方案/PVW相关.md diff --git a/02-Note/DAWA/ASoul/渲染方案/Shader部分.md b/02-Note/ASoul/渲染方案/Shader部分.md similarity index 100% rename from 02-Note/DAWA/ASoul/渲染方案/Shader部分.md rename to 02-Note/ASoul/渲染方案/Shader部分.md diff --git a/02-Note/DAWA/ASoul/渲染方案/材质部分.md b/02-Note/ASoul/渲染方案/材质部分.md similarity index 100% rename from 02-Note/DAWA/ASoul/渲染方案/材质部分.md rename to 02-Note/ASoul/渲染方案/材质部分.md diff --git a/02-Note/DAWA/ASoul/问题解决.md b/02-Note/ASoul/问题解决.md similarity index 100% rename from 02-Note/DAWA/ASoul/问题解决.md rename to 02-Note/ASoul/问题解决.md diff --git a/02-Note/DAWA/ASoul/面部软件FaceMask笔记.md b/02-Note/ASoul/面部软件FaceMask笔记.md similarity index 100% rename from 02-Note/DAWA/ASoul/面部软件FaceMask笔记.md rename to 02-Note/ASoul/面部软件FaceMask笔记.md diff --git a/02-Note/DAWA/ASoul/导播台笔记/Sequoia.md b/02-Note/DAWA/ASoul/导播台笔记/Sequoia.md deleted file mode 100644 index 33f2cb3..0000000 --- a/02-Note/DAWA/ASoul/导播台笔记/Sequoia.md +++ /dev/null @@ -1,38 +0,0 @@ -# 前言 -默认存储数据路径:C:\LiveDirectorSaved\Sequoia -操作方式: -1. 4级中使用`Ctrl + Shift + D`,勾选Sequoia编辑器后显示。 -2. Ctrl + ? 剪切轨道。 - -# 相关类 -- TS:`LiveDirector\Script\Sequoia` - - TsSequoiaManagerActor - - OnPlayButtonClicked():Sequoia播放函数。主要逻辑是打开Sequoia的序列化数据,之后创建或取得播放器斌进行播放/停止。 -- c++:`LiveDirector\Source\Modules\Sequoia` - - SequoiaPlayer - -# 播放逻辑 -```c++ -TsSequoiaManagerActor@OnPlayButtonClicked: start play : 大聲鑽石 -[2024.11.26-04.21.03:648][613]Puerts: (0x00000BD7686682F0) SequoiaManager@ Composer: On start playing... -[2024.11.26-04.21.03:649][613]Puerts: (0x00000BD7686682F0) DirectorCamSequoiaHandle : Enter CamTarget Section: Idol.JiaRan -[2024.11.26-04.21.03:649][613]Puerts: (0x00000BD7686682F0) DirectorCamSequoiaHandle : play Cam Section: ZhuJiwei_Zheng16-24mm group:CC8F4D734664869EC8FE788E7550AC31 index:0 scrub:false -[2024.11.26-04.21.03:665][614]Puerts: (0x00000BD7686682F0) request PGM: WorkShop -``` - -# 其他 -## 添加自定义轨道 -往Sequoia添加一个自定义轨道,可以按照以下大体步骤进行开发 - -1. 大部分的拓展逻辑都写在SequoiaCustomBuilderTool.ts -2. 在SequoiaCustomBuilderTools.ts 的BindingType,TrackType,SectionType中添加组定义类型.在关系Map(BindingToTrackMap)中添加从属关系 -3. 在Sequoia代码文件夹下创建拓展文件夹,创建对应的TsBinding,TsTrack,TsSection等对应的UObject以及Model类,可以参考DirectorCam. -4. Model文件用于数据序列化和存储,通常不要使用UE类型,UObject文件是真正的逻辑类 -5. 创建Binding和BindingModel类,分别定义AssignModel和构造函数用来承接数据 - 1. 在SequoiaCustomBuildertool.CreateBindingModel 和 CreateEmptyBindingModelByBindingType中新增新类型的Model创建。 - 2. 在SequoiaCustomBuildertool.CreateBinding中添加新Binding类型的创建 - 3. Track,Take,Section也是类似于Binding的方式在CustomBuilderTool中添加创建代码。 - 4. 至此就完成了数据部分的定义和代码。 - - 1. 录制逻辑,需要首先创建对应的录制逻辑,继承自ISequoiaTakeRecorder. - 2. 在SequoiaHelper.BuildTakeRecorders 中根据参数创建对应的recorder. \ No newline at end of file diff --git a/02-Note/第56期用Rider点燃你的UE开发之旅.md b/02-Note/演讲与教程笔记/虚幻开放日2024/第56期用Rider点燃你的UE开发之旅.md similarity index 100% rename from 02-Note/第56期用Rider点燃你的UE开发之旅.md rename to 02-Note/演讲与教程笔记/虚幻开放日2024/第56期用Rider点燃你的UE开发之旅.md From 3adb9c08a55c1a37a9d2e173256f0e00892bf72f Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Tue, 26 Nov 2024 19:22:10 +0800 Subject: [PATCH 4/4] vault backup: 2024-11-26 19:22:10 --- 02-Note/ASoul/导播台笔记/Sequoia.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/02-Note/ASoul/导播台笔记/Sequoia.md b/02-Note/ASoul/导播台笔记/Sequoia.md index 3fb4c44..026bb21 100644 --- a/02-Note/ASoul/导播台笔记/Sequoia.md +++ b/02-Note/ASoul/导播台笔记/Sequoia.md @@ -4,6 +4,7 @@ 1. 4级中使用`Ctrl + Shift + D`,勾选Sequoia编辑器后显示。 2. Ctrl + ? 剪切轨道。 +PS. 编辑器状态下可以打开Sequoia编辑器界面,再进4级前,Ctrl+Shift+D,点击后就可以打开。 # 相关类 - TS:`LiveDirector\Script\Sequoia` - TsSequoiaManagerActor @@ -15,8 +16,8 @@ - TsSequoiaTrack => USequoiaTrack => UNameableSequoiaObject => USequoiaObject - CharacterLiveLinkAnimTrack - SequoiaMotionTrack - - *SequoiaCamShotTrack*(SequoiaCamShotEvalTemplate ) - - *SequoiaCamTargetTrack*(SequoiaCamTargetEvalTemplate) + - *SequoiaCamShotTrack*(SequoiaCamShotEvalTemplate):***相机Take的CamShot轨道。*** + - *SequoiaCamTargetTrack*(SequoiaCamTargetEvalTemplate):***相机Take的Target轨道。*** - SequoiaAudioTrack - TsSequoiaSection => USequoiaSection - *SequoiaCamSection*(TS) @@ -120,7 +121,7 @@ OnEvaluate(EvalSections: $Ref>, EvalStartTime: 3. 判断Template是否发生改变,如果改变则调用`evalTemplate.SetTemplateSource()`。 4. 调用`evalTemplate::Evaluate()`。 -## ISequoiaEvalTemplate(SequoiaCamShotEvalTemplate & ) +## ISequoiaEvalTemplate(SequoiaCamShotEvalTemplate) - InitTemplate: - SetTemplateSource - Evaluate