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
- Mono Windows Builds don't produce full log callstacks when generating logs
- AssetBundles fail to load when running in Built Players for Mobile Devices
- UI elements with text gets bigger and grey when Player window is moved to another screen with different resolution
- System name accepts multiline text but crops it on confirmation, duplicates input, and shrinks the field when empty
- UI element scale and position are wrong in project build when DRS is changed with HDR and Software Dynamic Resolution enabled
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.