From ceed571c82267d3ba8056a42dff2458f91cb36d8 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Fri, 29 Jan 2016 16:02:58 -0800 Subject: [PATCH] Look harder for head, log if not found, and compute what we need regardless. --- interface/src/avatar/SkeletonModel.cpp | 28 +++++++++++++------------- libraries/fbx/src/FBXReader.cpp | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/interface/src/avatar/SkeletonModel.cpp b/interface/src/avatar/SkeletonModel.cpp index ad434f6b61..969773c3d3 100644 --- a/interface/src/avatar/SkeletonModel.cpp +++ b/interface/src/avatar/SkeletonModel.cpp @@ -46,21 +46,21 @@ void SkeletonModel::initJointStates() { // Determine the default eye position for avatar scale = 1.0 int headJointIndex = _geometry->getFBXGeometry().headJointIndex; - if (0 <= headJointIndex && headJointIndex < _rig->getJointStateCount()) { - - glm::vec3 leftEyePosition, rightEyePosition; - getEyeModelPositions(leftEyePosition, rightEyePosition); - glm::vec3 midEyePosition = (leftEyePosition + rightEyePosition) / 2.0f; - - int rootJointIndex = _geometry->getFBXGeometry().rootJointIndex; - glm::vec3 rootModelPosition; - getJointPosition(rootJointIndex, rootModelPosition); - - _defaultEyeModelPosition = midEyePosition - rootModelPosition; - - // Skeleton may have already been scaled so unscale it - _defaultEyeModelPosition = _defaultEyeModelPosition / _scale; + if (0 > headJointIndex || headJointIndex >= _rig->getJointStateCount()) { + qCWarning(interfaceapp) << "Bad head joint! Got:" << headJointIndex << "jointCount:" << _rig->getJointStateCount(); } + glm::vec3 leftEyePosition, rightEyePosition; + getEyeModelPositions(leftEyePosition, rightEyePosition); + glm::vec3 midEyePosition = (leftEyePosition + rightEyePosition) / 2.0f; + + int rootJointIndex = _geometry->getFBXGeometry().rootJointIndex; + glm::vec3 rootModelPosition; + getJointPosition(rootJointIndex, rootModelPosition); + + _defaultEyeModelPosition = midEyePosition - rootModelPosition; + + // Skeleton may have already been scaled so unscale it + _defaultEyeModelPosition = _defaultEyeModelPosition / _scale; computeBoundingShape(); diff --git a/libraries/fbx/src/FBXReader.cpp b/libraries/fbx/src/FBXReader.cpp index 1be3bbb5f6..b1507b79b0 100644 --- a/libraries/fbx/src/FBXReader.cpp +++ b/libraries/fbx/src/FBXReader.cpp @@ -600,7 +600,7 @@ FBXGeometry* FBXReader::extractFBXGeometry(const QVariantHash& mapping, const QS } else if (name == jointLeanName) { jointLeanID = getID(object.properties); - } else if (name == jointHeadName) { + } else if (name == jointHeadName || name == "head" || name == "Head" || name == "HEAD" || name == "joint_head") { jointHeadID = getID(object.properties); } else if (name == jointLeftHandName || name == "LeftHand" || name == "joint_L_hand") {