fix: 优化Gizmo
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { Euler, Quaternion } from "three";
|
||||
import { degreesToRadians, radiansToDegrees } from "./directorProject";
|
||||
import { slerpCameraLookRotation } from "./cameraGeometry";
|
||||
|
||||
export type TransformTuple = [number, number, number];
|
||||
|
||||
@@ -23,7 +24,8 @@ export interface TimelineTrack {
|
||||
// ===== 相机关键帧 =====
|
||||
export interface CameraKeyframeValue {
|
||||
position: TransformTuple;
|
||||
target: TransformTuple;
|
||||
/** 注视朝向(度):[俯仰角 pitch(X), 水平角 yaw(Y), 横滚角 roll(Z)],与机位的 lookRotation 同一套语义 */
|
||||
lookRotation: TransformTuple;
|
||||
fov: number;
|
||||
}
|
||||
export interface CameraTimelineKeyframe {
|
||||
@@ -177,7 +179,8 @@ export function evaluateTrackAtTime(track: TimelineTrack, time: number): Keyfram
|
||||
function lerpCameraValue(a: CameraKeyframeValue, b: CameraKeyframeValue, t: number): CameraKeyframeValue {
|
||||
return {
|
||||
position: lerpTuple(a.position, b.position, t),
|
||||
target: lerpTuple(a.target, b.target, t),
|
||||
// 注视朝向是角度,走四元数插值(与轨迹点一致),位置 / FOV 仍按线性插值
|
||||
lookRotation: slerpCameraLookRotation(a.lookRotation, b.lookRotation, t),
|
||||
fov: lerp(a.fov, b.fov, t),
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user