Ride: venue-owned camera (directCamera) + sidewalk passerby shot
Camera architecture: a module with directCamera:true drives its own rig inside update() (analytic f(timeline, seed, framing, venueState)); the shared rig is ignored for that layer only. ModelLayer prefers own camera, Show skips shared injection. Ride migrates its full grammar over (traverse, orbit, car tracking, jumps, clamp); Compositor ride branches removed. Chamber/stage unchanged on the shared path. Sidewalk shot: new ride-only 'passerby' plan target (breaths only, never climax, never twice running) plants a static roadside camera; the module drives the car +12 to -14 on driveT with the world frozen. Verified far-pass-away through the Show path; lint + 24 tests green.
This commit is contained in:
@@ -436,11 +436,14 @@ export class ModelLayer extends Layer {
|
||||
const { timeline, features } = ctx;
|
||||
const w = target ? target.width : renderer.width;
|
||||
const h = target ? target.height : renderer.height;
|
||||
// Use the compositor's shared camera when it has been injected; it is
|
||||
// updated centrally from ArcDriver's framing/gaze so every model layer
|
||||
// shares one perspective and one depth, and a ground in one layer can
|
||||
// occlude a subject in another.
|
||||
const cam = this.sharedCamera || this.camera;
|
||||
// Who drives the camera: a module with `directCamera: true` owns its
|
||||
// own rig outright — it drives `camera` inside update() and the shared
|
||||
// rig is ignored for this layer. Everything else borrows the shared
|
||||
// camera when injected (updated centrally from framing/gaze so model
|
||||
// layers share one perspective and one depth buffer), else its own.
|
||||
// Direct control is analytic like everything else: f(timeline, seed,
|
||||
// framing, venueState) — seek === playback still holds.
|
||||
const cam = (this.module.directCamera ? this.camera : (this.sharedCamera || this.camera));
|
||||
if (cam.aspect !== w / h) {
|
||||
cam.aspect = w / h;
|
||||
cam.updateProjectionMatrix();
|
||||
|
||||
Reference in New Issue
Block a user