Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XRBodyTracker::JOINT_<XXXX>_SHOULDER is broken ('Adjustment' mapping bugged) #205

Open
The-Cyber-Captain opened this issue Sep 15, 2024 · 2 comments · May be fixed by #219
Open

XRBodyTracker::JOINT_<XXXX>_SHOULDER is broken ('Adjustment' mapping bugged) #205

The-Cyber-Captain opened this issue Sep 15, 2024 · 2 comments · May be fixed by #219

Comments

@The-Cyber-Captain
Copy link
Contributor

The-Cyber-Captain commented Sep 15, 2024

Tested versions
plugin v3.0.1
Editor 4.4-dev1, 4.3-stable

Issue description

Was having some trouble getting good results on a humanoid rig, so stripped things back today and hacked together a scene which just spits out marker meshes for all the (75) joints found in XRServer.get_trackers(32).get("/user/body_tracker"). It showed JOINT_RIGHT_SHOULDER and JOINT_LEFT_SHOULDER behaving very weirdly... as if their order of rotation-translation was messed up or something?

Digging into the specs* and openxr_fb_body_tracking_extension_wrapper.cpp, I see we don't map the scapula - which makes sense enough - but then ALSO that there's an adjustment made to those very same two joints: JOINT__SHOULDER? Suspicious. Then came across a magic number (-0.07) and couldn't get my head around how the adjustment is actually meant to work beyond that, I'm afraid :-/

I'll be first to admit... issue could easily be on Meta's side, my headset, even my big bushy beard getting in the way! Or just my imagination. However, don't seem to have any tracking issues of the ilk on any other platforms, and all signs point to this as the biggest anomaly on the rigging I was attempting.

Are we confident the 'adjustment' of shoulder_offset, along with the mapped starting quaternions, are working as intended?

*https://developers.meta.com/horizon/documentation/native/android/move-ref-body-joints
https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#_conventions_of_body_joints

@The-Cyber-Captain
Copy link
Contributor Author

Yep. Definitely something off. It appears we can force a shoulders worse case scenario by tracking a character / avatar at 45deg to ref. IE, shoulder placement may seem passable when avatar basis matches XROrigin / World, as the green capsules indicate here.
tracksOK

But reference the world 45deg 'clockwise', and you find both shoulders appearing on the same side of the torso... whereas all the non-adjusted trackers - where the vendor plugin simply maps them 1:1 - are where they should be!

tracksBAD
It's a tricky little sneaky chestnut, for sure.

@The-Cyber-Captain
Copy link
Contributor Author

Hopefully this vid now makes sense?
https://youtu.be/JLssQrFttUo

@The-Cyber-Captain The-Cyber-Captain changed the title 'Adjustment' mapping for XRBodyTracker::JOINT_<XXXX>_SHOULDER appears borked? XRBodyTracker::JOINT_<XXXX>_SHOULDER is broken ('Adjustment' mapping bugged) Oct 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant