mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-10 21:32:23 +00:00
feat(director): recorded camera tracks and shot lens (scene document v7)
Scene documents gain a second kind of explicit move: `move.track`, timed samples of position, orientation and an optional 35 mm-equivalent focal length. Playback, Load, Replay and seek share one sampler, which stretches the recording to the shot's duration (so editing durationSec retimes a take), takes the short arc for longitude/heading/roll and returns recorded samples exactly. Tracks require the ellipsoid altitude reference and are bounded to 10,000 samples. Shots may also carry a `lens`: focal length and a thin-lens depth of field whose distances are divided by a miniature scale, so a 1:1000 rig renders the city like a tabletop model. A new camera-lens owner applies it to the frustum and a depth-of-field post-process stage; shots without a lens restore the default view. SceneDirector accepts the lens as an injected dependency, captures a changed lens with a shot and gains addRecordedShot() for takes. Versions 1-6 import unchanged. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_015H1iLusTzWpVKitGic2AW8
This commit is contained in:
18 files changed
+793
-10
No files matched your search
@@ -261,6 +261,7 @@ export function normalizeShot(
|
||||
: {}),
|
||||
...(rawShot?.dataPackIds ? { dataPackIds: [...rawShot.dataPackIds] } : {}),
|
||||
...(rawShot?.move ? { move: deepClone(rawShot.move) } : {}),
|
||||
...(rawShot?.lens ? { lens: deepClone(rawShot.lens) } : {}),
|
||||
visual: {
|
||||
style: visual.style || 'normal',
|
||||
bloom: normalizeBloomState(bloom, {
|
||||
|
||||
Reference in new issue
Block a user