mirror of
https://github.com/lubosz/overte.git
synced 2025-08-13 22:39:50 +02:00
Merge pull request #7625 from hyperlogic/tony/third-person-hmd-camera-improvements
Improve comfort of third-person HMD camera.
This commit is contained in:
commit
a1fe6aee6d
2 changed files with 16 additions and 12 deletions
|
@ -3451,9 +3451,6 @@ void Application::update(float deltaTime) {
|
||||||
avatarManager->updateOtherAvatars(deltaTime);
|
avatarManager->updateOtherAvatars(deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update sensorToWorldMatrix for camera and hand controllers
|
|
||||||
getMyAvatar()->updateSensorToWorldMatrix();
|
|
||||||
|
|
||||||
qApp->updateMyAvatarLookAtPosition();
|
qApp->updateMyAvatarLookAtPosition();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -306,8 +306,6 @@ void MyAvatar::update(float deltaTime) {
|
||||||
}
|
}
|
||||||
currentEnergy = max(0.0f, min(currentEnergy,1.0f));
|
currentEnergy = max(0.0f, min(currentEnergy,1.0f));
|
||||||
emit energyChanged(currentEnergy);
|
emit energyChanged(currentEnergy);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern QByteArray avatarStateToFrame(const AvatarData* _avatar);
|
extern QByteArray avatarStateToFrame(const AvatarData* _avatar);
|
||||||
|
@ -333,6 +331,10 @@ void MyAvatar::simulate(float deltaTime) {
|
||||||
updatePosition(deltaTime);
|
updatePosition(deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update sensorToWorldMatrix for camera and hand controllers
|
||||||
|
// before we perform rig animations and IK.
|
||||||
|
updateSensorToWorldMatrix();
|
||||||
|
|
||||||
{
|
{
|
||||||
PerformanceTimer perfTimer("skeleton");
|
PerformanceTimer perfTimer("skeleton");
|
||||||
_skeletonModel->simulate(deltaTime);
|
_skeletonModel->simulate(deltaTime);
|
||||||
|
@ -1975,9 +1977,14 @@ void MyAvatar::FollowHelper::decrementTimeRemaining(float dt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MyAvatar::FollowHelper::shouldActivateRotation(const MyAvatar& myAvatar, const glm::mat4& desiredBodyMatrix, const glm::mat4& currentBodyMatrix) const {
|
bool MyAvatar::FollowHelper::shouldActivateRotation(const MyAvatar& myAvatar, const glm::mat4& desiredBodyMatrix, const glm::mat4& currentBodyMatrix) const {
|
||||||
|
auto cameraMode = qApp->getCamera()->getMode();
|
||||||
|
if (cameraMode == CAMERA_MODE_THIRD_PERSON) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
const float FOLLOW_ROTATION_THRESHOLD = cosf(PI / 6.0f); // 30 degrees
|
const float FOLLOW_ROTATION_THRESHOLD = cosf(PI / 6.0f); // 30 degrees
|
||||||
glm::vec2 bodyFacing = getFacingDir2D(currentBodyMatrix);
|
glm::vec2 bodyFacing = getFacingDir2D(currentBodyMatrix);
|
||||||
return glm::dot(myAvatar.getHMDSensorFacingMovingAverage(), bodyFacing) < FOLLOW_ROTATION_THRESHOLD;
|
return glm::dot(myAvatar.getHMDSensorFacingMovingAverage(), bodyFacing) < FOLLOW_ROTATION_THRESHOLD;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MyAvatar::FollowHelper::shouldActivateHorizontal(const MyAvatar& myAvatar, const glm::mat4& desiredBodyMatrix, const glm::mat4& currentBodyMatrix) const {
|
bool MyAvatar::FollowHelper::shouldActivateHorizontal(const MyAvatar& myAvatar, const glm::mat4& desiredBodyMatrix, const glm::mat4& currentBodyMatrix) const {
|
||||||
|
|
Loading…
Reference in a new issue