This commit is contained in:
Guido Ranzuglia 2016-11-23 23:57:14 +01:00
commit aa8cf5f4ae
2 changed files with 65 additions and 4 deletions

View File

@ -96,6 +96,7 @@ void PanMode::Apply (Trackball * tb, Point3f new_point)
void PanMode::Draw(Trackball * tb){ void PanMode::Draw(Trackball * tb){
DrawSphereIcon(tb,true); DrawSphereIcon(tb,true);
DrawSphereAxis(tb);
DrawUglyPanMode(tb); DrawUglyPanMode(tb);
} }

View File

@ -832,6 +832,66 @@ void DrawUglyScaleMode(Trackball * tb)
DrawUglyLetter(tb,ugly_s); DrawUglyLetter(tb,ugly_s);
} }
/*!
@brief function to draw X,Y and Z axis in the trackball sphere.
Draws the three colored axis inside the trackball sphere. added to better see the trackball center when panning
@param tb the manipulator.
*/
void DrawSphereAxis(Trackball * tb)
{
glPushAttrib(GL_TRANSFORM_BIT | GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT | GL_LINE_BIT | GL_CURRENT_BIT | GL_LIGHTING_BIT);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glDepthMask(GL_FALSE);
Point3f center = tb->center + tb->track.InverseMatrix()*Point3f(0, 0, 0);
glTranslate(center);
glScale(tb->radius / tb->track.sca);
float amb[4] = { .35f, .35f, .35f, 1.0f };
float col[4] = { .5f, .5f, .8f, 1.0f };
glEnable(GL_LINE_SMOOTH);
glLineWidth(DH.LineWidthMoving);
glDisable(GL_COLOR_MATERIAL); // has to be disabled, it is used by wrapper to draw meshes, and prevent direct material setting, used here
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor(DH.color);
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, amb);
col[0] = 1.0f; col[1] = 0.0f; col[2] = 0.0f;
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col);
glBegin(GL_LINES);
glNormal3d(-1.0, 0.0, 0.0);
glVertex3d(-1.2, 0.0, 0.0);
glNormal3d( 1.0, 0.0, 0.0);
glVertex3d( 1.2, 0.0, 0.0);
glEnd();
col[0] = 0.0f; col[1] = 1.0f; col[2] = 0.0f;
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col);
glBegin(GL_LINES);
glNormal3d(0.0,-1.0, 0.0);
glVertex3d(0.0,-1.2, 0.0);
glNormal3d(0.0, 1.0, 0.0);
glVertex3d(0.0, 1.2, 0.0);
glEnd();
col[0] = 0.0f; col[1] = 0.0f; col[2] = 1.0f;
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col);
glBegin(GL_LINES);
glNormal3d(0.0, 0.0,-1.0);
glVertex3d(0.0, 0.0,-1.2);
glNormal3d(0.0, 0.0, 1.0);
glVertex3d(0.0, 0.0, 1.2);
glEnd();
glPopMatrix();
glPopAttrib();
}
/*! /*!
@brief AxisMode drawing function, member of the \e DrawUgly series. @brief AxisMode drawing function, member of the \e DrawUgly series.