vault backup: 2024-05-23 20:32:12
This commit is contained in:
@@ -11,10 +11,19 @@ rating: ⭐
|
||||
|
||||
参考:
|
||||
1. [sequencer mute tracks at runtime from c](https://forums.unrealengine.com/t/sequencer-mute-tracks-at-runtime-from-c/476278/3)
|
||||
2. 其他参考
|
||||
1. [Actor Rebinding in Blueprints with Sequencer(官方文档)]https://docs.unrealengine.com/4.27/en-US/AnimatingObjects/Sequencer/HowTo/AnimateDynamicObjects/
|
||||
2. [Level Sequence actor rebinding in C++](https://www.reddit.com/r/unrealengine/comments/btk1uz/level_sequence_actor_rebinding_in_c/)
|
||||
3. Sequence ECS资料
|
||||
1. [大规模内容的性能保障:虚幻引擎4.26中的Sequencer(官方文档)](https://www.unrealengine.com/zh-CN/tech-blog/performance-at-scale-sequencer-in-unreal-engine-4-26)
|
||||
2. [UE4.26(5.0)后的Sequence系统](https://zhuanlan.zhihu.com/p/589465561)
|
||||
3. [UE5 Sequence 浅-浅-析](https://zhuanlan.zhihu.com/p/676690043)
|
||||
4. ECS资料
|
||||
1. [一文看懂ECS架构]https://zhuanlan.zhihu.com/p/618971664
|
||||
|
||||
可行思路:
|
||||
1. 给导播创建一个快捷键(Hotkey),之后在触发根据Tag切换对应角色动画蓝图中的逻辑。
|
||||
2. 使用Sequence的EventTrack设置若干事件。
|
||||
2. [x] 使用Sequence的EventTrack设置若干事件。
|
||||
3. 模改UMovieSceneSkeletalAnimationTrack,实现一个可以自动根据Tag捕获对应角色并且播发动画的功能。
|
||||
|
||||
# 方案一
|
||||
@@ -464,4 +473,26 @@ Runner->QueueUpdate(Context, RootTemplateInstance.GetRootInstanceHandle(), FSimp
|
||||
```
|
||||
|
||||
## SequenceRecorder
|
||||
SequenceRecorder模块的基类是ISequenceRecorder。
|
||||
SequenceRecorder模块的基类是ISequenceRecorder。
|
||||
|
||||
# Sequencer ECS
|
||||
## 使用ECS的原因
|
||||
**可伸缩性**
|
||||
如果使用新的运行时,应该能够编写包含成百上千个轨道或序列的内容,并且将这些内容作为一个整体来优化求值逻辑。这包括:
|
||||
- 分配和组织数据,使性能不会随着活动Sequencer轨道的增加而快速恶化。
|
||||
- 能够完全删除已知不再需要的逻辑和分支,不必在每一帧都为它们付出成本。没有代码就是最快的代码。这条原则应该适用于Sequencer求值代码的所有方面,而不仅限于最高级。
|
||||
- 求值逻辑应该能够直接、高效且不受阻碍地批量访问必要数据,而不必通过复杂或低效的抽象与内存交互。
|
||||
|
||||
**并发性**
|
||||
写入求值逻辑应该很简单,而且天然就能安全而高效地扩展到多个核心,包括上游/下游依赖性的表达定义(例如,并行地对所有曲线求值)。由于具备仅设置一次管线的综合优点,这不仅能让许多轻量级的小型动画受益,也有益于非常大的序列。
|
||||
|
||||
**可扩展性**
|
||||
应该可以在内置功能的基础上构建逻辑,而不必重新实现核心系统。添加与核心系统交互的上游或下游功能应该是可以合理实现的。这包括:
|
||||
- 在管线中的任何位置,当前帧的所有数据都应该是透明且可改变的。
|
||||
- 可靠的依赖性管理。
|
||||
|
||||
这些设计目标,再加上Sequencer本身的各种问题,使得采用[数据导向的设计](https://en.wikipedia.org/wiki/Data-oriented_design)原则成为自然而然的选择,理由如下:
|
||||
- 大部分Sequencer数据是同质的,可以循序布局。
|
||||
- 每种数据变换的逻辑通常具有非常高的独立性,与情境无关(即运行函数f(x)来得到曲线)。
|
||||
- 控制和数据流是非常线性的,没有循环或递归的依赖性(也就是说,没有一种逻辑会要求重新计算已经计算出的数值)。
|
||||
- 只有初始设置和最终属性设置器才有线程限制。
|
Reference in New Issue
Block a user