You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* New VREvent_DesktopMightBeVisible: Sent when any known desktop related overlay is visible
* New VREvent_DesktopMightBeHidden: Sent when all known desktop related overlays are hidden
IVRCompositor:
* Added SubmitWithArrayIndex.
IVRDisplayComponent:
* Add documentation on the new ComputeInverseDistortion method.
IVRChaperone:
* Amend comments about GetPlayAreaRect to the correct description of its behavior.
* Add documentation on the chaperone json file.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 8643635]
`ComputeInverseDistortion` is called by the runtime to get the result of the inverse distortion function for the specified eye,
1179
+
channel and uv.
1180
+
1181
+
Drivers **may** return false from this method to indicate that the runtime should infer an estimate from
1182
+
the result returned by `IVRDisplayComponent::ComputeDistortion`.
1183
+
1184
+
Returning true from method indicates to the runtime that it should not try to estimate the inverse, and instead use the
1185
+
values provided by the driver.
1186
+
1187
+
* `HmdVector2_t *pResult` - Driver should write into this with the result for the specified UV.
1188
+
* `EVREye eEye` - The eye to get the distortion for. The possible options are:
1189
+
* `Eye_Left` - The left eye.
1190
+
* `Eye_Right` - The right eye.
1191
+
* `uint32_t unChannel` - Which channel is requested. 0 for red, 1 for blue, 2 for green.
1192
+
* `float fU` - The current U coordinate.
1193
+
* `float fV` - The current V coordinate.
1194
+
1174
1195
#### IVRDriverDirectModeComponent
1175
1196
1176
1197
`IVRDriverDirectModeComponent` is used for drivers that implement direct mode entirely on their own without allowing the
@@ -3486,6 +3507,82 @@ will be set in the override property container.
3486
3507
*`legacy_buttons` - `[ 0, 1, 2, 32, 33 ]`
3487
3508
*`legacy_axis` - `[ 1, 3, 0, 0, 0 ]`
3488
3509
3510
+
## Chaperone
3511
+
3512
+
The SteamVR Chaperone system provides visible boundaries for users when inside VR, which should be
3513
+
shown at the edges of the play space to avoid collisions with other objects.
3514
+
3515
+
The chaperone system is also responsible for keeping track of the relation between the driver's raw
3516
+
tracking space (the tracking space in which the driver provides poses to the runtime through
3517
+
`IVRServerDriverHost::TrackedDevicePoseUpdate`) and the seated and standing universe origins that applications
3518
+
query poses relative to.
3519
+
3520
+
A description of each of the universes is below, along with their corresponding json property:
3521
+
3522
+
* `TrackingUniverseSeated (seated)` - Useful for applications that need to render content relative to the user's resting head position, such as presenting a cockpit view in simulators.
3523
+
* `TrackingUniverseStanding (standing)` - This is some point on the floor of the tracking space, where y = 0 **must** always be the floor in this tracking space. Useful for applications that want to render content that should scale to the user's real world setup, such as placing the floor at the same location.
3524
+
* "Setup standing (setup_standing2)" - An origin from the raw tracking space. This is some point on the floor which is the center of the play space. The universe is not visible to applications, but the driver **may** choose to use it to break the dependency between where the standing origin should be, and where SteamVR should place the collision bounds relative to. It is optional for the driver to provide this, and if ommitted, it will default to being the same as the standing universe.
3525
+
3526
+
Any driver that provides its own tracking solution **should** provide its own chaperone setup.
3527
+
3528
+
A driver provides its chaperone setup as a json file. A driver **may** either provide an absolute path
3529
+
to the chaperone json file it wishes to present to SteamVR, or provide a json string by setting
3530
+
the `Prop_DriverProvidedChaperoneJson_String` property of the HMD container.
3531
+
3532
+
A driver **may** provide multiple "universes", where (in this context), a universe represents a different
3533
+
location in the real world that requires a separate chaperone setup, such as switching to a different room.
3534
+
3535
+
SteamVR only allows one chaperone universe to be active at a time. A driver **must** specify the
3536
+
universe that it wishes to use by setting the `Prop_CurrentUniverseId_Uint64` property to the universe id
3537
+
it wises to use (more details below).
3538
+
3539
+
The provided json **must** be valid, with no trailing commas, but **may** contain comments prefixed by `//`.
3540
+
3541
+
* `json_id` - **required**. Set to `chaperone_info`.
3542
+
* `version` - **required**. Current chaperone json version is `5`.
3543
+
* `time` - **required**. The ISO timestamp when the chaperone file was last modified.
3544
+
* `universes` - A json array containing json objects that contain:
3545
+
* `collision_bounds` - An array that contains sets of polygons (An array that **should**
3546
+
contain arrays that contains arrays of 4 elements (the polygons),
3547
+
where each element is an array that contains the x,y,z positions of each vertex).
3548
+
Collision bounds are relative to the **setup standing** play space.
3549
+
Drivers **should** provide 4 vertices per face they are drawing. Drivers **should**
3550
+
provide vertices that are all on the same vertical plane as eachother.
3551
+
* `play_area` - An array that contains two values: `[width, height]` of the play space.
3552
+
The width and height are driver-defined, but **should** represent largest rectangle that
3553
+
can represent the playable area.
3554
+
* `<seated/standing/setup_standing2>` - A json object that represents the relation between the driver's raw
3555
+
tracking space and the specified universe origin. Drivers **must** provide seated and standing relations,
3556
+
but **may** omit the setup standing universe. In this case, the setup standing universe will be
3557
+
set to what was set for the standing property (see next paragraph). Each **must** contain the following properties:
3558
+
* `translation` - The position offset between the raw origin and the universe's origin
3559
+
* `yaw` - The rotation on the x,z plane between the raw space and universe's space
3560
+
* `universeID` - The id of the universe. This **must** be a uint32 number and **must** be
3561
+
unique for each different universe.
3562
+
3563
+
The driver **must** either:
3564
+
1. Set both the setup standing and standing origins.
3565
+
* In this case, the setup standing origin is treated as the center of the play area. The standing origin is free to be placed elsewhere
3566
+
2. Set only the standing origin.
3567
+
* In this case, the standing origin is treated as the center of the play area.
3568
+
3569
+
### Recentering
3570
+
3571
+
The recentering feature in SteamVR allows the user to update the standing and seated universe positions
3572
+
while inside SteamVR. This can be useful to reposition your height in a cockpit, or to reposition
3573
+
room-scale content relative to a different real-world position.
3574
+
3575
+
Initially, the transforms for the standing and seated universes are set by the driver provided chaperone file.
3576
+
When a user requests a recenter, SteamVR updates the standing and seated transforms it holds in memory,
3577
+
and will attempt to update the seated universe (and only seated universe) in the chaperone file if
3578
+
the driver provided one, and that file is writeable. SteamVR **will not** attempt to modify the standing transform.
3579
+
3580
+
If a driver wants to configure the way recentering is handled,
3581
+
it **may** configure the `Prop_Driver_RecenterSupport_Int32` property with one of the following values:
3582
+
*`k_EVRDriverRecenterSupport_SteamVRHandlesRecenter` - Default. SteamVR shows a recenter but and will do the above when a user requests a recenter.
3583
+
*`k_EVRDriverRecenterSupport_NoRecenter` - Recentering is not supported and no recenter button will be shown in the UI.
3584
+
*`k_EVRDriverRecenterSupport_DriverHandlesRecenter` - A recenter button is shown and an event **will** be triggered for the driver to handle the recenter, but SteamVR will do no additional processing.
3585
+
3489
3586
## Render Models
3490
3587
3491
3588
A render model is a 3D model that represents a device in VR. A render model **should** provide a graphical
0 commit comments