mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 19:59:28 +02:00
Merge pull request #5868 from ctrlaltdavid/20687
Fix HMD fullscreen mirror view
This commit is contained in:
commit
7b5cbbf758
1 changed files with 20 additions and 11 deletions
|
@ -1149,14 +1149,27 @@ void Application::paintGL() {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
|
} else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
|
||||||
_myCamera.setRotation(_myAvatar->getWorldAlignedOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)));
|
if (isHMDMode()) {
|
||||||
_myCamera.setPosition(_myAvatar->getDefaultEyePosition() +
|
glm::quat hmdRotation = extractRotation(_myAvatar->getHMDSensorMatrix());
|
||||||
glm::vec3(0, _raiseMirror * _myAvatar->getScale(), 0) +
|
_myCamera.setRotation(_myAvatar->getWorldAlignedOrientation()
|
||||||
(_myAvatar->getOrientation() * glm::quat(glm::vec3(0.0f, _rotateMirror, 0.0f))) *
|
* glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)) * hmdRotation);
|
||||||
glm::vec3(0.0f, 0.0f, -1.0f) * MIRROR_FULLSCREEN_DISTANCE * _scaleMirror);
|
glm::vec3 hmdOffset = extractTranslation(_myAvatar->getHMDSensorMatrix());
|
||||||
|
_myCamera.setPosition(_myAvatar->getDefaultEyePosition()
|
||||||
|
+ glm::vec3(0, _raiseMirror * _myAvatar->getScale(), 0)
|
||||||
|
+ (_myAvatar->getOrientation() * glm::quat(glm::vec3(0.0f, _rotateMirror, 0.0f))) *
|
||||||
|
glm::vec3(0.0f, 0.0f, -1.0f) * MIRROR_FULLSCREEN_DISTANCE * _scaleMirror
|
||||||
|
+ (_myAvatar->getOrientation() * glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f))) * hmdOffset);
|
||||||
|
} else {
|
||||||
|
_myCamera.setRotation(_myAvatar->getWorldAlignedOrientation()
|
||||||
|
* glm::quat(glm::vec3(0.0f, PI + _rotateMirror, 0.0f)));
|
||||||
|
_myCamera.setPosition(_myAvatar->getDefaultEyePosition()
|
||||||
|
+ glm::vec3(0, _raiseMirror * _myAvatar->getScale(), 0)
|
||||||
|
+ (_myAvatar->getOrientation() * glm::quat(glm::vec3(0.0f, _rotateMirror, 0.0f))) *
|
||||||
|
glm::vec3(0.0f, 0.0f, -1.0f) * MIRROR_FULLSCREEN_DISTANCE * _scaleMirror);
|
||||||
|
}
|
||||||
renderArgs._renderMode = RenderArgs::MIRROR_RENDER_MODE;
|
renderArgs._renderMode = RenderArgs::MIRROR_RENDER_MODE;
|
||||||
}
|
}
|
||||||
// Update camera position
|
// Update camera position
|
||||||
if (!isHMDMode()) {
|
if (!isHMDMode()) {
|
||||||
_myCamera.update(1.0f / _fps);
|
_myCamera.update(1.0f / _fps);
|
||||||
}
|
}
|
||||||
|
@ -2598,11 +2611,7 @@ void Application::updateMyAvatarLookAtPosition() {
|
||||||
if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
|
if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
|
||||||
// When I am in mirror mode, just look right at the camera (myself); don't switch gaze points because when physically
|
// When I am in mirror mode, just look right at the camera (myself); don't switch gaze points because when physically
|
||||||
// looking in a mirror one's eyes appear steady.
|
// looking in a mirror one's eyes appear steady.
|
||||||
if (!isHMD) {
|
lookAtSpot = _myCamera.getPosition();
|
||||||
lookAtSpot = _myCamera.getPosition();
|
|
||||||
} else {
|
|
||||||
lookAtSpot = _myCamera.getPosition() + transformPoint(_myAvatar->getSensorToWorldMatrix(), extractTranslation(getHMDSensorPose()));
|
|
||||||
}
|
|
||||||
} else if (eyeTracker->isTracking() && (isHMD || eyeTracker->isSimulating())) {
|
} else if (eyeTracker->isTracking() && (isHMD || eyeTracker->isSimulating())) {
|
||||||
// Look at the point that the user is looking at.
|
// Look at the point that the user is looking at.
|
||||||
if (isHMD) {
|
if (isHMD) {
|
||||||
|
|
Loading…
Reference in a new issue