fix(webxr): decouple replay from live input and preserve calibration - #1063
Draft
yanziz-nvidia wants to merge 3 commits into
Draft
fix(webxr): decouple replay from live input and preserve calibration#1063yanziz-nvidia wants to merge 3 commits into
yanziz-nvidia wants to merge 3 commits into
Conversation
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueComment |
yanziz-nvidia
force-pushed
the
yanziz/fix-cross-session-replay-calibration
branch
from
September 11, 2026 22:30
f75ba76 to
05f6fd5
Compare
Signed-off-by: Yanzi Zhu <yanziz@nvidia.com>
Signed-off-by: Yanzi Zhu <yanziz@nvidia.com>
yanziz-nvidia
force-pushed
the
yanziz/fix-cross-session-replay-calibration
branch
from
September 11, 2026 23:48
48a51f7 to
89d29b7
Compare
Signed-off-by: Yanzi Zhu <yanziz@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
JSON replay stops producing motion when live hand or controller input sources disappear. The recorder substitutes recorded poses and controls but depends on live device objects, while CloudXR maintains its active-device sets from session events. This prevents benchmarks from replaying recorded motion without physical hands or connected controllers.
Provide recorded hand and controller sources, joint/grip/aim spaces, and matching
inputsourceschangeevents through the CloudXR tracking adapter. Both replay pacing modes work with no live devices at startup and continue through live tracking loss or controller disconnects. Recorded tracking gaps and device switches remain discrete. Rendering and UI interaction continue using the original browser frame.New version 1 recordings store optional controller profiles per frame so CloudXR selects the recorded device's button/axis mapping. Older JSON remains compatible and uses the SDK's generic controller mapping when profile data is absent; the original device-specific mapping cannot be recovered from those files. Hand gamepads are distinguished from controller gamepads.
Also make replay alignment explicit and preserve it across known origin resets:
No new replay parameter is required. An active, visible XR session with a valid viewer pose and a CloudXR connection is still required. Calibration assumes the same physical headset pose; it cannot infer world alignment from an arbitrary headset position.
Validation
npm test -- --runInBand: 8 suites, 137 tests passed, using the compatible React dependencies onmain.npm run build: passed with three webpack asset-size/performance warnings, including local WebXR assets.SKIP=check-copyright-year pre-commit run --all-files: passed.PerformanceCanvasImage.tsx:260ref-type error. The production build does not perform full typechecking.Regression coverage includes absent devices, live connection changes, recorded gaps, profile changes, hand/controller switches, legacy JSON, explicit calibration, translation and rotation resets, paused timing, stopped replay, and interrupted-recording UI state. Physical headset/server benchmark validation remains outstanding.
Checklist