From 71231268a5646d3f53fbc1495967d30e37e6b054 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Fri, 2 May 2014 14:28:12 -0700 Subject: [PATCH] Better head heights for headless skeletons. --- interface/src/avatar/Avatar.cpp | 11 ++++++++++- libraries/fbx/src/FBXReader.h | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 71bd05a7c6..e8ac93234c 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -776,7 +776,16 @@ float Avatar::getSkeletonHeight() const { float Avatar::getHeadHeight() const { Extents extents = getHead()->getFaceModel().getBindExtents(); - return extents.maximum.y - extents.minimum.y; + if (!extents.isEmpty()) { + return extents.maximum.y - extents.minimum.y; + } + glm::vec3 neckPosition; + glm::vec3 headPosition; + if (_skeletonModel.getNeckPosition(neckPosition) && _skeletonModel.getHeadPosition(headPosition)) { + return glm::distance(neckPosition, headPosition); + } + const float DEFAULT_HEAD_HEIGHT = 0.1f; + return DEFAULT_HEAD_HEIGHT; } bool Avatar::collisionWouldMoveAvatar(CollisionInfo& collision) const { diff --git a/libraries/fbx/src/FBXReader.h b/libraries/fbx/src/FBXReader.h index ea8b8f517d..af00e35398 100644 --- a/libraries/fbx/src/FBXReader.h +++ b/libraries/fbx/src/FBXReader.h @@ -47,6 +47,9 @@ public: /// \return true if point is within current limits bool containsPoint(const glm::vec3& point) const; + /// \return whether or not the extents are empty + bool isEmpty() { return minimum == maximum; } + glm::vec3 minimum; glm::vec3 maximum; };