From cd4b88acaa0edf87d612f24fc5ea8b2c93bdd1c1 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 22 Oct 2013 13:39:51 -0700 Subject: [PATCH] More rotation tweaks. --- interface/src/avatar/FaceModel.cpp | 6 +++--- interface/src/avatar/SkeletonModel.cpp | 4 ++-- interface/src/renderer/FBXReader.cpp | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/interface/src/avatar/FaceModel.cpp b/interface/src/avatar/FaceModel.cpp index eb2ca70805..40f85f62c2 100644 --- a/interface/src/avatar/FaceModel.cpp +++ b/interface/src/avatar/FaceModel.cpp @@ -23,7 +23,6 @@ void FaceModel::simulate(float deltaTime) { } Avatar* owningAvatar = static_cast(_owningHead->_owningAvatar); - const Skeleton& skeleton = owningAvatar->getSkeleton(); glm::vec3 neckPosition; if (!owningAvatar->getSkeletonModel().getNeckPosition(neckPosition)) { neckPosition = owningAvatar->getSkeleton().joint[AVATAR_JOINT_NECK_BASE].position; @@ -31,11 +30,12 @@ void FaceModel::simulate(float deltaTime) { setTranslation(neckPosition); glm::quat neckRotation; if (!owningAvatar->getSkeletonModel().getNeckRotation(neckRotation)) { - neckRotation = owningAvatar->getSkeleton().joint[AVATAR_JOINT_NECK_BASE].absoluteRotation; + neckRotation = owningAvatar->getSkeleton().joint[AVATAR_JOINT_NECK_BASE].absoluteRotation * + glm::angleAxis(180.0f, 0.0f, 1.0f, 0.0f); } setRotation(neckRotation); const float MODEL_SCALE = 0.0006f; - setScale(glm::vec3(-1.0f, 1.0f, -1.0f) * _owningHead->getScale() * MODEL_SCALE); + setScale(glm::vec3(1.0f, 1.0f, 1.0f) * _owningHead->getScale() * MODEL_SCALE); const glm::vec3 MODEL_TRANSLATION(0.0f, -60.0f, 40.0f); // temporary fudge factor setOffset(MODEL_TRANSLATION - _geometry->getFBXGeometry().neckPivot); diff --git a/interface/src/avatar/SkeletonModel.cpp b/interface/src/avatar/SkeletonModel.cpp index fbffa49fc1..fb4c073810 100644 --- a/interface/src/avatar/SkeletonModel.cpp +++ b/interface/src/avatar/SkeletonModel.cpp @@ -22,9 +22,9 @@ void SkeletonModel::simulate(float deltaTime) { } setTranslation(_owningAvatar->getPosition()); - setRotation(_owningAvatar->getOrientation()); + setRotation(_owningAvatar->getOrientation() * glm::angleAxis(180.0f, 0.0f, 1.0f, 0.0f)); const float MODEL_SCALE = 0.0006f; - setScale(glm::vec3(-1.0f, 1.0f, -1.0f) * _owningAvatar->getScale() * MODEL_SCALE); + setScale(glm::vec3(1.0f, 1.0f, 1.0f) * _owningAvatar->getScale() * MODEL_SCALE); Model::simulate(deltaTime); } diff --git a/interface/src/renderer/FBXReader.cpp b/interface/src/renderer/FBXReader.cpp index 143fb2390e..8a6abb4844 100644 --- a/interface/src/renderer/FBXReader.cpp +++ b/interface/src/renderer/FBXReader.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include "FBXReader.h" @@ -963,7 +964,7 @@ FBXGeometry extractFBXGeometry(const FBXNode& node, const QVariantHash& mapping) glm::quat combinedRotation = model.preRotation * model.rotation * model.postRotation; if (joint.parentIndex == -1) { joint.transform = geometry.offset * model.preTransform * glm::mat4_cast(combinedRotation) * model.postTransform; - joint.inverseBindRotation = glm::inverse(offsetRotation * combinedRotation); + joint.inverseBindRotation = glm::inverse(combinedRotation); } else { const FBXJoint& parentJoint = geometry.joints.at(joint.parentIndex);