From c774dd7f5bf0734b771fc0616a3fff47cfa9081e Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 8 Aug 2018 17:52:22 -0700 Subject: [PATCH 1/4] debugging to solve the no-neck crazy scale problem --- interface/src/Application.cpp | 5 +++++ interface/src/avatar/MyAvatar.cpp | 2 ++ interface/src/avatar/MySkeletonModel.cpp | 5 +++++ .../src/avatars-renderer/Avatar.cpp | 3 +++ .../src/avatars-renderer/SkeletonModel.cpp | 19 +++++++++++++++++++ libraries/shared/src/shared/Camera.cpp | 1 + 6 files changed, 35 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0bbd2b1c17..8a7a5c610a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3064,6 +3064,7 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { auto myAvatar = getMyAvatar(); boomOffset = myAvatar->getModelScale() * myAvatar->getBoomLength() * -IDENTITY_FORWARD; + //qCDebug(interfaceapp) << "boom offset" << boomOffset; // The render mode is default or mirror if the camera is in mirror mode, assigned further below renderArgs._renderMode = RenderArgs::DEFAULT_RENDER_MODE; @@ -3074,10 +3075,12 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _thirdPersonHMDCameraBoomValid= false; if (isHMDMode()) { mat4 camMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); + //qCDebug(interfaceapp) << "camera 1rst translation hmd " << extractTranslation(camMat); _myCamera.setPosition(extractTranslation(camMat)); _myCamera.setOrientation(glmExtractRotation(camMat)); } else { + //qCDebug(interfaceapp) << "camera 1rst translation desktop " << myAvatar->getDefaultEyePosition(); _myCamera.setPosition(myAvatar->getDefaultEyePosition()); _myCamera.setOrientation(myAvatar->getMyHead()->getHeadOrientation()); } @@ -3099,6 +3102,7 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.setOrientation(glm::normalize(glmExtractRotation(worldCameraMat))); _myCamera.setPosition(extractTranslation(worldCameraMat)); + //qCDebug(interfaceapp) << "camera translation 3rd hmd " << extractTranslation(worldCameraMat); } else { _thirdPersonHMDCameraBoomValid = false; @@ -3112,6 +3116,7 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.setPosition(myAvatar->getDefaultEyePosition() + myAvatar->getWorldOrientation() * boomOffset); } + qCDebug(interfaceapp) << "camera translation 3rd desktop " << (myAvatar->getDefaultEyePosition() + _myCamera.getOrientation() * boomOffset); } } else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) { diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 3f738ea4cb..9971f90bd6 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1704,8 +1704,10 @@ glm::vec3 MyAvatar::getSkeletonPosition() const { // The avatar is rotated PI about the yAxis, so we have to correct for it // to get the skeleton offset contribution in the world-frame. const glm::quat FLIP = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); + //qCDebug(interfaceapp) << "position third person " << getWorldPosition(); return getWorldPosition() + getWorldOrientation() * FLIP * _skeletonOffset; } + //qCDebug(interfaceapp) << "position first person " << Avatar::getWorldPosition(); return Avatar::getWorldPosition(); } diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 0fc5e7521e..86085798ab 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -95,7 +95,9 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { // make sure lookAt is not too close to face (avoid crosseyes) glm::vec3 lookAt = head->getLookAtPosition(); + //qCDebug(interfaceapp) << "look at " << lookAt; glm::vec3 focusOffset = lookAt - _owningAvatar->getHead()->getEyePosition(); + //qCDebug(interfaceapp) << "focus offset " << focusOffset; float focusDistance = glm::length(focusOffset); const float MIN_LOOK_AT_FOCUS_DISTANCE = 1.0f; if (focusDistance < MIN_LOOK_AT_FOCUS_DISTANCE && focusDistance > EPSILON) { @@ -113,6 +115,8 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { glm::mat4 avatarToWorldMatrix = createMatFromQuatAndPos(myAvatar->getWorldOrientation(), myAvatar->getWorldPosition()); glm::mat4 sensorToWorldMatrix = myAvatar->getSensorToWorldMatrix(); params.rigToSensorMatrix = glm::inverse(sensorToWorldMatrix) * avatarToWorldMatrix * rigToAvatarMatrix; + //qCDebug(interfaceapp) << "AVATAR: " << avatarToWorldMatrix; + //qCDebug(interfaceapp) << "SENSOR " << sensorToWorldMatrix; // input action is the highest priority source for head orientation. auto avatarHeadPose = myAvatar->getControllerPoseInAvatarFrame(controller::Action::HEAD); @@ -282,6 +286,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { eyeParams.leftEyeJointIndex = geometry.leftEyeJointIndex; eyeParams.rightEyeJointIndex = geometry.rightEyeJointIndex; + //qCDebug(interfaceapp) << "right eye index is " << geometry.leftEyeJointIndex; _rig.updateFromEyeParameters(eyeParams); updateFingers(); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 69356cdfaa..07d1edcabb 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -169,6 +169,8 @@ AABox Avatar::getBounds() const { // approximately 2m tall, scaled to user request. return AABox(getWorldPosition() - glm::vec3(getModelScale()), getModelScale() * 2.0f); } + //float temp = _skeletonModel->getRenderableMeshBound().getLargestDimension(); + //qCDebug(animation) << " largest bounding box dimension " << temp; return _skeletonModel->getRenderableMeshBound(); } @@ -1775,6 +1777,7 @@ void Avatar::buildUnscaledEyeHeightCache() { // Sanity check by looking at the model extents. Extents meshExtents = _skeletonModel->getUnscaledMeshExtents(); float meshHeight = meshExtents.size().y; + //qCDebug(animation) << "mesh height " << meshHeight << " skeleton height " << skeletonHeight; // if we determine the mesh is much larger then the skeleton, then we use the mesh height instead. // This helps prevent absurdly large avatars from exceeding the domain height limit. diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index de8c02f10e..83caaede8d 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -71,14 +71,23 @@ void SkeletonModel::initJointStates() { qCWarning(avatars_renderer) << "Bad head joint! Got:" << headJointIndex << "jointCount:" << _rig.getJointStateCount(); } glm::vec3 leftEyePosition, rightEyePosition; + qCDebug(avatars_renderer) << "initial left and right eyes " << leftEyePosition << " " << rightEyePosition; getEyeModelPositions(leftEyePosition, rightEyePosition); + qCDebug(avatars_renderer) << "after setting the left and right eyes " << leftEyePosition << " " << rightEyePosition; glm::vec3 midEyePosition = (leftEyePosition + rightEyePosition) / 2.0f; int rootJointIndex = geometry.rootJointIndex; glm::vec3 rootModelPosition; getJointPosition(rootJointIndex, rootModelPosition); + qCDebug(avatars_renderer) << "root joint index " << rootJointIndex << " root position: " << rootModelPosition; _defaultEyeModelPosition = midEyePosition - rootModelPosition; + if (headJointIndex > -1) { + glm::vec3 headModelPosition; + getJointPosition(headJointIndex, headModelPosition); + qCDebug(avatars_renderer) << "we have a head joint " << headJointIndex << " and " << headModelPosition; + } + qCDebug(avatars_renderer) << "the default eye pos " << _defaultEyeModelPosition << " and scale " << _scale; // Skeleton may have already been scaled so unscale it _defaultEyeModelPosition = _defaultEyeModelPosition / _scale; @@ -294,6 +303,16 @@ bool SkeletonModel::getEyeModelPositions(glm::vec3& firstEyePosition, glm::vec3& firstEyePosition = baseEyePosition + headRotation * glm::vec3(EYE_SEPARATION, 0.0f, EYES_FORWARD) * headHeight; secondEyePosition = baseEyePosition + headRotation * glm::vec3(-EYE_SEPARATION, 0.0f, EYES_FORWARD) * headHeight; return true; + } else if (getJointPosition(geometry.headJointIndex, headPosition)) { + glm::vec3 baseEyePosition = headPosition; + glm::quat headRotation; + getJointRotation(geometry.headJointIndex, headRotation); + const float EYES_FORWARD = 0.25f; + const float EYE_SEPARATION = 0.1f; + float headHeight = glm::distance(neckPosition, headPosition); + firstEyePosition = baseEyePosition + headRotation * glm::vec3(EYE_SEPARATION, 0.0f, EYES_FORWARD); + secondEyePosition = baseEyePosition + headRotation * glm::vec3(-EYE_SEPARATION, 0.0f, EYES_FORWARD); + return true; } return false; } diff --git a/libraries/shared/src/shared/Camera.cpp b/libraries/shared/src/shared/Camera.cpp index 787b7bfb1a..c80e14d87c 100644 --- a/libraries/shared/src/shared/Camera.cpp +++ b/libraries/shared/src/shared/Camera.cpp @@ -9,6 +9,7 @@ // #include "Camera.h" +//#include "../SharedLogging.h" /**jsdoc *

Camera modes affect the position of the camera and the controls for camera movement. The camera can be in one of the From a3f2fd1f235b014fd672e3b2f61a153103b84312 Mon Sep 17 00:00:00 2001 From: amantley Date: Thu, 9 Aug 2018 11:33:27 -0700 Subject: [PATCH 2/4] removed some print statements and added the code to use the head parent when the neck is missing, this allows for cauterization --- interface/src/Application.cpp | 5 ----- interface/src/avatar/MyAvatar.cpp | 8 +++++--- interface/src/avatar/MySkeletonModel.cpp | 5 ----- .../avatars-renderer/src/avatars-renderer/Avatar.cpp | 3 --- libraries/render-utils/src/CauterizedModel.cpp | 2 ++ libraries/shared/src/shared/Camera.cpp | 1 - 6 files changed, 7 insertions(+), 17 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8a7a5c610a..0bbd2b1c17 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3064,7 +3064,6 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { auto myAvatar = getMyAvatar(); boomOffset = myAvatar->getModelScale() * myAvatar->getBoomLength() * -IDENTITY_FORWARD; - //qCDebug(interfaceapp) << "boom offset" << boomOffset; // The render mode is default or mirror if the camera is in mirror mode, assigned further below renderArgs._renderMode = RenderArgs::DEFAULT_RENDER_MODE; @@ -3075,12 +3074,10 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _thirdPersonHMDCameraBoomValid= false; if (isHMDMode()) { mat4 camMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); - //qCDebug(interfaceapp) << "camera 1rst translation hmd " << extractTranslation(camMat); _myCamera.setPosition(extractTranslation(camMat)); _myCamera.setOrientation(glmExtractRotation(camMat)); } else { - //qCDebug(interfaceapp) << "camera 1rst translation desktop " << myAvatar->getDefaultEyePosition(); _myCamera.setPosition(myAvatar->getDefaultEyePosition()); _myCamera.setOrientation(myAvatar->getMyHead()->getHeadOrientation()); } @@ -3102,7 +3099,6 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.setOrientation(glm::normalize(glmExtractRotation(worldCameraMat))); _myCamera.setPosition(extractTranslation(worldCameraMat)); - //qCDebug(interfaceapp) << "camera translation 3rd hmd " << extractTranslation(worldCameraMat); } else { _thirdPersonHMDCameraBoomValid = false; @@ -3116,7 +3112,6 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.setPosition(myAvatar->getDefaultEyePosition() + myAvatar->getWorldOrientation() * boomOffset); } - qCDebug(interfaceapp) << "camera translation 3rd desktop " << (myAvatar->getDefaultEyePosition() + _myCamera.getOrientation() * boomOffset); } } else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) { diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 9971f90bd6..8ba0841196 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1704,10 +1704,8 @@ glm::vec3 MyAvatar::getSkeletonPosition() const { // The avatar is rotated PI about the yAxis, so we have to correct for it // to get the skeleton offset contribution in the world-frame. const glm::quat FLIP = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); - //qCDebug(interfaceapp) << "position third person " << getWorldPosition(); return getWorldPosition() + getWorldOrientation() * FLIP * _skeletonOffset; } - //qCDebug(interfaceapp) << "position first person " << Avatar::getWorldPosition(); return Avatar::getWorldPosition(); } @@ -1992,7 +1990,11 @@ void MyAvatar::initHeadBones() { neckJointIndex = _skeletonModel->getFBXGeometry().neckJointIndex; } if (neckJointIndex == -1) { - return; + neckJointIndex = (_skeletonModel->getFBXGeometry().headJointIndex - 1); + if (neckJointIndex < 0) { + //return if the head is not even there. can't cauterize!! + return; + } } _headBoneSet.clear(); std::queue q; diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 86085798ab..0fc5e7521e 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -95,9 +95,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { // make sure lookAt is not too close to face (avoid crosseyes) glm::vec3 lookAt = head->getLookAtPosition(); - //qCDebug(interfaceapp) << "look at " << lookAt; glm::vec3 focusOffset = lookAt - _owningAvatar->getHead()->getEyePosition(); - //qCDebug(interfaceapp) << "focus offset " << focusOffset; float focusDistance = glm::length(focusOffset); const float MIN_LOOK_AT_FOCUS_DISTANCE = 1.0f; if (focusDistance < MIN_LOOK_AT_FOCUS_DISTANCE && focusDistance > EPSILON) { @@ -115,8 +113,6 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { glm::mat4 avatarToWorldMatrix = createMatFromQuatAndPos(myAvatar->getWorldOrientation(), myAvatar->getWorldPosition()); glm::mat4 sensorToWorldMatrix = myAvatar->getSensorToWorldMatrix(); params.rigToSensorMatrix = glm::inverse(sensorToWorldMatrix) * avatarToWorldMatrix * rigToAvatarMatrix; - //qCDebug(interfaceapp) << "AVATAR: " << avatarToWorldMatrix; - //qCDebug(interfaceapp) << "SENSOR " << sensorToWorldMatrix; // input action is the highest priority source for head orientation. auto avatarHeadPose = myAvatar->getControllerPoseInAvatarFrame(controller::Action::HEAD); @@ -286,7 +282,6 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { eyeParams.leftEyeJointIndex = geometry.leftEyeJointIndex; eyeParams.rightEyeJointIndex = geometry.rightEyeJointIndex; - //qCDebug(interfaceapp) << "right eye index is " << geometry.leftEyeJointIndex; _rig.updateFromEyeParameters(eyeParams); updateFingers(); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 07d1edcabb..69356cdfaa 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -169,8 +169,6 @@ AABox Avatar::getBounds() const { // approximately 2m tall, scaled to user request. return AABox(getWorldPosition() - glm::vec3(getModelScale()), getModelScale() * 2.0f); } - //float temp = _skeletonModel->getRenderableMeshBound().getLargestDimension(); - //qCDebug(animation) << " largest bounding box dimension " << temp; return _skeletonModel->getRenderableMeshBound(); } @@ -1777,7 +1775,6 @@ void Avatar::buildUnscaledEyeHeightCache() { // Sanity check by looking at the model extents. Extents meshExtents = _skeletonModel->getUnscaledMeshExtents(); float meshHeight = meshExtents.size().y; - //qCDebug(animation) << "mesh height " << meshHeight << " skeleton height " << skeletonHeight; // if we determine the mesh is much larger then the skeleton, then we use the mesh height instead. // This helps prevent absurdly large avatars from exceeding the domain height limit. diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 80a9c5ccae..b5b8c039a1 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -139,6 +139,8 @@ void CauterizedModel::updateClusterMatrices() { glm::vec4(0.0f, 0.0f, 0.0f, 1.0f)); auto cauterizeMatrix = _rig.getJointTransform(geometry.neckJointIndex) * zeroScale; + // qCDebug(renderutils) << "cauterize matrix: " << cauterizeMatrix; + for (int i = 0; i < _cauterizeMeshStates.size(); i++) { Model::MeshState& state = _cauterizeMeshStates[i]; const FBXMesh& mesh = geometry.meshes.at(i); diff --git a/libraries/shared/src/shared/Camera.cpp b/libraries/shared/src/shared/Camera.cpp index c80e14d87c..787b7bfb1a 100644 --- a/libraries/shared/src/shared/Camera.cpp +++ b/libraries/shared/src/shared/Camera.cpp @@ -9,7 +9,6 @@ // #include "Camera.h" -//#include "../SharedLogging.h" /**jsdoc *

Camera modes affect the position of the camera and the controls for camera movement. The camera can be in one of the From f26d6b8c3dc30957477271987647e4f60c96a708 Mon Sep 17 00:00:00 2001 From: amantley Date: Thu, 9 Aug 2018 12:15:35 -0700 Subject: [PATCH 3/4] cleaned up code and changed the forward offset for the default eyes when there is no neck bone --- interface/src/avatar/MyAvatar.cpp | 2 +- .../src/avatars-renderer/SkeletonModel.cpp | 15 +++------------ libraries/render-utils/src/CauterizedModel.cpp | 2 -- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 8ba0841196..d456028bbe 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1992,7 +1992,7 @@ void MyAvatar::initHeadBones() { if (neckJointIndex == -1) { neckJointIndex = (_skeletonModel->getFBXGeometry().headJointIndex - 1); if (neckJointIndex < 0) { - //return if the head is not even there. can't cauterize!! + // return if the head is not even there. can't cauterize!! return; } } diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index 83caaede8d..11bad6c1b8 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -71,23 +71,14 @@ void SkeletonModel::initJointStates() { qCWarning(avatars_renderer) << "Bad head joint! Got:" << headJointIndex << "jointCount:" << _rig.getJointStateCount(); } glm::vec3 leftEyePosition, rightEyePosition; - qCDebug(avatars_renderer) << "initial left and right eyes " << leftEyePosition << " " << rightEyePosition; getEyeModelPositions(leftEyePosition, rightEyePosition); - qCDebug(avatars_renderer) << "after setting the left and right eyes " << leftEyePosition << " " << rightEyePosition; glm::vec3 midEyePosition = (leftEyePosition + rightEyePosition) / 2.0f; int rootJointIndex = geometry.rootJointIndex; glm::vec3 rootModelPosition; getJointPosition(rootJointIndex, rootModelPosition); - qCDebug(avatars_renderer) << "root joint index " << rootJointIndex << " root position: " << rootModelPosition; _defaultEyeModelPosition = midEyePosition - rootModelPosition; - if (headJointIndex > -1) { - glm::vec3 headModelPosition; - getJointPosition(headJointIndex, headModelPosition); - qCDebug(avatars_renderer) << "we have a head joint " << headJointIndex << " and " << headModelPosition; - } - qCDebug(avatars_renderer) << "the default eye pos " << _defaultEyeModelPosition << " and scale " << _scale; // Skeleton may have already been scaled so unscale it _defaultEyeModelPosition = _defaultEyeModelPosition / _scale; @@ -307,11 +298,11 @@ bool SkeletonModel::getEyeModelPositions(glm::vec3& firstEyePosition, glm::vec3& glm::vec3 baseEyePosition = headPosition; glm::quat headRotation; getJointRotation(geometry.headJointIndex, headRotation); - const float EYES_FORWARD = 0.25f; + const float EYES_FORWARD_HEAD_ONLY = 0.30f; const float EYE_SEPARATION = 0.1f; float headHeight = glm::distance(neckPosition, headPosition); - firstEyePosition = baseEyePosition + headRotation * glm::vec3(EYE_SEPARATION, 0.0f, EYES_FORWARD); - secondEyePosition = baseEyePosition + headRotation * glm::vec3(-EYE_SEPARATION, 0.0f, EYES_FORWARD); + firstEyePosition = baseEyePosition + headRotation * glm::vec3(EYE_SEPARATION, 0.0f, EYES_FORWARD_HEAD_ONLY); + secondEyePosition = baseEyePosition + headRotation * glm::vec3(-EYE_SEPARATION, 0.0f, EYES_FORWARD_HEAD_ONLY); return true; } return false; diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index b5b8c039a1..80a9c5ccae 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -139,8 +139,6 @@ void CauterizedModel::updateClusterMatrices() { glm::vec4(0.0f, 0.0f, 0.0f, 1.0f)); auto cauterizeMatrix = _rig.getJointTransform(geometry.neckJointIndex) * zeroScale; - // qCDebug(renderutils) << "cauterize matrix: " << cauterizeMatrix; - for (int i = 0; i < _cauterizeMeshStates.size(); i++) { Model::MeshState& state = _cauterizeMeshStates[i]; const FBXMesh& mesh = geometry.meshes.at(i); From 93baad73873eb1de6fd0745dd6d430464563293d Mon Sep 17 00:00:00 2001 From: amantley Date: Thu, 9 Aug 2018 14:35:44 -0700 Subject: [PATCH 4/4] removed unnecessary computation of head height from eye position code --- .../avatars-renderer/src/avatars-renderer/SkeletonModel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index 11bad6c1b8..1ec58fd704 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -300,7 +300,6 @@ bool SkeletonModel::getEyeModelPositions(glm::vec3& firstEyePosition, glm::vec3& getJointRotation(geometry.headJointIndex, headRotation); const float EYES_FORWARD_HEAD_ONLY = 0.30f; const float EYE_SEPARATION = 0.1f; - float headHeight = glm::distance(neckPosition, headPosition); firstEyePosition = baseEyePosition + headRotation * glm::vec3(EYE_SEPARATION, 0.0f, EYES_FORWARD_HEAD_ONLY); secondEyePosition = baseEyePosition + headRotation * glm::vec3(-EYE_SEPARATION, 0.0f, EYES_FORWARD_HEAD_ONLY); return true;