mirror of
https://github.com/FauxxYT/StreamXR.git
synced 2026-10-22 18:00:38 +02:00
62 lines
3.8 KiB
Markdown
62 lines
3.8 KiB
Markdown
# Hardware notes
|
|
|
|
What has been learned about the headset and controllers StreamXR is built on (the Valve
|
|
Steam Frame with SteamVR, desktop Chrome). For supporting other hardware, see the README's
|
|
["Adding a headset"](../README.md#-adding-a-headset).
|
|
|
|
## Steam Frame
|
|
|
|
- **Start SteamVR before Chrome:** Chromium only looks for a headset when it launches.
|
|
- **Streaming with no game:** the Frame is ready for WebXR once it streams SteamVR itself: in
|
|
the headset, **Streaming Status** → the PC running SteamVR → **Advanced** → **Stream VR
|
|
without game**.
|
|
- **The Frame's own browser:** its built-in Chromium browser has no WebXR yet, so StreamXR runs
|
|
from desktop Chrome on the PC. Once it gets WebXR, StreamXR will be updated to run there
|
|
natively (README roadmap, "as soon as it's possible").
|
|
- The controllers reach Chrome as **`oculus-touch`** (7 buttons, 4 axes), not as a Steam
|
|
Frame profile:
|
|
- Right controller: A reports as **button 4** (play / pause); B, X and Y all report as
|
|
**button 5** (the keyboard, since 0.72.0), so those three work (and light up on the controller
|
|
models) together.
|
|
- Left D-pad: reports as buttons 4 and 5.
|
|
- Stick click: reports as **button 3** (verified on the right stick in 0.47.0; held 3 s
|
|
it's the global reset).
|
|
- Only two face buttons per hand can be told apart.
|
|
- Headset clues reported by WebXR: about 109.5° field of view per eye, 0° canting, IPD about
|
|
69.8 mm, 2644 x 2644 per eye at SteamVR's default resolution (the popup's Details lists
|
|
them).
|
|
- Controller profiles reported (0.49.1): `oculus-touch`, `generic-trigger-squeeze-thumbstick`
|
|
(`xr-standard` mapping, 7 buttons, 4 axes).
|
|
- **No camera passthrough through WebXR** (checked in 0.49.1 with the Arcturus Vision color
|
|
camera module attached): `isSessionSupported('immersive-ar')` is false and a VR session's
|
|
`environmentBlendMode` is `opaque`. SteamVR's own Room View still works over anything.
|
|
(Desktop Chrome doesn't enable OpenXR AR by default, and SteamVR exposes no passthrough to
|
|
OpenXR apps.) It's a missing feature, not a hardware limit: StreamXR is ready for it since
|
|
0.49.2 (the popup's "See your room" switch becomes available by itself once the browser offers
|
|
`immersive-ar`; the session then clears to transparent).
|
|
- WebXR never names the headset, so nothing detects it by name. Don't detect a headset by
|
|
its refresh rate either: it's a user setting.
|
|
- **No controller vibration through WebXR** (checked in 0.73.1): Chrome gives the
|
|
controllers' gamepads neither `hapticActuators` (WebXR's `pulse()`) nor
|
|
`vibrationActuator` (the Gamepad API's), so the hover / click buzz can't work. The
|
|
Vibration switch (Settings → Appearance) is greyed out with a note until a controller offers one, so it
|
|
works by itself if a later Chrome adds it.
|
|
|
|
## Other headsets (reported by users)
|
|
|
|
- **Meta Quest 2** (reported by [u/TehSuperFruitSnack](https://www.reddit.com/user/TehSuperFruitSnack) on Reddit, after 0.88.1): works through SteamVR in desktop Chrome,
|
|
8K videos included. Not tried by the maintainer, and not reported yet: how its buttons map
|
|
(Copy details' `controllers` part would show it) and how it connects to the PC (Link,
|
|
Air Link or another streaming app). Its controllers are drawn as Steam Frame models.
|
|
|
|
## Controller models
|
|
|
|
- `src/core/page/controllers/models.js` is generated from Valve's Steam Frame controller CAD
|
|
by `tools/controller-models/` (it rebuilds byte-identically); the README's "Controller
|
|
models" section has the steps and the license. Don't edit it by hand.
|
|
- Pressed buttons light up and floating icons show what each one does (from
|
|
`src/core/shared/controls.js`). Other controllers are drawn as Steam Frame ones for now;
|
|
per-controller models are on hold.
|
|
- `controllers/config.js` → `fit` aligns the models with your hands, `buttonParts` maps
|
|
button numbers to model parts.
|