mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 17:41:12 +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();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -294,20 +294,18 @@ void MyAvatar::update(float deltaTime) {
|
||||||
auto audio = DependencyManager::get<AudioClient>();
|
auto audio = DependencyManager::get<AudioClient>();
|
||||||
head->setAudioLoudness(audio->getLastInputLoudness());
|
head->setAudioLoudness(audio->getLastInputLoudness());
|
||||||
head->setAudioAverageLoudness(audio->getAudioAverageInputLoudness());
|
head->setAudioAverageLoudness(audio->getAudioAverageInputLoudness());
|
||||||
|
|
||||||
simulate(deltaTime);
|
simulate(deltaTime);
|
||||||
|
|
||||||
currentEnergy += energyChargeRate;
|
currentEnergy += energyChargeRate;
|
||||||
currentEnergy -= getAccelerationEnergy();
|
currentEnergy -= getAccelerationEnergy();
|
||||||
currentEnergy -= getAudioEnergy();
|
currentEnergy -= getAudioEnergy();
|
||||||
|
|
||||||
if(didTeleport()) {
|
if(didTeleport()) {
|
||||||
currentEnergy = 0.0f;
|
currentEnergy = 0.0f;
|
||||||
}
|
}
|
||||||
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 {
|
||||||
const float FOLLOW_ROTATION_THRESHOLD = cosf(PI / 6.0f); // 30 degrees
|
auto cameraMode = qApp->getCamera()->getMode();
|
||||||
glm::vec2 bodyFacing = getFacingDir2D(currentBodyMatrix);
|
if (cameraMode == CAMERA_MODE_THIRD_PERSON) {
|
||||||
return glm::dot(myAvatar.getHMDSensorFacingMovingAverage(), bodyFacing) < FOLLOW_ROTATION_THRESHOLD;
|
return false;
|
||||||
|
} else {
|
||||||
|
const float FOLLOW_ROTATION_THRESHOLD = cosf(PI / 6.0f); // 30 degrees
|
||||||
|
glm::vec2 bodyFacing = getFacingDir2D(currentBodyMatrix);
|
||||||
|
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