THREE.JS / WEBXR + ATTACHMENT OWNERSHIP

Grab the shapes.

The pinned XR dragging example couples a WebGLRenderer, OrbitControls, a shadowed six-metre floor, 50 source-shaped objects across five geometry families, two controller rays and grips, XRControllerModelFactory, depth-sensing negotiation, and the attach/detach drag path.

Initializing—

Preparing the deterministic object field, controllers, and renderer…

controller 1 ready
controller 2 ready
backend
—
objects
—
geometries
—
controllers
—
selected
—
hovered
—
OrbitControls
—
depth sensing
—
frames
0
XR
—
sample avg / p95
—
state
—

Derived from the pinned webxr_xr_dragging.html source. This route preserves the official WebGLRenderer, OrbitControls, XRButton depth-sensing request, XRControllerModelFactory, controller ray/highlight, attach/detach ownership, 50-object/five-geometry field, and lifecycle controls. Desktop grabs and the visible XR button are inspectable references, not immersive-session proof; exact page/pixel presentation, native controller poses, headset/device matrices, performance generalization, and whole-example fidelity remain separate.