More rotation tweaks.

This commit is contained in:
Andrzej Kapolka 2013-10-22 13:39:51 -07:00
parent a33c7ce20c
commit cd4b88acaa
3 changed files with 7 additions and 6 deletions

View file

@ -23,7 +23,6 @@ void FaceModel::simulate(float deltaTime) {
}
Avatar* owningAvatar = static_cast<Avatar*>(_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);

View file

@ -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);
}

View file

@ -14,6 +14,7 @@
#include <QtEndian>
#include <glm/gtc/quaternion.hpp>
#include <glm/gtx/quaternion.hpp>
#include <glm/gtx/transform.hpp>
#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);