void display(void) { #if 0 Matrix m1, m2, m3; Quaternion q1; tball.getRotation().getValue(m3); q1.setValue(m3); m1.setRotate(q1); m2.setTranslate( tball.getPosition() ); m1.mult( m2 ); if(move_obj == true) { scene_trans->editSFMatrix()->setValue( m1 ); } else { cam_trans->editSFMatrix()->setValue( m1 ); } #endif cam_trans->editSFMatrix()->setValue(tball.getFullTrackballMatrix()); #if 0 fprintf(stderr, "%f %f %f\n", cam_trans->getMatrix()[3][0], cam_trans->getMatrix()[3][1], cam_trans->getMatrix()[3][2]); #endif OSG::Real32 t = glutGet(GLUT_ELAPSED_TIME); for(OSG::UInt32 i = 0; i < 6; ++i) { if(pAnimTrs[i] != NULL) { pAnimTrs[i]->editRotation().setValueAsAxisDeg( 0.f, 1.f, 0.f, t / 50.f); } } OSG::commitChanges(); // fprintf(stderr, "Frame start\n"); // fprintf(stderr, "============================================\n"); win->render(rentravact); }
void display(void) { OSG::Matrix m1; m1 = tball.getFullTrackballMatrix(); cam_trans->editSFMatrix()->setValue(m1); OSG::commitChanges(); win->render(rentravact); }
void redraw ( void ) { OSG::Matrix m1, m2, m3; OSG::Quaternion q1; tball.getRotation().getValue(m3); q1.setValue(m3); m1.setRotate(q1); m2.setTranslate( tball.getPosition() ); m1.mult( m2 ); cam_trans->editSFMatrix()->setValue( m1 ); OSG::Thread::getCurrentChangeList()->commitChanges(); win->render(ract); }
void display(void) { OSG::Matrix m1, m2, m3; OSG::Quaternion q1; tball.getRotation().getValue(m3); q1.setValue(m3); m1.setRotate(q1); // std::cout << "TBROT" << std::endl << tball.getRotation() << endl; // std::cout << "M3" << std::endl << m3 << std::endl; // std::cout << "Q1" << std::endl << q1 << std::endl; // std::cout << "M1" << std::endl << m1 << std::endl; // m1.setRotate( tball.getRotation() ); m2.setTranslate( tball.getPosition() ); //std::cout << "Pos: " << tball.getPosition() << ", Rot: " << tball.getRotation() << std::endl; // std::cout << tball.getRotation() << std::endl; m1.mult( m2 ); // std::cerr << m1 << std::endl; m1 = tball.getFullTrackballMatrix(); if(move_obj == true) { scene_trans->editSFMatrix()->setValue( m1 ); } else { cam_trans->editSFMatrix()->setValue( m1 ); } OSG::commitChangesAndClear(); win->render(rentravact); if(dumpImg == true) { vpFBO->setTravMask(oldTravMask); pTexBuffer ->setReadBack (false); vpFBO->getFrameBufferObject()->setPostProcessOnDeactivate(false); pImg->write("/tmp/test.png"); dumpImg = false; } if(dumpImg_RB == true) { pRenBuffer->getImage()->write("/tmp/test1.png"); dumpImg_RB = false; win->subPortByObj(vpFBO_RB); vpFBO_RB = NULL; pRenBuffer = NULL; win->runFrameExit(); // OSG::FieldContainerFactory::the()->dump(); } // win->render(renact); // std::cerr << "------------- AR START --------------" << std::endl; // Thread::getCurrentChangeList()->dump(); }
void display(void) { OSG::Time t; // std::cout << glutGet(GLUT_WINDOW_WIDTH) << std::endl; t=-OSG::getSystemTime(); if(animate && animPos.size()>1) { if(animLength>0) animTime = frameCount * (animPos.size())/float(animLength); OSG::UInt32 i=OSG::UInt32(animTime); OSG::Real32 a=animTime-i; OSG::Vec3f v; OSG::Quaternion q; if(i+1 < animPos.size()) { v = animPos[i] + (animPos[i+1] - animPos[i]) * a; q = OSG::Quaternion::slerp(animOri[i],animOri[i+1],a); } else { v = animPos[i]; q = animOri[i]; } cam_trans->editMatrix().setTranslate(v[0],v[1],v[2]); cam_trans->editMatrix().setRotate(q); } else { cam_trans->editSFMatrix()->setValue( tball.getFullTrackballMatrix() ); } try { OSG::Thread::getCurrentChangeList()->commitChanges(); #if 0 clusterWindow->activate(); clusterWindow->frameInit(); clusterWindow->renderAllViewports(ract); #endif clusterWindow->renderNoFinish(ract); #if 0 if(showInfo) { displayInfo(10,90); /* char text[1024]; sprintf(text,"FPS: %12.1f",1.0/frame_time); showText(10,70,text); sprintf(text,"Positions: %12d",sum_positions); showText(10,50,text); sprintf(text,"Triangles: %12d",sum_triangles); showText(10,30,text); sprintf(text,"Geometries: %12d",sum_geometries); showText(10,10,text); */ } #endif #if 0 clusterWindow->swap(); clusterWindow->frameExit(); #endif clusterWindow->frameFinish(); // clear changelist from prototypes OSG::Thread::getCurrentChangeList()->clear(); } catch(OSG_STDEXCEPTION_NAMESPACE::exception &e) { std::cout << e.what() << std::endl; cleanup(); exit(0); } t+=OSG::getSystemTime(); frame_time = t; if(animate && animPos.size()>1) { OSG::Vec3f v; printf("Frame %8.3f %8.5f %8.3f\n", animTime, t,1/t); frameCount++; if(frameCount == animLength) { animTime = 0; frameCount = 0; if(animLoops > 0) { animLoops--; if(!animLoops) { cleanup(); exit(0); } } } } }