refactor(timeline): 解耦机位片段与运镜关键帧并新增过渡片段编辑

- 新增 TransitionClipEditor 与 CameraClipEditor,支持编辑过渡类型、时长及机位片段起止
- 抽出可复用的 TimelineClipDragHandle,支持拖拽、修剪、吸附与方向键微调
- 机位轨道改用显式活跃片段(CameraActiveClip),关键帧仅作只读占位推导
- 画布视锥线支持机位自定义颜色
- 视频导出时传入过渡片段、机位与场景参数以保持预览一致
- 更新 TimelinePanel 相关测试以覆盖新模型与交互
This commit is contained in:
2026-09-19 07:53:35 +08:00
parent 8d6c30b548
commit 91fcb6841a
12 changed files with 1453 additions and 606 deletions

View File

@@ -231,6 +231,7 @@ async function exportVideoFrameByFrame(view: VideoExportView): Promise<void> {
const displayCameraId =
view === "camera"
? getActiveCameraIdAtTime(
directorStore.project.timeline.transitionClips,
directorStore.project.timeline.cameraTracks,
directorStore.project.activeCameraId,
time
@@ -239,7 +240,10 @@ async function exportVideoFrameByFrame(view: VideoExportView): Promise<void> {
// 有运镜轨道时两边共用同一份插值(预览 / 导出一致);返回 false 表示没覆盖相机
const appliedCameraTrack = applyActiveCameraViewAtTime({
camera: frameCamera,
transitionClips: directorStore.project.timeline.transitionClips,
cameraTracks: directorStore.project.timeline.cameraTracks,
cameras: directorStore.project.cameras,
projectScene: directorStore.project.scene,
activeCameraId: displayCameraId,
playhead: time,
viewMode: view,