From 3dc03f44a13d9d0881c265ae1bce8231cd79da94 Mon Sep 17 00:00:00 2001 From: Jeffrey Ventrella Date: Mon, 22 Apr 2013 16:32:35 -0700 Subject: [PATCH] improved rendering of avatar --- interface/src/Head.cpp | 122 ++++++++++++++++++++++++----------------- 1 file changed, 71 insertions(+), 51 deletions(-) diff --git a/interface/src/Head.cpp b/interface/src/Head.cpp index f4dcdbee53..fd054bd6f3 100644 --- a/interface/src/Head.cpp +++ b/interface/src/Head.cpp @@ -649,12 +649,7 @@ void Head::render(int faceToFace) { glutSolidSphere( 1, 20, 20 ); glPopMatrix(); } - - //--------------------------------------------------- - // show avatar orientation - //--------------------------------------------------- - renderOrientationDirections( _bone[ AVATAR_BONE_HEAD ].position, _bone[ AVATAR_BONE_HEAD ].orientation, 0.2f ); - + //--------------------------------------------------- // render body //--------------------------------------------------- @@ -708,6 +703,11 @@ void Head::renderHead(int faceToFace) { glEnable(GL_DEPTH_TEST); glEnable(GL_RESCALE_NORMAL); + //--------------------------------------------------- + // show head orientation + //--------------------------------------------------- + //renderOrientationDirections( _bone[ AVATAR_BONE_HEAD ].position, _bone[ AVATAR_BONE_HEAD ].orientation, 0.2f ); + glPushMatrix(); if (_usingBodySprings) { @@ -900,7 +900,7 @@ void Head::initializeSkeleton() { _bone[b].pitch = 0.0; _bone[b].roll = 0.0; _bone[b].length = 0.0; - _bone[b].radius = 0.02; //default + _bone[b].radius = 0.0; _bone[b].springBodyTightness = 4.0; _bone[b].orientation.setToIdentity(); } @@ -955,29 +955,54 @@ void Head::initializeSkeleton() { //---------------------------------------------------------- // specify the default pose position //---------------------------------------------------------- - _bone[ AVATAR_BONE_PELVIS_SPINE ].defaultPosePosition = glm::vec3( 0.0, 0.3, 0.0 ); - _bone[ AVATAR_BONE_MID_SPINE ].defaultPosePosition = glm::vec3( 0.0, 0.1, 0.0 ); - _bone[ AVATAR_BONE_CHEST_SPINE ].defaultPosePosition = glm::vec3( 0.0, 0.1, 0.0 ); - _bone[ AVATAR_BONE_NECK ].defaultPosePosition = glm::vec3( 0.0, 0.06, 0.0 ); - _bone[ AVATAR_BONE_HEAD ].defaultPosePosition = glm::vec3( 0.0, 0.06, 0.0 ); - _bone[ AVATAR_BONE_LEFT_CHEST ].defaultPosePosition = glm::vec3( -0.06, 0.06, 0.0 ); - _bone[ AVATAR_BONE_LEFT_SHOULDER ].defaultPosePosition = glm::vec3( -0.03, 0.0, 0.0 ); - _bone[ AVATAR_BONE_LEFT_UPPER_ARM ].defaultPosePosition = glm::vec3( 0.0, -0.12, 0.0 ); - _bone[ AVATAR_BONE_LEFT_FOREARM ].defaultPosePosition = glm::vec3( 0.0, -0.1, 0.0 ); - _bone[ AVATAR_BONE_LEFT_HAND ].defaultPosePosition = glm::vec3( 0.0, -0.05, 0.0 ); - _bone[ AVATAR_BONE_RIGHT_CHEST ].defaultPosePosition = glm::vec3( 0.06, 0.06, 0.0 ); - _bone[ AVATAR_BONE_RIGHT_SHOULDER ].defaultPosePosition = glm::vec3( 0.03, 0.0, 0.0 ); - _bone[ AVATAR_BONE_RIGHT_UPPER_ARM ].defaultPosePosition = glm::vec3( 0.0, -0.12, 0.0 ); - _bone[ AVATAR_BONE_RIGHT_FOREARM ].defaultPosePosition = glm::vec3( 0.0, -0.1, 0.0 ); - _bone[ AVATAR_BONE_RIGHT_HAND ].defaultPosePosition = glm::vec3( 0.0, -0.05, 0.0 ); - _bone[ AVATAR_BONE_LEFT_PELVIS ].defaultPosePosition = glm::vec3( -0.05, 0.0, 0.0 ); - _bone[ AVATAR_BONE_LEFT_THIGH ].defaultPosePosition = glm::vec3( 0.0, -0.15, 0.0 ); - _bone[ AVATAR_BONE_LEFT_SHIN ].defaultPosePosition = glm::vec3( 0.0, -0.15, 0.0 ); - _bone[ AVATAR_BONE_LEFT_FOOT ].defaultPosePosition = glm::vec3( 0.0, 0.0, 0.04 ); - _bone[ AVATAR_BONE_RIGHT_PELVIS ].defaultPosePosition = glm::vec3( 0.05, 0.0, 0.0 ); - _bone[ AVATAR_BONE_RIGHT_THIGH ].defaultPosePosition = glm::vec3( 0.0, -0.15, 0.0 ); - _bone[ AVATAR_BONE_RIGHT_SHIN ].defaultPosePosition = glm::vec3( 0.0, -0.15, 0.0 ); - _bone[ AVATAR_BONE_RIGHT_FOOT ].defaultPosePosition = glm::vec3( 0.0, 0.0, 0.04 ); + _bone[ AVATAR_BONE_PELVIS_SPINE ].defaultPosePosition = glm::vec3( 0.0, 0.3, 0.0 ); + _bone[ AVATAR_BONE_MID_SPINE ].defaultPosePosition = glm::vec3( 0.0, 0.1, 0.0 ); + _bone[ AVATAR_BONE_CHEST_SPINE ].defaultPosePosition = glm::vec3( 0.0, 0.06, 0.0 ); + _bone[ AVATAR_BONE_NECK ].defaultPosePosition = glm::vec3( 0.0, 0.06, 0.0 ); + _bone[ AVATAR_BONE_HEAD ].defaultPosePosition = glm::vec3( 0.0, 0.06, 0.0 ); + _bone[ AVATAR_BONE_LEFT_CHEST ].defaultPosePosition = glm::vec3( -0.06, 0.06, 0.0 ); + _bone[ AVATAR_BONE_LEFT_SHOULDER ].defaultPosePosition = glm::vec3( -0.03, 0.0, 0.0 ); + _bone[ AVATAR_BONE_LEFT_UPPER_ARM ].defaultPosePosition = glm::vec3( 0.0, -0.1, 0.0 ); + _bone[ AVATAR_BONE_LEFT_FOREARM ].defaultPosePosition = glm::vec3( 0.0, -0.1, 0.0 ); + _bone[ AVATAR_BONE_LEFT_HAND ].defaultPosePosition = glm::vec3( 0.0, -0.05, 0.0 ); + _bone[ AVATAR_BONE_RIGHT_CHEST ].defaultPosePosition = glm::vec3( 0.06, 0.06, 0.0 ); + _bone[ AVATAR_BONE_RIGHT_SHOULDER ].defaultPosePosition = glm::vec3( 0.03, 0.0, 0.0 ); + _bone[ AVATAR_BONE_RIGHT_UPPER_ARM ].defaultPosePosition = glm::vec3( 0.0, -0.1, 0.0 ); + _bone[ AVATAR_BONE_RIGHT_FOREARM ].defaultPosePosition = glm::vec3( 0.0, -0.1, 0.0 ); + _bone[ AVATAR_BONE_RIGHT_HAND ].defaultPosePosition = glm::vec3( 0.0, -0.05, 0.0 ); + _bone[ AVATAR_BONE_LEFT_PELVIS ].defaultPosePosition = glm::vec3( -0.05, 0.0, 0.0 ); + _bone[ AVATAR_BONE_LEFT_THIGH ].defaultPosePosition = glm::vec3( 0.0, -0.15, 0.0 ); + _bone[ AVATAR_BONE_LEFT_SHIN ].defaultPosePosition = glm::vec3( 0.0, -0.15, 0.0 ); + _bone[ AVATAR_BONE_LEFT_FOOT ].defaultPosePosition = glm::vec3( 0.0, 0.0, 0.04 ); + _bone[ AVATAR_BONE_RIGHT_PELVIS ].defaultPosePosition = glm::vec3( 0.05, 0.0, 0.0 ); + _bone[ AVATAR_BONE_RIGHT_THIGH ].defaultPosePosition = glm::vec3( 0.0, -0.15, 0.0 ); + _bone[ AVATAR_BONE_RIGHT_SHIN ].defaultPosePosition = glm::vec3( 0.0, -0.15, 0.0 ); + _bone[ AVATAR_BONE_RIGHT_FOOT ].defaultPosePosition = glm::vec3( 0.0, 0.0, 0.04 ); + + + _bone[ AVATAR_BONE_PELVIS_SPINE ].radius = 0.05; + _bone[ AVATAR_BONE_MID_SPINE ].radius = 0.06; + _bone[ AVATAR_BONE_CHEST_SPINE ].radius = 0.03; + _bone[ AVATAR_BONE_NECK ].radius = 0.02; + _bone[ AVATAR_BONE_HEAD ].radius = 0.02; + _bone[ AVATAR_BONE_LEFT_CHEST ].radius = 0.025; + _bone[ AVATAR_BONE_LEFT_SHOULDER ].radius = 0.02; + _bone[ AVATAR_BONE_LEFT_UPPER_ARM ].radius = 0.02; + _bone[ AVATAR_BONE_LEFT_FOREARM ].radius = 0.015; + _bone[ AVATAR_BONE_LEFT_HAND ].radius = 0.01; + _bone[ AVATAR_BONE_RIGHT_CHEST ].radius = 0.025; + _bone[ AVATAR_BONE_RIGHT_SHOULDER ].radius = 0.02; + _bone[ AVATAR_BONE_RIGHT_UPPER_ARM ].radius = 0.02; + _bone[ AVATAR_BONE_RIGHT_FOREARM ].radius = 0.015; + _bone[ AVATAR_BONE_RIGHT_HAND ].radius = 0.01; + _bone[ AVATAR_BONE_LEFT_PELVIS ].radius = 0.02; + _bone[ AVATAR_BONE_LEFT_THIGH ].radius = 0.02; + _bone[ AVATAR_BONE_LEFT_SHIN ].radius = 0.015; + _bone[ AVATAR_BONE_LEFT_FOOT ].radius = 0.02; + _bone[ AVATAR_BONE_RIGHT_PELVIS ].radius = 0.02; + _bone[ AVATAR_BONE_RIGHT_THIGH ].radius = 0.02; + _bone[ AVATAR_BONE_RIGHT_SHIN ].radius = 0.015; + _bone[ AVATAR_BONE_RIGHT_FOOT ].radius = 0.02; //---------------------------------------------------------------------------- // calculate bone length @@ -1125,17 +1150,6 @@ glm::vec3 Head::getHeadPosition() { } return _bone[ AVATAR_BONE_HEAD ].position; - - -/* - return glm::vec3 - ( - _bone[ AVATAR_BONE_HEAD ].position.x, - _bone[ AVATAR_BONE_HEAD ].position.y, - _bone[ AVATAR_BONE_HEAD ].position.z - ); -*/ - } @@ -1251,18 +1265,21 @@ void Head::renderBody() { for (int b=0; b