diff --git a/CHANGELOG.md b/CHANGELOG.md index c0b5ce1e..8d7087bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,17 @@ entry points (`.`, `./three`) are frozen for 1.x, while the **scene subpaths** ( `./splat`, `./model`) are a preview tier whose options may change in any release. Entries below say which tier they touch, because that is what tells you whether an upgrade can move your pixels. +## Unreleased + +Touches the **preview tier** (`./call`) only: one default. No export or type changes. + +### `./call` — the stereo self view auto-converges too + +- The call's self view now follows the call's **`autoConverge`** option (default `true`) instead of + being hard-wired off, so your own stereo camera feed sits at the display plane like the remote + tiles. `autoConverge: false` turns it off for both. (`samples/camera` also starts with + auto-convergence on.) + ## 1.37.1 — 2026-10-07 ### Depth cursor: hybrid anchor keeps the line of sight, not the foot diff --git a/docs/call.md b/docs/call.md index 09ada344..2f0f979c 100644 --- a/docs/call.md +++ b/docs/call.md @@ -138,7 +138,7 @@ Disconnecting the element (`el.remove()`, a framework unmounting it) leaves the | `camera` | `'auto'` | `'auto'` opens the best camera through [`/camera`](camera.md): a stereo device when one is present (the DisplayXR Browser's "3D Camera", or a wide side-by-side device) else the default webcam; `'stereo'` prefers the pair and falls back; `'mono'` never probes; a `deviceId` string; a `MediaStream` you own; or a `StereoCamera` from `openCamera()` (left open when the call ends) | | `format` | `'mono'` | The format of a page-supplied `MediaStream` (`'sbs'` or `'mono'`). 3D-ness is never guessed from a stream | | `audio` | `true` | Microphone, with echo cancellation and noise suppression | -| `autoConverge` | `true` | Measure the disparity of the point between a stereo peer's eyes and put that person at the display plane. No calibration needed | +| `autoConverge` | `true` | Measure the disparity of the point between a stereo peer's eyes and put that person at the display plane. No calibration needed. Also governs your own stereo self view | | `mono3D` | `'auto'` | Lift 2D peers to 3D: `'auto'` · `'off'` · a `lift` function (see [`/call/full`](#callfull-vs-call--lift--which-import)) | | `liftOptions` | — | Extra `lift()` options, e.g. `{ models }` for where the depth model is served from, plus `max` (default 4): concurrent lifted tiles; further 2D peers stay flat | | `maxPeers` | `4` | Participants including you, clamped to 2–4 (full mesh) | diff --git a/js/inline3d-call.js b/js/inline3d-call.js index 58b0eee9..a680ff12 100644 --- a/js/inline3d-call.js +++ b/js/inline3d-call.js @@ -1873,7 +1873,7 @@ class SelfTile { // will not weave (firstWoven → woven:false, web#131), and the badge must follow it. this.view = addCameraView(wall, this.canvas, cam, { mirror: true, - autoConverge: false, + autoConverge: !!this.call.o.autoConverge, // the call option (default on) governs the self view too aspect: this.call.o.tileAspect, onRouteChange: (route, st) => { if (this.cam !== cam) return; // a view this tile already replaced diff --git a/samples/camera/app.js b/samples/camera/app.js index b44a545d..7ed3a0d0 100644 --- a/samples/camera/app.js +++ b/samples/camera/app.js @@ -75,7 +75,7 @@ say( inline3DAvailable() ? 'woven' : 'flat' ); -const view = addCameraView(wall, /** @type {HTMLCanvasElement} */ (document.getElementById('self')), cam, { mirror: true, autoConverge: false }); +const view = addCameraView(wall, /** @type {HTMLCanvasElement} */ (document.getElementById('self')), cam, { mirror: true, autoConverge: true }); $('mirror').addEventListener('change', () => view.setMirror($('mirror').checked)); $('converge').addEventListener('change', () => view.setAutoConverge($('converge').checked)); $('depth').addEventListener('input', () => view.setDepth($('depth').valueAsNumber)); diff --git a/samples/camera/index.html b/samples/camera/index.html index 69f0d03b..d93f0a9d 100644 --- a/samples/camera/index.html +++ b/samples/camera/index.html @@ -50,7 +50,7 @@