From 60dc43041fe7ed33c3e0cdd36bd92c9cbcc1fa8f Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Mon, 8 Apr 2013 22:42:45 -0700 Subject: [PATCH] added rendering lines between avatar bones --- interface/src/Head.cpp | 64 +++++++++++++++++++++++++++++++++--------- interface/src/Head.h | 2 +- interface/src/main.cpp | 2 ++ 3 files changed, 53 insertions(+), 15 deletions(-) diff --git a/interface/src/Head.cpp b/interface/src/Head.cpp index 1bad6e2021..35a3c547b7 100755 --- a/interface/src/Head.cpp +++ b/interface/src/Head.cpp @@ -961,13 +961,13 @@ void Head::updateHandMovement() // adjust right hand and elbow according to hand offset //---------------------------------------------------------------- avatar.bone[ AVATAR_BONE_RIGHT_HAND ].worldPosition += handOffset; - glm::dvec3 armVector = avatar.bone[ AVATAR_BONE_RIGHT_HAND ].worldPosition; + glm::vec3 armVector = avatar.bone[ AVATAR_BONE_RIGHT_HAND ].worldPosition; armVector -= avatar.bone[ AVATAR_BONE_RIGHT_SHOULDER ].worldPosition; //------------------------------------------------------------------------------- // test to see if right hand is being dragged beyond maximum arm length //------------------------------------------------------------------------------- - double distance = glm::length( armVector ); + float distance = glm::length( armVector ); //------------------------------------------------------------------------------- @@ -979,10 +979,10 @@ void Head::updateHandMovement() // reset right hand to be constrained to maximum arm length //------------------------------------------------------------------------------- avatar.bone[ AVATAR_BONE_RIGHT_HAND ].worldPosition = avatar.bone[ AVATAR_BONE_RIGHT_SHOULDER ].worldPosition; - glm::dvec3 armNormal = armVector / distance; - armVector = armNormal * avatar.maxArmLength; + glm::vec3 armNormal = armVector / distance; + armVector = armNormal * (float)avatar.maxArmLength; distance = avatar.maxArmLength; - glm::dvec3 constrainedPosition = avatar.bone[ AVATAR_BONE_RIGHT_SHOULDER ].worldPosition; + glm::vec3 constrainedPosition = avatar.bone[ AVATAR_BONE_RIGHT_SHOULDER ].worldPosition; constrainedPosition += armVector; avatar.bone[ AVATAR_BONE_RIGHT_HAND ].worldPosition = constrainedPosition; } @@ -990,8 +990,8 @@ void Head::updateHandMovement() //----------------------------------------------------------------------------- // set elbow position //----------------------------------------------------------------------------- - glm::dvec3 newElbowPosition = avatar.bone[ AVATAR_BONE_RIGHT_SHOULDER ].worldPosition; - newElbowPosition += armVector * ONE_HALF; + glm::vec3 newElbowPosition = avatar.bone[ AVATAR_BONE_RIGHT_SHOULDER ].worldPosition; + newElbowPosition += armVector * (float)ONE_HALF; glm::dvec3 perpendicular = glm::dvec3( -armVector.y, armVector.x, armVector.z ); newElbowPosition += perpendicular * ( 1.0 - ( avatar.maxArmLength / distance ) ) * ONE_HALF; avatar.bone[ AVATAR_BONE_RIGHT_FOREARM ].worldPosition = newElbowPosition; @@ -1005,21 +1005,57 @@ void Head::renderBody() { glColor3fv(skinColor); + // Render bones as spheres for (int b=0; b