Skip to main content

Google XR Blocks: @realitycollective/xrblocks-interactions

warning

Experimental. The XR Blocks pipeline is young and its API still moves. Treat this adapter as a preview and pin your versions.

What it binds

LayerDetail
InputInput.getFrame() ray sources and direct touches, plus XR Blocks' own select events
Hit-testing and movementShared with the three.js adapter, since XR Blocks Scripts are ordinary three.js Object3Ds

Install

npm install @realitycollective/xrblocks-interactions three

Peer dependency: three >= 0.170.0. xrblocks itself declares a peer of three@^0.184, while Meta's IWSDK mandates the super-three@0.181 fork. A bundler resolves a single three per bundle, so this works in practice, but npm's own peer check cannot express it, which is why the Reality Collective workspaces set legacy-peer-deps=true.

Setup

import { connectXRBlocksInteractions } from "@realitycollective/xrblocks-interactions";

class MyScript extends xb.Script {
init() {
this.ix = connectXRBlocksInteractions({ input: xb.input, camera: xb.camera });
this.ix.register({ id: "button", behaviours: [{ kind: "press" }] }, buttonMesh);
}
update() {
this.ix.update(xb.getDeltaTime());
}
}

What it adds over the core

Nothing beyond the three.js hit-testing and transform machinery it reuses; its own code is limited to translating XR Blocks' pooled per-frame structs into the shared input snapshot, copying every value out immediately since XR Blocks reuses those objects.

What it cannot do on this host, and why

It cannot fire haptics: xrblocks v0.20.0 has no haptics API, so capabilities.haptics is always false and a haptic request is reported but never played. It cannot offer presence either: XR Blocks owns its controller and hand visuals and exposes no way to hide them.

Presence and haptics

Both are unavailable on this host, for the reasons above. capabilities.presence and capabilities.haptics are always false.

Testing it

Covered against a structural fake of the Input.getFrame() shape, so the provider's parsing is exercised without the xrblocks package installed.

Live demo

webxr-interactions.pages.dev, the full station set, mouse-capable on desktop, with a VR button for headsets.

More information