1 / 9

Funções para serem usadas no exercício de Lab 04/03/11

Funções para serem usadas no exercício de Lab 04/03/11. Visualização 3D Incluir no FrameWork Básico (já feito em Lab), as funções: // Função responsável por inicializar parâmetros e variáveis void WorkSpace(void) {

emery
Download Presentation

Funções para serem usadas no exercício de Lab 04/03/11

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Funções para serem usadas no exercício de Lab 04/03/11 Visualização 3D Incluir no FrameWork Básico (já feito em Lab), as funções: // Função responsável por inicializar parâmetros e variáveis void WorkSpace(void) { // Notem que mudou sensivelmente o Menu, agora F1 também rotaciona (para incluir rotação a esquerda e direita) printf("\nAo Pressionar ‘m’ essas Instrucoes sempre serao Reapresentadas\n"); printf("\n\n"); printf("Instrucoes\n\n"); printf("Pressione o Botao Esquerdo, Arraste e Solte para Transladar\n\n"); printf("Tecle F1, F2 e F3 para rotacionar a direita, esquerda e em y \n\n"); printf("Tecle F4 e F5 para escalonar\n\n"); printf("Use o Botao Direito para Acessar o Menu\n\n"); glutInitWindowPosition(0,0); glutInitWindowSize(LarWindow, AltWindow); glutCreateWindow("Exercicio Lab CG "); glClearColor(1, 1, 1, 0);

  2. Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) Continua …… // Especifica as dimensões da Viewport glViewport(0, 0, LarWindow, AltWindow); GLfloat xMin = (GLfloat) -LarWindow/2.0; // largura minima GLfloat xMax = (GLfloat) LarWindow/2.0; // largura maxima GLfloat yMin = (GLfloat) -AltWindow/2.0; // largura minima GLfloat yMax = (GLfloat) AltWindow/2.0; // largura maxima gluOrtho2D (xMin, xMax, yMin, yMax); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }

  3. Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) // Wireframe predefinido no OpenGL para incluir um TeaPot // Substitui o desenho de primitivas – Apenas para dar aulas void DesenhaTeaPot() { glColor3f(R,G,B); glutWireTeapot(0.5); }

  4. Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) // Função callback de redesenho da janela de visualização void Desenha(void) { // Limpa a janela de visualização com a cor branca glClear(GL_COLOR_BUFFER_BIT); if (triangulo) DesenhaTriangulo(); if (quadrado) DesenhaQuadrado(); if (poligono) DesenhaPoligono(); if (teapot) /// Novidade!!! Agora desenha um TeaPot DesenhaTeaPot(); //Executa os comandos OpenGL glFlush(); //glutPostRedisplay(); }

  5. Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) // Teclado para Teclas Especiais void TecladoEspecial(int tecla, int x, int y) { switch(tecla) { case 'm': printf("\nAo Pressionar 'm', essas Instrucoes sempre serao Reapresentadas\n"); printf("\n\n"); printf("Instrucoes\n\n"); printf("Pressione o Botao Esquerdo, Arraste e Solte para Transladar\n\n"); printf("Tecle F1, F2 e F3 para rotacionar\n\n"); printf("Tecle F4 e F5 para escalonar\n\n"); printf("Use o Botão Direito para Acessar o Menu\n\n"); break; case GLUT_KEY_F1: // Rotaciona em X rotX = 1; glRotatef(2.0,rotX,0.0,0.0); /// Novidade!! Agora as variaveis de transformação são feitas aqui rotX = 0; /// Foram incluidas rotX, rotY e rotZ Globais (Retirar as variaveis de transformacao) glutPostRedisplay(); /// das funções de Desenho, como antes break;

  6. Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) Continua ,…… case GLUT_KEY_F2: // Rotaciona em Y rotY = 1; glRotatef(2.0,0.0,rotY,0.0); rotY = 0; glutPostRedisplay(); break; case GLUT_KEY_F3: // Rotaciona em Z rotZ = -1; glRotatef(2.0,0.0,0.0,rotZ); rotZ = 0; glutPostRedisplay(); break; case GLUT_KEY_F4: // Amplia glScalef(1.1,1.1,1.1); glutPostRedisplay(); break; case GLUT_KEY_F5: // Reduz glScalef(0.9,0.9,0.9); glutPostRedisplay(); break; case GLUT_KEY_INSERT: printf("\nPressionada a Tecla INSERT\n"); break; case GLUT_KEY_HOME: printf("\nPressionada a Tecla HOME\n"); break; } }

  7. Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) void MouseMotion(int botton, int state, int x, int y) { switch(botton) { case GLUT_LEFT_BUTTON: switch(state) { case GLUT_DOWN: //printf("botao esquerdo foi pressionado em (x,y) = (%d,%d)\n\n",x,y); xini = x; yini = y; break; case GLUT_UP: GLfloat dx = (GLfloat)x - (GLfloat)xini; // Novidade!!! as variaveis de translação agora são atualizadas aqui GLfloat dy = (GLfloat)yini - (GLfloat)y; GLfloat dz = 0; //if (teapot) dx = dx/1000; dy = dy/1000; glTranslatef(dx/100.0,dy/100.0,0); dx = 0.0; dy = 0.0; xini = x; yini = y; glutPostRedisplay(); break; }; break; case GLUT_RIGHT_BUTTON: break; } }

  8. Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) // Controle de Primitivas int quadrado = 0, triangulo = 0, poligono = 0, teapot = 1; // Variáveis para controles de navegação GLfloat angle, fAspect; GLfloat rotX, rotY, rotZ; // Inlcuir opção para Teapot no menu agora é com vocês!!!

  9. Exercícios com Pontuação 1- [Nível Básico]: Faça um programa básico em OpenGL para desenhar um TeaPot em 3D. 2- [Nível Médio]: Usando como FrameWork básico o programa de transformações de primitivas básicas do exercício da aula passada, inclua o Teapot3D no sistema. Observe o Demo na página da disciplina.

More Related