Before entering XR, hold the right arm forward with the palm facing down.
Keep the left hand behind the back so it is not initially tracked.
Enter XR.
Observe the avatar’s right hand.
Then bring the left hand into view in the same pose as the right hand.
Observed result:
The avatar’s right palm is initialized with the wrong orientation. In our case it faces left instead of down.
When the left hand starts tracking later and is brought into the same pose, the avatar’s left hand is oriented correctly.
Expected result:
Both hands should produce the same avatar orientation for the same real-world pose, regardless of whether the hand was already visible at XR entry or started tracking later.
What workarounds we already tried without success:
Delaying avatar setup or changing setup order around XR/session entry
Waiting for both hands before attaching the avatar / body tracking
Rebinding or rearming tracking after hand visibility changes
Wrist-specific orientation / aim corrections
Forearm-roll / chain-level correction attempts
Session-local per-side roll offset calibration ideas
Per-side delayed arm activation based on hand-tracking stability
If you could take a look when convenient, we would appreciate it. If this is ultimately a Meta Quest tracking/runtime issue rather than Babylon.js retargeting, guidance on that would also help so we can report it to Meta with the right framing.
Thanks for the quick reply. I tested the fix and it seemed better now, but I noticed that the avatar’s hand goes upside down (a 180-degree roll offset) if I keep my palm up when I enter XR. The same thing happens if the left palm points left at the start or the right palm points right.
Just bumping this thread. Regarding the second issue, I wanted to make sure it didn’t get missed since I haven’t heard back yet. Thanks for looking into it!
No errors in the console. Except the unrelated GL_INVALID_OPERATION?
logger.ts:107 BJS - [09:04:38]: Babylon.js v9.10.1 - WebGL2
index.js:52 Loading rigged character…
index.js:52 WebXR body tracking enabled.
Model: HVGirl.glb (Mixamo rig)
Put on a headset that supports ‘body-tracking’
(e.g. Meta Quest 3), and press ‘Enter VR’.
The avatar will mirror your body pose.
monaco-DbnHoJcc.js:1030 [Violation] ‘requestIdleCallback’ handler took 62ms
babylon.js?t=1780560326366:1 [Violation] ‘requestAnimationFrame’ handler took 242ms
/?snapshot=refs/pull/18530/merge#0FOISU#2:1 [.WebGL-0x7400767e00]GL ERROR :GL_INVALID_OPERATION : glFramebufferTexture2DMultisample: ← error from previous GL command
index.js:52 Body tracking started.
index.js:52 Body tracking ended.