Fix support for external trackers via VMC#1827
Conversation
4fb7572 to
abcb6e3
Compare
|
The first few commits are in PR #1840 |
71f1cac to
a5310e9
Compare
|
Alright this should be just about everything needed for basic external tracker support via VMC. There are a few things I'd change about the UI still: Since IK Solver is now properly integrated (#142), tracking arms from controllers should now be deprecated IMO. The IK Solver should be able to handle trackers on any body part, though not optimally yet:
Ideally, there'd be configuration in the GUI whether a given tracker needs positional calibration in IKConstraints.kt or not. Currently, an HMD on the head and hand-trackers are assumed to be aligned properly, all other trackers have a rudimentary offset calibration on reset (untested by me). Finally, I'd consider not squashing some of these commits as they're quite varied and tracing back the reasoning for each of them would be painful without the context of the messages. |
Explicitly control skeleton height via head pos or estimation Apply horizontal skeleton position to grid only to keep skeleton centered This gives full positional feedback without modifying the existing visualisation behaviour
This misrepresented true yaw rotation used internally in the server Very relevant if position is displayed, resulting in inconsistent visualisation Intention likely was to prevent visual jumps on a reset - only relevant for mocap mode without external head rotation - if desired in the future, should be done server-side, just for mocap-mode
For accurate vertical positioning of a target VRM, its model is required But when it is not provided, it should still work with the default scale This patch doesn't scale the skeleton when the VRM height isn't provided
Whether the VMC label is human-readable may depend on the source
For OSCRouter and VRCOSC this is undesired, final application should handle timetags Since these share the OSCPortIn with VMCHandler, this needs to dispatch immediately as well Considering most timetags for tracking are in the past, this is fine Any timetags for tracking data in the future are likely to be errors anyway
Fleshed out rescaling of VMC output based on VRM
Added option to rescale external tracking to avatar scale
- rescales all tracking data ("/Pos") routed through OSC router
Shoulders now always get updated with best guess Also use shoulder tracker in absence of any other arm tracker (unlikely)
It is odd that upper-chest is seemingly mishandled But if it is just assigned normally, VNyan will apply double yaw rotation This should be better documented
Fix playspace setting being only visible when headtracker is used - The whole point of it is to enable mocap mode Reordered panels to make more sense Resized some panels to fit in one view
This PR intends to fix the existing support for external tracking via VMC.
Known Issues:
Requires SlimeVR/SolarXR-Protocol#213