ReadonlyNAME编辑端:当前选中的运镜项下标(无选中为 null)。切换章节时清除。
在指定时间捕获当前 five 相机为一个运镜关键帧。
OptionalfiveState: { Optionalfov?: numberOptionaloptions: CameraKeyframeOptions续播(当前章节)。
continue() / continue({ prepare: false }):同步 plain 续播,直接 resume 时钟,返回 void(既有语义不变)。continue({ prepare: true }):先 await prepareCameraTo(currentChapterTime) 平滑 glide-back(不计时)再 resume,
返回 Promise<void>。展示端与编辑端均传 prepare: true 以保证续播无跳变(D-RESUME)。Optionalprepare?: false获取当前章节的运镜关键帧(升序副本;无章节/无 camera player 时返回空数组)
章节默认视角(Chapter_Default_View)。始终为 Mapview orbit 视角(与运镜编辑「仅 Mapview」一致)。
sample(0)(因首帧夹紧,等于首帧 CameraState)。undefined(调用方 no-op、保持当前视角)。
默认视角不单独持久化,完全派生(关键帧 / 模型几何),不在 cameraPlayers 新增字段。当前可用章节
组级章节时间映射(加法式):每章 { index, name, startTime, endTime, duration } 逐章累计。
组级进度聚合(加法式):由章节级 getProgress() + getGroupChapterTimeMap() 派生。
当前进度(当前章节内 currentTime/totalTime,单位 ms;含当前章节索引/总章节数)
当前状态快照
按章节索引批量加载运镜(用于从持久化数据还原):替换对应章节 camera player 的关键帧。 调用方负责"对账"(只传锚点命中的章节),越界索引忽略。
加载剧本:预加载资源 + 将模型加入 five 场景;autoPlay 时自动播放首章
注册进度监听;返回反订阅函数
播放指定章节
跳转到组级时间(ms):映射为 (章节 index, 章节内时间),必要时切章后 setTimelineTo。 保留 seek 前的播放/暂停状态(D-SEEK-LIVE,方案 A):
序列化全部章节中"含非空关键帧"的运镜 player,按章节索引返回。 供编辑端按"章节起始动画 id"聚合后整组保存。未加载 script 时返回空数组。
加法式:设置「章节索引 → 楼层」映射,启用「播放/切章时 Mapview 只显示当前章节所在楼层」。
reset() 负责)。
楼层可见性是 five 空间模型的显隐(five.model.show),与运镜相机接管相互独立。
各消费方(workshop 编辑端 / NextVR 展示端)自行从各自数据算好映射注入,保证两端行为一致(parity)。Optionalmodel: { 楼层可见性作用的目标模型(缺省/undefined/null 回退到 five.model)。
单 VR 场景无需传(five.model 即唯一模型);沙盘/联合现场须传动画所属子 VR 的模型
(five.models.find(m => m.name === resourceCode)),否则楼层隔离会落到 models[0] 而非播放中的子 VR,
导致跨楼层动画所有楼层同时高亮。传入 null 时清空目标模型回退到 five.model。
Optionalshow?: ((floorIndex?: number) => void)OptionalfloorIndex: number更新指定下标关键帧:合并 patch 中出现的字段,按 timeStamp 重排序。 拒绝(保持序列不变):未加载 script / 无章节 / index 越界 / patch.timeStamp 非负有限数校验失败。
DigitalPerformanceV2Plugin 控制器(最小可用版)
试点 fork:独立于现有 DigitalPerformancePlugin(Legacy),不修改其既有行为。 本版本提供:剧本加载(复用 Shared_Core 加载 + 模型入场景)、播放/暂停/续播、 基于统一时钟的进度与 seek 预览。相机运镜(CameraTrack/CameraDirector)在后续任务叠加。