Search Issue Tracker
By Design
Votes
1
Found in
2017.4.0f1
2017.4.28f1
2018.3.0a1
2019.1.0a1
2019.2.0a1
2019.3.0a1
Issue ID
1172293
Regression
No
HumanPose.bodyPosition accumulates error when Humanoid model is moving by using Root Motion animation
How to reproduce:
1. Open the attached project("TestHumanPosition")
2. Enter Play Mode
Expected result: the red sphere keeps up with the Humanoid model
Actual result: the red sphere lags behind the Humanoid model
Reproducible with: 2017.4.31f1, 2018.4.5f1, 2019.1.13f1, 2019.2.0f1, 2019.3.0a11
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- “Remove Unused Overrides” available on not loaded Scene and throws “ArgumentException: The scene is not loaded” warning
- Adaptive Probe Volume occlusion edge is calculated incorrectly when viewing probes near geometry edges
- Sampling a texture using an HLSL file throws shader errors and the code does not compile
- "Graphics.CopyTexture called with null source texture" error when Base Camera of an Overlay Camera is removed with DX11 Graphics API and Compatibility Mode enabled
- WebGL sends wrong value with large numbers when SendMessage function is used
Resolution Note:
The HumanPose is actually working as intended :
When calling HumanPoseHandler.GetHumanPose(ref humanPose), humanPose.bodyPosition is the global position of the center of mass of the character divided by the avatar human scale (it's a "normalized" position, so to speak).
To have perfectly matching positions in the provided project, all is needed is to mulitply the bodyPosition by the avatar human scale. i.e. replace
debugSphereHumanPose.position = pose.bodyPosition;
by
debugSphereHumanPose.position = pose.bodyPosition * animator.humanScale;
Unfortunately, the computation of bodyPosition is currently poorly documented in the API documentation, I have currently a local change that will improve this documentation.