diff --git a/interface/src/avatar/SkeletonModel.cpp b/interface/src/avatar/SkeletonModel.cpp index c308f5f041..a892447961 100644 --- a/interface/src/avatar/SkeletonModel.cpp +++ b/interface/src/avatar/SkeletonModel.cpp @@ -247,7 +247,10 @@ void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { hand->getLeftRightPalmIndices(leftPalmIndex, rightPalmIndex); // let rig compute the model offset - setOffset(_rig->getModelOffset()); + glm::vec3 modelOffset; + if (_rig->getModelOffset(modelOffset)) { + setOffset(modelOffset); + } // Don't Relax toward hand positions when in animGraph mode. if (!_rig->getEnableAnimGraph()) { diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 74108eade2..ee3ac0a05a 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1203,11 +1203,11 @@ void Rig::initAnimGraph(const QUrl& url, const FBXGeometry& fbxGeometry) { }); } -glm::vec3 Rig::getModelOffset() const { +bool Rig::getModelOffset(glm::vec3& modelOffsetOut) const { if (_animSkeleton && _rootJointIndex >= 0) { - return -_animSkeleton->getAbsoluteBindPose(_rootJointIndex).trans; + modelOffsetOut = -_animSkeleton->getAbsoluteBindPose(_rootJointIndex).trans; + return true; } else { - const glm::vec3 DEFAULT_MODEL_OFFSET(0.0f, 0.0f, 0.0f); - return DEFAULT_MODEL_OFFSET; + return false; } } diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index 3ad2539da5..ef802e925d 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -204,7 +204,7 @@ public: AnimSkeleton::ConstPointer getAnimSkeleton() const { return _animSkeleton; } bool disableHands {false}; // should go away with rig animation (and Rig::inverseKinematics) - glm::vec3 getModelOffset() const; + bool getModelOffset(glm::vec3& modelOffsetOut) const; protected: