mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 15:29:32 +02:00
fix calculation of walk motor for HMD
This commit is contained in:
parent
8c55476c65
commit
3ec9640ea1
1 changed files with 7 additions and 2 deletions
|
@ -1586,9 +1586,14 @@ void MyAvatar::updateMotors() {
|
||||||
motorRotation = getMyHead()->getHeadOrientation();
|
motorRotation = getMyHead()->getHeadOrientation();
|
||||||
} else {
|
} else {
|
||||||
// non-hovering = walking: follow camera twist about vertical but not lift
|
// non-hovering = walking: follow camera twist about vertical but not lift
|
||||||
// so we decompose camera's rotation and store the twist part in motorRotation
|
// we decompose camera's rotation and store the twist part in motorRotation
|
||||||
|
// however, we need to perform the decomposition in the avatar-frame
|
||||||
|
// using the local UP axis and then transform back into world-frame
|
||||||
|
glm::quat orientation = getOrientation();
|
||||||
|
glm::quat headOrientation = glm::inverse(orientation) * getMyHead()->getHeadOrientation(); // avatar-frame
|
||||||
glm::quat liftRotation;
|
glm::quat liftRotation;
|
||||||
motorRotation = getOrientation();
|
swingTwistDecomposition(headOrientation, Vectors::UNIT_Y, liftRotation, motorRotation);
|
||||||
|
motorRotation = orientation * motorRotation;
|
||||||
}
|
}
|
||||||
const float DEFAULT_MOTOR_TIMESCALE = 0.2f;
|
const float DEFAULT_MOTOR_TIMESCALE = 0.2f;
|
||||||
const float INVALID_MOTOR_TIMESCALE = 1.0e6f;
|
const float INVALID_MOTOR_TIMESCALE = 1.0e6f;
|
||||||
|
|
Loading…
Reference in a new issue