Examples / vr-room

vr-room.json

targets v0.35.0 23 entities 17 schemas

A stage with a floor polygon, a headset (IPD, refresh, per-eye pixels), and two off-axis eyes on the head. The left controller carries grip and aim, a haptic click, and bindings for trigger and squeeze. A partial left hand (wrist through index tip) shows the joint parent chain. A floor pin keeps a persistentId. Sessions and swapchains are not in the file - docs/vr.md.

Speaks

rig.input.axes · rig.input.binding · rig.meta.named · rig.spatial.camera · rig.spatial.relationship · rig.spatial.transform · rig.spatial.vertex · rig.vr.anchor · rig.vr.controller · rig.vr.eye · rig.vr.hand · rig.vr.haptic · rig.vr.headset · rig.vr.joint · rig.vr.pose · rig.vr.space · rig.vr.tracker

Document

Validates under npm run check — raw file · open in RigPlayer — drop it in, press play, remix it, share the link.

{
  "rig": "0.35.0",
  "document": {
    "title": "VR room",
    "defaultUnit": "m"
  },
  "entities": [
    {
      "id": "world",
      "components": {
        "rig.meta.named": {
          "name": "World",
          "stableId": "world"
        },
        "rig.spatial.vertex": {}
      }
    },
    {
      "id": "stage",
      "components": {
        "rig.meta.named": {
          "name": "Stage",
          "stableId": "stage"
        },
        "rig.spatial.relationship": {
          "parent": "world"
        },
        "rig.vr.space": {
          "reference": "stage",
          "bounds": [
            [
              -1.5,
              -1.5
            ],
            [
              1.5,
              -1.5
            ],
            [
              1.5,
              1.5
            ],
            [
              -1.5,
              1.5
            ]
          ]
        }
      }
    },
    {
      "id": "headset",
      "components": {
        "rig.meta.named": {
          "name": "Headset",
          "stableId": "headset"
        },
        "rig.vr.headset": {
          "refreshHz": 90,
          "ipdMetres": 0.063,
          "eyeWidth": 1440,
          "eyeHeight": 1600,
          "blend": "opaque"
        }
      }
    },
    {
      "id": "head",
      "components": {
        "rig.meta.named": {
          "name": "Head",
          "stableId": "head"
        },
        "rig.spatial.relationship": {
          "parent": "world"
        },
        "rig.spatial.transform": {
          "position": [
            0,
            1.6,
            0
          ]
        },
        "rig.vr.tracker": {
          "role": "head",
          "device": "headset"
        }
      }
    },
    {
      "id": "eye-left",
      "components": {
        "rig.meta.named": {
          "name": "Left eye",
          "stableId": "eye-left"
        },
        "rig.spatial.relationship": {
          "parent": "head"
        },
        "rig.spatial.transform": {
          "position": [
            -0.0315,
            0,
            0
          ]
        },
        "rig.vr.eye": {
          "side": "left",
          "headset": "headset"
        },
        "rig.spatial.camera": {
          "nearClip": 0.05,
          "farClip": 100,
          "leftDegrees": -50,
          "rightDegrees": 42,
          "upDegrees": 48,
          "downDegrees": -50
        }
      }
    },
    {
      "id": "eye-right",
      "components": {
        "rig.meta.named": {
          "name": "Right eye",
          "stableId": "eye-right"
        },
        "rig.spatial.relationship": {
          "parent": "head"
        },
        "rig.spatial.transform": {
          "position": [
            0.0315,
            0,
            0
          ]
        },
        "rig.vr.eye": {
          "side": "right",
          "headset": "headset"
        },
        "rig.spatial.camera": {
          "nearClip": 0.05,
          "farClip": 100,
          "leftDegrees": -42,
          "rightDegrees": 50,
          "upDegrees": 48,
          "downDegrees": -50
        }
      }
    },
    {
      "id": "gaze",
      "components": {
        "rig.meta.named": {
          "name": "Gaze",
          "stableId": "gaze"
        },
        "rig.spatial.relationship": {
          "parent": "head"
        },
        "rig.vr.tracker": {
          "role": "gaze",
          "index": 0
        }
      }
    },
    {
      "id": "waist",
      "components": {
        "rig.meta.named": {
          "name": "Waist",
          "stableId": "waist"
        },
        "rig.spatial.relationship": {
          "parent": "world"
        },
        "rig.spatial.transform": {
          "position": [
            0,
            1,
            0
          ]
        },
        "rig.vr.tracker": {
          "role": "waist"
        }
      }
    },
    {
      "id": "left-controller",
      "components": {
        "rig.meta.named": {
          "name": "Left controller",
          "stableId": "left-controller"
        },
        "rig.spatial.relationship": {
          "parent": "world"
        },
        "rig.spatial.transform": {
          "position": [
            -0.25,
            1.2,
            -0.35
          ]
        },
        "rig.vr.controller": {
          "hand": "left",
          "profile": "oculus-touch"
        },
        "rig.vr.tracker": {
          "role": "left-hand"
        },
        "rig.vr.haptic": {
          "amplitude": 0.4,
          "durationSeconds": 0.02,
          "frequencyHz": 160
        }
      }
    },
    {
      "id": "left-grip",
      "components": {
        "rig.meta.named": {
          "name": "Left grip",
          "stableId": "left-grip"
        },
        "rig.spatial.relationship": {
          "parent": "left-controller"
        },
        "rig.vr.pose": {
          "kind": "grip"
        }
      }
    },
    {
      "id": "left-aim",
      "components": {
        "rig.meta.named": {
          "name": "Left aim",
          "stableId": "left-aim"
        },
        "rig.spatial.relationship": {
          "parent": "left-controller"
        },
        "rig.spatial.transform": {
          "position": [
            0,
            0,
            -0.05
          ]
        },
        "rig.vr.pose": {
          "kind": "aim"
        }
      }
    },
    {
      "id": "left-hand",
      "components": {
        "rig.meta.named": {
          "name": "Left hand",
          "stableId": "left-hand"
        },
        "rig.spatial.relationship": {
          "parent": "world"
        },
        "rig.spatial.transform": {
          "position": [
            -0.22,
            1.18,
            -0.32
          ]
        },
        "rig.vr.hand": {
          "side": "left"
        }
      }
    },
    {
      "id": "wrist",
      "components": {
        "rig.meta.named": {
          "name": "Wrist",
          "stableId": "wrist"
        },
        "rig.spatial.relationship": {
          "parent": "left-hand"
        },
        "rig.vr.joint": {
          "name": "wrist",
          "radius": 0.02
        }
      }
    },
    {
      "id": "palm",
      "components": {
        "rig.meta.named": {
          "name": "Palm",
          "stableId": "palm"
        },
        "rig.spatial.relationship": {
          "parent": "wrist"
        },
        "rig.spatial.transform": {
          "position": [
            0,
            0,
            -0.02
          ]
        },
        "rig.vr.joint": {
          "name": "palm",
          "radius": 0.025
        }
      }
    },
    {
      "id": "index-metacarpal",
      "components": {
        "rig.meta.named": {
          "name": "Index metacarpal",
          "stableId": "index-metacarpal"
        },
        "rig.spatial.relationship": {
          "parent": "wrist"
        },
        "rig.spatial.transform": {
          "position": [
            0.02,
            0,
            -0.02
          ]
        },
        "rig.vr.joint": {
          "name": "index-metacarpal",
          "radius": 0.012
        }
      }
    },
    {
      "id": "index-proximal",
      "components": {
        "rig.meta.named": {
          "name": "Index proximal",
          "stableId": "index-proximal"
        },
        "rig.spatial.relationship": {
          "parent": "index-metacarpal"
        },
        "rig.spatial.transform": {
          "position": [
            0,
            0,
            -0.04
          ]
        },
        "rig.vr.joint": {
          "name": "index-proximal",
          "radius": 0.01
        }
      }
    },
    {
      "id": "index-intermediate",
      "components": {
        "rig.meta.named": {
          "name": "Index intermediate",
          "stableId": "index-intermediate"
        },
        "rig.spatial.relationship": {
          "parent": "index-proximal"
        },
        "rig.spatial.transform": {
          "position": [
            0,
            0,
            -0.03
          ]
        },
        "rig.vr.joint": {
          "name": "index-intermediate",
          "radius": 0.009
        }
      }
    },
    {
      "id": "index-distal",
      "components": {
        "rig.meta.named": {
          "name": "Index distal",
          "stableId": "index-distal"
        },
        "rig.spatial.relationship": {
          "parent": "index-intermediate"
        },
        "rig.spatial.transform": {
          "position": [
            0,
            0,
            -0.025
          ]
        },
        "rig.vr.joint": {
          "name": "index-distal",
          "radius": 0.008
        }
      }
    },
    {
      "id": "index-tip",
      "components": {
        "rig.meta.named": {
          "name": "Index tip",
          "stableId": "index-tip"
        },
        "rig.spatial.relationship": {
          "parent": "index-distal"
        },
        "rig.spatial.transform": {
          "position": [
            0,
            0,
            -0.02
          ]
        },
        "rig.vr.joint": {
          "name": "index-tip",
          "radius": 0.006
        }
      }
    },
    {
      "id": "table-corner",
      "components": {
        "rig.meta.named": {
          "name": "Table corner",
          "stableId": "table-corner"
        },
        "rig.spatial.relationship": {
          "parent": "stage"
        },
        "rig.spatial.transform": {
          "position": [
            0.4,
            0,
            -0.8
          ]
        },
        "rig.spatial.vertex": {},
        "rig.vr.anchor": {
          "persistentId": "table-corner"
        }
      }
    },
    {
      "id": "hands",
      "components": {
        "rig.meta.named": {
          "name": "Hands",
          "stableId": "hands"
        },
        "rig.input.axes": {
          "leftTrigger": 0.2,
          "leftGrip": 0.5
        }
      }
    },
    {
      "id": "bind-trigger",
      "components": {
        "rig.input.binding": {
          "control": "left-trigger",
          "device": "vr",
          "index": 0,
          "code": "trigger"
        }
      }
    },
    {
      "id": "bind-squeeze",
      "components": {
        "rig.input.binding": {
          "control": "left-grip",
          "device": "vr",
          "index": 0,
          "code": "squeeze"
        }
      }
    }
  ]
}