diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index f48104235d..62772c6933 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1214,7 +1214,10 @@ void MyAvatar::updateMotors() { if (_characterController.getState() == CharacterController::State::Hover) { motorRotation = getHead()->getCameraOrientation(); } else { - motorRotation = getOrientation(); + // non-hovering = walking: follow camera twist about vertical but not lift + // so we decompose camera's rotation and store the twist part in motorRotation + glm::quat liftRotation; + swingTwistDecomposition(getHead()->getCameraOrientation(), _worldUpDirection, liftRotation, motorRotation); } const float DEFAULT_MOTOR_TIMESCALE = 0.2f; const float INVALID_MOTOR_TIMESCALE = 1.0e6f;