void KeyCallback(unsigned char key, int x, int y) { switch(key) { case 's': { // // Take a screenshot, and save as screenshot.jpg // STImage* screenshot = new STImage(gWindowSizeX, gWindowSizeY); screenshot->Read(0,0); screenshot->Save("screenshot.jpg"); delete screenshot; } break; case 'r': resetCamera(); break; case 'u': resetUp(); break; case 'm': // switch between the mesh you create and the mesh from file mesh = !mesh; break; //case 'p': //switch proxy type between sphere and cylinder // proxyType=!proxyType; // if(proxyType) gTriangleMesh->CalculateTextureCoordinatesViaSphericalProxy(); // else gTriangleMesh->CalculateTextureCoordinatesViaCylindricalProxy(-1,1,0,0,1); // break; case 'n': // switch between normalMapping and displacementMapping normalMapping = !normalMapping; break; case 'f': // switch between smooth shading and flat shading smooth = !smooth; break; //case 'l': // do loop subdivision // if(mesh){ // gTriangleMesh->LoopSubdivide(); // if(proxyType) gTriangleMesh->CalculateTextureCoordinatesViaSphericalProxy(); // else gTriangleMesh->CalculateTextureCoordinatesViaCylindricalProxy(-1,1,0,0,1); // } // else // gManualTriangleMesh->LoopSubdivide(); // break; //case 'w': // gTriangleMesh->Write("output.obj"); // break; case 'a': for(unsigned int id=0;id<gTriangleMeshes.size();id++) gTriangleMeshes[id]->mDrawAxis=!gTriangleMeshes[id]->mDrawAxis; if(gManualTriangleMesh!=0) gManualTriangleMesh->mDrawAxis=!gManualTriangleMesh->mDrawAxis; break; case 'q': exit(0); default: break; } glutPostRedisplay(); }
void KeyCallback(unsigned char key, int x, int y) { // TO DO: Any new key press events must be added to this function switch(key) { case 's': { // // Take a screenshot, and save as screenshot.jpg // STImage* screenshot = new STImage(gWindowSizeX, gWindowSizeY); screenshot->Read(0,0); screenshot->Save("../../data/images/screenshot.jpg"); delete screenshot; } break; case 'r': resetCamera(); break; case 'u': resetUp(); break; case 'm': // switch between the mesh you create and the mesh from file mesh = !mesh; break; case 'n': // switch between normalMapping and displacementMapping normalMapping = !normalMapping; break; case 't': createSphere(); break; // TO:DO do loop subdivision, uncomment this code // modify it so that it works with your sphere // simply make sure you are calling the functions // on the correct mesh. //--------------------------------- case 'l': if(mesh){ for(int i=0; i<gTriangleMeshes.size(); i++){ gTriangleMeshes[i]->LoopSubdivide(); if(proxyType) gTriangleMeshes[i]->CalculateTextureCoordinatesViaSphericalProxy(); //else // gTriangleMeshes[i]->CalculateTextureCoordinatesViaCylindricalProxy(); } break; case 'f': // switch between smooth shading and flat shading smooth = !smooth; break; case 'w': for(unsigned int id=0;id<gTriangleMeshes.size();id++) gTriangleMeshes[id]->Write("output.obj"); break; case 'a': for(unsigned int id=0;id<gTriangleMeshes.size();id++) gTriangleMeshes[id]->mDrawAxis=!gTriangleMeshes[id]->mDrawAxis; if(gManualTriangleMesh!=0) gManualTriangleMesh->mDrawAxis=!gManualTriangleMesh->mDrawAxis; break; case 'q': exit(0); default: break; } glutPostRedisplay(); } }