コード例 #1
0
void update(int value)
{   optotrak.updatePoints();
    markers = optotrak.getAllPoints();

    headEyeCoords.update(markers[1],markers[2],markers[3]);
    modelCoordinates.update(markers[10],markers[19],markers[20]);
    if ( isVisible(markers[20]+markers[19]+markers[10]) )
    {
        rigidCurrent.setRigidBody(markers[20], markers[19],modelCoordinates.getFinger() );
        rigidAux.computeTransformation(rigidCurrent,true);	// true the scaling matrix
    }
    eyeLeft = headEyeCoords.getLeftEye();
    eyeRight = headEyeCoords.getRightEye();

    glutPostRedisplay();
    glutTimerFunc(TIMER_MS, update, 0);
}
コード例 #2
0
void drawInfo()
{
    markers = optotrak.getAllPoints();
    if ( headCalibrationDone==0 )
    {
        allVisibleHead = isVisible(markers[17]) && isVisible(markers[18]) && isVisible(markers[1]) && isVisible(markers[2]) && isVisible(markers[3]) ;
        allVisibleModel = (markers[10]+markers[14]+markers[19]+markers[20]).norm() < 1E20;
        if ( allVisibleHead )
            glClearColor(0.0,1.0,0.0,1.0); //green light
        else
            glClearColor(1.0,0.0,0.0,1.0); //red light
    }

    GLText text;
    text.init(SCREEN_WIDTH,SCREEN_HEIGHT,glWhite,GLUT_BITMAP_HELVETICA_18);
    text.enterTextInputMode();
    text.draw("Head is visible? " + stringify<int>(allVisibleHead));
    text.draw("Full model is visible? " + stringify<bool>(allVisibleModel));
    text.draw( stringify<double>((markers[14]-modelCoordinates.getFinger()).norm()));
    text.leaveTextInputMode();
}