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); }
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(); }