Google expands Three-Live with tools for shared spatial scenes
Google released Three-Live 1.2.0 on November 3, expanding its spatial plugin suite to 14. The update adds ways to inspect, arrange and share interactive scenes.
Spec sheet
- Release
- 1.2.0, November 3
- Spatial plugins
- 14, individually optional
- Shared-room tracking
- Up to 16 remote peers
Tools for manipulating a scene
The additions include measurement, magnetic snapping, gaze selection, exploded assembly views, persistent anchors, locomotion and shared rooms. They extend a project whose initial developer preview appeared on October 6. Measuring and separating components gives the viewer more to do than rotate a finished model. The release also provides native counterparts for Android and Apple platforms, alongside the web implementations.
A file handoff is not an interactive runtime
Quick Look and Scene Viewer can display exported geometry, but that route loses JavaScript animation, behavior graphs and spatial plugins. On iPhone and iPad, Safari cannot start a WebXR session; embedded mobile WebViews also lack that route. The project instead supplies native Filament and RealityKit runtimes for interactive applications. Scene traits travel with the exported model as metadata, so the application has both geometry and instructions describing its spatial behavior. On the web, developers can register only the plugins their scene needs instead of loading the complete bundle.
Shared rooms coordinate competing changes
The tagged shared-room implementation makes the collaboration contract more concrete. A room identifier uses a same-origin BroadcastChannel, while cross-device connections use a WebSocket relay. Remote relay URLs must use an encrypted connection; unencrypted sockets are accepted only on loopback addresses. Each client tracks at most 16 remote peers and rate-limits head and pointer updates to at most 20 per second. Object manipulation uses renewable two-second ownership leases. The synchronization layer rejects conflicting updates while another participant holds an unexpired lease. Near-simultaneous grabs resolve through a deterministic peer-identifier comparison, and the losing client releases its local hold. The implementation also separates synchronized objects from local-only ones. Explicit synchronization settings override the default for grabbable objects. Exploded-view changes and painted strokes have their own message types. Incoming payloads are bounded, malformed messages are rejected, and silent peers are removed after five seconds. These are client-side implementation rules, not evidence of measured performance across every supported device.
Execution still needs a host boundary
The existing native compiler runs scene-building scripts in the Boa JavaScript engine. Its pinned implementation limits individual ArrayBuffer allocations, but explicitly warns that this is not a general heap ceiling. Other allocations can grow between deadline checks. The code recommends process-level memory limits when deployments accept hostile input. These are existing operating constraints, not new security fixes in the plugin release. It also disables dynamic code evaluation and bounds loop iterations, recursion and stack size, alongside its execution deadline.
Claim check
Sources
- v1.2.0 · Google · 3 Nov
- <xr-live> spatial computing and plugins guide · Google · 2 Nov
- shared-room.ts · Google · 2 Nov
- engine.rs · Google · 21 Oct
- Three-Live · Google · 2 Nov