mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
More rotation tweaks.
This commit is contained in:
parent
a33c7ce20c
commit
cd4b88acaa
3 changed files with 7 additions and 6 deletions
|
@ -23,7 +23,6 @@ void FaceModel::simulate(float deltaTime) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Avatar* owningAvatar = static_cast<Avatar*>(_owningHead->_owningAvatar);
|
Avatar* owningAvatar = static_cast<Avatar*>(_owningHead->_owningAvatar);
|
||||||
const Skeleton& skeleton = owningAvatar->getSkeleton();
|
|
||||||
glm::vec3 neckPosition;
|
glm::vec3 neckPosition;
|
||||||
if (!owningAvatar->getSkeletonModel().getNeckPosition(neckPosition)) {
|
if (!owningAvatar->getSkeletonModel().getNeckPosition(neckPosition)) {
|
||||||
neckPosition = owningAvatar->getSkeleton().joint[AVATAR_JOINT_NECK_BASE].position;
|
neckPosition = owningAvatar->getSkeleton().joint[AVATAR_JOINT_NECK_BASE].position;
|
||||||
|
@ -31,11 +30,12 @@ void FaceModel::simulate(float deltaTime) {
|
||||||
setTranslation(neckPosition);
|
setTranslation(neckPosition);
|
||||||
glm::quat neckRotation;
|
glm::quat neckRotation;
|
||||||
if (!owningAvatar->getSkeletonModel().getNeckRotation(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);
|
setRotation(neckRotation);
|
||||||
const float MODEL_SCALE = 0.0006f;
|
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
|
const glm::vec3 MODEL_TRANSLATION(0.0f, -60.0f, 40.0f); // temporary fudge factor
|
||||||
setOffset(MODEL_TRANSLATION - _geometry->getFBXGeometry().neckPivot);
|
setOffset(MODEL_TRANSLATION - _geometry->getFBXGeometry().neckPivot);
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,9 @@ void SkeletonModel::simulate(float deltaTime) {
|
||||||
}
|
}
|
||||||
|
|
||||||
setTranslation(_owningAvatar->getPosition());
|
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;
|
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);
|
Model::simulate(deltaTime);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <QtEndian>
|
#include <QtEndian>
|
||||||
|
|
||||||
#include <glm/gtc/quaternion.hpp>
|
#include <glm/gtc/quaternion.hpp>
|
||||||
|
#include <glm/gtx/quaternion.hpp>
|
||||||
#include <glm/gtx/transform.hpp>
|
#include <glm/gtx/transform.hpp>
|
||||||
|
|
||||||
#include "FBXReader.h"
|
#include "FBXReader.h"
|
||||||
|
@ -963,7 +964,7 @@ FBXGeometry extractFBXGeometry(const FBXNode& node, const QVariantHash& mapping)
|
||||||
glm::quat combinedRotation = model.preRotation * model.rotation * model.postRotation;
|
glm::quat combinedRotation = model.preRotation * model.rotation * model.postRotation;
|
||||||
if (joint.parentIndex == -1) {
|
if (joint.parentIndex == -1) {
|
||||||
joint.transform = geometry.offset * model.preTransform * glm::mat4_cast(combinedRotation) * model.postTransform;
|
joint.transform = geometry.offset * model.preTransform * glm::mat4_cast(combinedRotation) * model.postTransform;
|
||||||
joint.inverseBindRotation = glm::inverse(offsetRotation * combinedRotation);
|
joint.inverseBindRotation = glm::inverse(combinedRotation);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
const FBXJoint& parentJoint = geometry.joints.at(joint.parentIndex);
|
const FBXJoint& parentJoint = geometry.joints.at(joint.parentIndex);
|
||||||
|
|
Loading…
Reference in a new issue