--- generated_by: gdlink-build generated_at: 2026-06-23T12:34:28Z do_not_edit: true title: XR Interaction brick_type: executor tier: Pro generated: true --- # XR Interaction **Category:** Executor **Tier:** Pro ## Purpose Handles all hand-to-object and hand-to-UI interactions: grabbing, throwing, poking, UI pointing, and AR anchor management. ## Visual Reference ```{raw} html
As added to your scene
XR Interaction brick as it appears in the GDLink editor
``` ## Runtime Behavior **Inputs** - **Activate** (Boolean): Triggers the selected interaction. **Properties** **Core (always visible)** - **interaction_mode** (Enum, default `"Grab"`): `Grab`, `Release/Throw`, `Poke`, `UI Pointer`, `Anchor` **Grab Mode (`visible_if: {interaction_mode: "Grab"}`)** - **grab_mode** (Enum, default `"Snap"`): `Snap` (freeze and drive the object's world transform from the hand/controller), `Physics Joint` (6DOF joint for weighted movement) - **precision_grab** (Bool, default `true`): Maintain relative offset between hand and object on contact. - **max_weight** (Float, default `10.0`): Objects heavier than this are rejected (absorbed from demoted Grab Gate). - **lock_check** (Bool, default `true`): Prevent dual-hand conflicts on same object (absorbed from demoted Grab Gate). - **max_grab_distance** (Float, default `0.2`): Maximum hand-to-object distance to initiate grab (absorbed from demoted Interaction Gate). - **snap_zone** (Bool, default `false`): If true, the grab target is a snap zone — object snaps to zone's transform on release nearby. - **Fixture convention**: Pickable objects in group `xr_twist_fixture` are constrained fixtures. They remain frozen at their authored origin and rotate around their local grip axis while held instead of being translated or thrown. **Release/Throw Mode (`visible_if: {interaction_mode: "Release/Throw"}`)** - **velocity_source** (Enum, default `"Tracker"`): `Tracker` (current frame velocity), `History` (averaged over last N frames) - **throw_multiplier** (Float, default `1.0`): Scale factor on release velocity. ... ```{raw} html
Generated UI Mockup — showing expanded properties
XR Interaction
-
x
Name:
Label this brick...
Mode:
Grab
Delay:
0.0
v
Grab
Snap
Precision
Max Weight
10.0
v
Max Dist
0.2
v
Velocity
Tracker
Throw Mult
1.0
v
Finger
Index
Depth (m)
0.01
v
Source
Right Hand
Event
Left Click
Operation
Create
Name
v
Lock Check
Snap Zone
``` ## Properties | Property | Type | Default | Notes | |---|---|---|---| | Mode | option | Grab | Interaction type | | Grab | option | Snap | Snap: instant reparent. Physics Joint: 6DOF joint | | Precision | bool | True | Maintain offset between hand and object | | Max Weight | float | 10.0 | Objects heavier than this are rejected | | Max Dist | float | 0.2 | Maximum hand-to-object distance to initiate | | Lock Check | bool | True | Prevent dual-hand conflicts on same object | | Snap Zone | bool | False | Target is a snap zone (object snaps on release nearby) | | Velocity | option | Tracker | Current frame or averaged over N frames | | Throw Mult | float | 1.0 | Scale factor on release velocity | | Delay | float | 0.0 | Seconds to wait before applying velocity | | Finger | option | Index | Finger for poke interaction | | Depth (m) | float | 0.01 | Activation penetration depth | | Source | option | Right Hand | Controller for UI ray | | Event | option | Left Click | Input event to inject | | Operation | option | Create | Anchor lifecycle operation | | Name | string | | Anchor identifier |