From 08c95555dd281449bbbca4eaa60940b20c9e37fd Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 14 Mar 2015 09:47:47 -0700 Subject: [PATCH 1/3] Calculate head height based on model mesh rather than joints This fixes the problem of some head models having display names rendering through them. --- interface/src/avatar/Avatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 75d77b780a..ad5dda9f18 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -1013,7 +1013,7 @@ float Avatar::getSkeletonHeight() const { } float Avatar::getHeadHeight() const { - Extents extents = getHead()->getFaceModel().getBindExtents(); + Extents extents = getHead()->getFaceModel().getMeshExtents(); if (!extents.isEmpty()) { return extents.maximum.y - extents.minimum.y; } From 913527eaa3a50923540b928e714dc51ecd7d2536 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 16 Mar 2015 15:47:54 -0700 Subject: [PATCH 2/3] Calculate head height based on skeleton model mesh if no head model This fixes the problem of some skeleton models with heads having display names rendering through them. --- interface/src/avatar/Avatar.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index ad5dda9f18..a340a4622c 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -1017,10 +1017,11 @@ float Avatar::getHeadHeight() const { if (!extents.isEmpty()) { return extents.maximum.y - extents.minimum.y; } + + extents = _skeletonModel.getMeshExtents(); glm::vec3 neckPosition; - glm::vec3 headPosition; - if (_skeletonModel.getNeckPosition(neckPosition) && _skeletonModel.getHeadPosition(headPosition)) { - return glm::distance(neckPosition, headPosition); + if (!extents.isEmpty() && _skeletonModel.getNeckPosition(neckPosition)) { + return extents.maximum.y / 2.0f - neckPosition.y + _position.y; } const float DEFAULT_HEAD_HEIGHT = 0.1f; return DEFAULT_HEAD_HEIGHT; From d08a25f1a32b539bfb17dbb9b7760f599fc7d259 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 16 Mar 2015 15:48:10 -0700 Subject: [PATCH 3/3] A more realistic default head height --- interface/src/avatar/Avatar.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index a340a4622c..6d57660f37 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -1023,7 +1023,8 @@ float Avatar::getHeadHeight() const { if (!extents.isEmpty() && _skeletonModel.getNeckPosition(neckPosition)) { return extents.maximum.y / 2.0f - neckPosition.y + _position.y; } - const float DEFAULT_HEAD_HEIGHT = 0.1f; + + const float DEFAULT_HEAD_HEIGHT = 0.25f; return DEFAULT_HEAD_HEIGHT; }