diff --git a/OPENXR.md b/OPENXR.md index 93aa79b..712b64e 100644 --- a/OPENXR.md +++ b/OPENXR.md @@ -279,8 +279,8 @@ own motion detection still reads them, so a sharp enough turn can read as a shak `khr/simple_controller`: a right pinch is A with the pointer on the hand's aim ray, the left palm-up pinch is + (pause), and in a cockpit race a hand on the wheel holds A and a free hand's pinch is Z; see "Tracked hands" under [Steering wheel and hand -steering](#steering-wheel-and-hand-steering). A bare hand feeds no motion. With `hand_tracking` off -a bare hand presses nothing but +. +steering](#steering-wheel-and-hand-steering). A bare hand feeds no motion; flicking the hands up +plays one shake instead. With `hand_tracking` off a bare hand presses nothing but +. `"gamepad"` keeps the controllers one ordinary gamepad read through PAD as a GameCube controller: A/B → South/East, X/Y → West/North, index triggers → trigger axes, grips → shoulders, thumbsticks @@ -556,6 +556,17 @@ presentation there is no pointer, so the race controls apply throughout the cock has no gesture: choose Automatic drift. The headset panel reads out each hand's source, grasp, hold and pinch under the checkbox, for tuning. +A bare hand feeds no Wii Remote motion: camera-tracked poses are too noisy to differentiate twice, +and turning the wheel would trick and wheelie. Tricks come from a flick instead. Both hands on +the wheel rising together (at least 1.2 m/s on average, 0.6 m/s each, within 0.6 m/s of each +other) or a free bare hand rising at 1.5 m/s makes one; a turn, where one hand rises as the other +drops, never does, nor does a lone hand on the wheel. A rise has to last three samples and cover +5 cm within 150 ms, a pose jumping faster than 5 m/s (tracking coming back) resets it, and +flicks are 0.5 s apart. A flick plays one shake on the remote's accelerometer: 150 ms, so the +guest sees it on at least three of its frames, one cycle up to +2 g and down to the -3.6 g limit, +as Dolphin's emulated shake does. Only the Wii Remote presentation has it (the gamepad has no +shake); `debug.wiicompiled.inject :flick` plays the same shake with or without hands. + **Hands and the separate wheel.** Hands are drawn while hand steering is on: the runtime's own hand mesh where it offers one (`XR_EXT_hand_tracking` and `XR_FB_hand_tracking_mesh`, requested when hand steering or tracked hands are on at launch), otherwise procedural gloves that curl with the @@ -579,8 +590,10 @@ The guest offsets involved (driver, movement, damage, grip frames, bike handle, their world matrices) are PAL `RMCP01` constants listed with the leaf getter or constructor that proves each in `runtime/src/vr/mkw_vr_first_person.cpp`. `mkw_steering_wheel_tests`, `mkw_vr_cockpit_tests` and `mkw_vr_hand_steering_tests` cover the grab model, the seat and wheel -geometry and the hand-off to the game; `gx_fifo_tests` covers the per-draw substitution and the -overlay geometry, and `cockpit_gpu_smoke` its depth test on a real GPU. +geometry and the hand-off to the game, and `mkw_vr_hand_tracking_tests` the tracked hands' rules +(grasp, bare latch, pinch gate, bare-hand buttons, flick and its shake); `gx_fifo_tests` covers the +per-draw substitution and the overlay geometry, joint skinning included, and `cockpit_gpu_smoke` +its depth test on a real GPU. ## Presentation policy diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index f923ab6..ee47aa8 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -534,7 +534,7 @@ Hand steering In the cockpit, squeeze a grip near the steering wheel or handlebar to grab it, and turn it to steer. Releasing both grips gives steering back to the stick. Hand steering by heurazy. Tracked hands - The cockpit hands follow your own. Holding the controllers, the fingers follow their touch sensors. Put the controllers down to drive with bare hands: close a hand on the wheel to hold it, which also holds the gas; pinch with a free hand to use an item; pinch with your left palm facing you to pause. In menus, a right pinch is A. Choose Automatic drift. Needs hand tracking on in the headset\'s settings. + The cockpit hands follow your own. Holding the controllers, the fingers follow their touch sensors. Put the controllers down to drive with bare hands: close a hand on the wheel to hold it, which also holds the gas; pinch with a free hand to use an item; flick your hands up for a trick; pinch with your left palm facing you to pause. In menus, a right pinch is A. Choose Automatic drift. Needs hand tracking on in the headset\'s settings. Lean back angle Tilts the race view back for playing reclined. 0 applies no tilt. diff --git a/docs/quest-port.md b/docs/quest-port.md index 7665866..354ba60 100644 --- a/docs/quest-port.md +++ b/docs/quest-port.md @@ -921,7 +921,7 @@ the app: | `debug.wiicompiled.eye_passes 0` | Replays each eye in one render pass per recorded pass, as before `single_pass_eyes` (`OPENXR.md`); `1` forces the single pass and an empty value restores the setting. Read about once a second, for A/B timing inside one session | | `debug.wiicompiled.foveation <0-3>` | Overrides the foveation level (off, low, medium, high) within one session; an empty value restores the setting. Needs a session launched with foveation on. Read about once a second | | `debug.wiicompiled.fdm 0` | Launches without fragment density maps at all, whatever `foveation` says, which also drops their flag from every pipeline; `1` asks for them even with `foveation = "off"` | -| `debug.wiicompiled.inject :