Schemas / Other

rig.vr.controller

v1.0.0 · stable maturity: draft 3 fields 0 required

Fields

FieldTypeMeaning
player int optional Optional. Player index (0-based); absent = 0
hand enumleft · right · none optional Optional. left, right, none. Absent = none
profile string optional Optional. Interaction profile token the host understands

A held input device. Format when present.

Pose of the device is rig.spatial.transform. Grip and aim are child rig.vr.pose entities. Buttons, triggers, and sticks are rig.input.binding device vr into rig.input.buttons and rig.input.axes. A pulse is rig.vr.haptic on this entity.

Well-known profile tokens: khr-simple, generic-trigger-squeeze-thumbstick, oculus-touch, valve-index, microsoft-motion, htc-vive. Any other string is a profile that host implements. An unknown profile is kept; the host still maps the generic binding codes it knows.

Binding index 0 is the left controller and 1 is the right controller of that player. hand none uses index as written (a gamepad).

The tracked pose for this device is a rig.vr.tracker whose device points here, or this entity's own transform when it is the pose.

JSON Schema

Resolves at https://rig.works/schemas/rig.vr.controller.schema.json — raw file.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rig.works/schemas/rig.vr.controller.schema.json",
  "title": "rig.vr.controller",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "player": {
      "$ref": "./_defs.schema.json#/$defs/int"
    },
    "hand": {
      "type": "string",
      "enum": [
        "left",
        "right",
        "none"
      ]
    },
    "profile": {
      "$ref": "./_defs.schema.json#/$defs/string"
    }
  },
  "x-rig-maturity": "draft"
}

Seen in

vr-room.json