跳转至

摄像机与共享动画时间轴原理

控制接口、轨道字段和片段示例见 API reference。

姿态来源与分量轨道

摄像机先从姿态供应器取得位置、朝向、FOV 和输出尺寸,动画只覆盖已定义的分量。 位置使用世界坐标,旋转遵循宿主摄像机的角度约定;未折返的角度直接插值,因而可以表达连续多圈旋转。 直接控制以当前姿态为起点替换供应器并结束原动画,避免下一帧被旧轨道覆盖。

轨道关键帧在构造时排序和复制,相邻帧按缓动函数插值,首尾之外保持端点。缺少轨道的分量继续来自供应器。 光学缩放改变投影,不缩放世界或输出纹理,其关系为:

tan(newFov / 2) = tan(baseFov / 2) / zoom

缩放相对当前供应器的基准 FOV 求值,不在连续帧中累乘。插值导致的无效缩放会受正值边界保护。

时钟所有权

独立播放器拥有自己的时钟,游戏 tick 推进时间,渲染帧只按 partial tick 采样。采样不能再次推进时钟。 共享时间轴由一个宿主统一驱动,模型和摄像机只跟随,从而避免一个场景被多个目标重复推进。

共享播放时,暂停、跳转和速度控制作用于公共时钟;关闭一个摄像机或解除一个目标不会停止其他目标。 暂停某个摄像机的画面输出与暂停整个时间轴是不同的操作。播放结束后可保留终点姿态,片段循环则由 时间轴周期统一决定,较短目标在共享周期内保持自己的终点。

模型与摄像机通道

模型姿态和摄像机姿态共享计时/采样内核,但输出目标分别处理骨骼、morph、材质和命名镜头通道。 逻辑镜头名与输出 view ID 独立,一个镜头轨道可以绑定多个实际机位。模型重载仅替换输出目标, 不重置外部共享时钟。分层状态机的层权重与状态转换仍由状态机本身管理。

控制线程通过不可变快照交付时钟,渲染线程采样。关闭或失败的摄像机不再接受控制,防止旧控制器引用 驱动已经释放的资源。窗口机位的输出尺寸仍由 framebuffer/DPI 决定,不被动画轨道冻结。