From 3da575da72bbbaa96e28e8317f84301bdce54fbf Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 12 May 2026 22:46:12 +0200 Subject: [PATCH] Improve scene path sampling logic to support curve modes and sampled resolution options --- src/document/migrate-scene-document.ts | 4 ++++ src/document/paths.ts | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/document/migrate-scene-document.ts b/src/document/migrate-scene-document.ts index e4716f7d..4b62b2b5 100644 --- a/src/document/migrate-scene-document.ts +++ b/src/document/migrate-scene-document.ts @@ -303,6 +303,10 @@ import { type SequenceClip } from "../sequencer/project-sequence-steps"; import { createScenePath, createScenePathPoint, + DEFAULT_SCENE_PATH_CURVE_MODE, + DEFAULT_SCENE_PATH_SAMPLED_RESOLUTION, + isScenePathCurveMode, + normalizeScenePathSampledResolution, type ScenePath, type ScenePathPoint } from "./paths"; diff --git a/src/document/paths.ts b/src/document/paths.ts index ec49a93a..b7ad43e6 100644 --- a/src/document/paths.ts +++ b/src/document/paths.ts @@ -894,7 +894,7 @@ export function sampleResolvedScenePathPosition( progress: number, options: { smooth?: boolean } = {} ): Vec3 { - if (options.smooth) { + if (options.smooth && path.curveMode !== "catmullRom") { return sampleSmoothedPath(path, progress).position; } @@ -1084,7 +1084,8 @@ export function resolveNearestPointOnResolvedScenePath( } export function sampleScenePathPosition( - path: Pick, + path: Pick & + Partial>, progress: number, options: { smooth?: boolean } = {} ): Vec3 { @@ -1096,7 +1097,7 @@ export function sampleResolvedScenePathTangent( progress: number, options: { smooth?: boolean } = {} ): Vec3 { - if (options.smooth) { + if (options.smooth && path.curveMode !== "catmullRom") { return sampleSmoothedPath(path, progress).tangent; } @@ -1114,7 +1115,8 @@ export function sampleResolvedScenePathTangent( } export function sampleScenePathTangent( - path: Pick, + path: Pick & + Partial>, progress: number, options: { smooth?: boolean } = {} ): Vec3 {