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
- Out-of-bounds memory access with multiple CanvasRenderers under a Canvas when using Mesh API
- Inspector tries to access file after it was deleted when the file was locked in Inspector window
- Changing Transform values in Search window Inspector loses focus while dragging and stopping mouse without releasing dragging action
- Saving changes on the dirty VFX Graph during the Play mode throws "The referenced script (Unknown) on this Behaviour is missing!" warnings
- VFX Graph Debug Info overlaps the "Initialize" block debug info by default
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.