Merge pull request #1125 from ey6es/master

Fix for eyes' rotating into sockets, fisheye distortion on inset mirror.
This commit is contained in:
Philip Rosedale 2013-10-25 11:18:23 -07:00
commit 018bf2b438
2 changed files with 7 additions and 5 deletions

View file

@ -435,9 +435,8 @@ void Application::paintGL() {
_glowEffect.render();
if (Menu::getInstance()->isOptionChecked(MenuOption::Mirror)) {
glm::vec3 targetPosition = _myAvatar.getUprightHeadPosition();
_mirrorCamera.setDistance(0.2f);
_mirrorCamera.setTargetPosition(targetPosition);
_mirrorCamera.setDistance(0.3f);
_mirrorCamera.setTargetPosition(_myAvatar.getHead().calculateAverageEyePosition());
_mirrorCamera.setTargetRotation(_myAvatar.getWorldAlignedOrientation() * glm::quat(glm::vec3(0.0f, PIf, 0.0f)));
_mirrorCamera.update(1.0f/_fps);
@ -1674,7 +1673,7 @@ void Application::init() {
_mirrorCamera.setMode(CAMERA_MODE_MIRROR);
_mirrorCamera.setAspectRatio((float)MIRROR_VIEW_WIDTH / (float)MIRROR_VIEW_HEIGHT);
_mirrorCamera.setFieldOfView(70);
_mirrorCamera.setFieldOfView(30);
_mirrorViewRect = QRect(MIRROR_VIEW_LEFT_PADDING, MIRROR_VIEW_TOP_PADDING, MIRROR_VIEW_WIDTH, MIRROR_VIEW_HEIGHT);
switchToResourcesParentIfRequired();

View file

@ -62,5 +62,8 @@ void FaceModel::maybeUpdateEyeRotation(const JointState& parentState, const FBXJ
glm::vec3 front = glm::vec3(inverse * glm::vec4(_owningHead->getOrientation() * IDENTITY_FRONT, 0.0f));
glm::vec3 lookAt = glm::vec3(inverse * glm::vec4(_owningHead->getLookAtPosition() +
_owningHead->getSaccade(), 1.0f));
state.rotation = rotationBetween(front, lookAt) * joint.rotation;
glm::quat between = rotationBetween(front, lookAt);
const float MAX_ANGLE = 22.5f;
state.rotation = glm::angleAxis(glm::clamp(glm::angle(between), -MAX_ANGLE, MAX_ANGLE), glm::axis(between)) *
joint.rotation;
}