visualiza§£o tridimensional

Download Visualiza§£o Tridimensional

Post on 12-Jan-2016

40 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Visualização Tridimensional. - PowerPoint PPT Presentation

TRANSCRIPT

  • Visualizao Tridimensional

  • Quando se trabalha em trs dimenses, o SRU (Sistema de Referncia do Universo) passa a ser composto por trs eixos ortogonais entre si (x,y e z) e pela origem (0.0,0.0,0.0). Uma coordenada agora formada pelos valores de x, y e z, que correspondem s posies ao longo dos respectivos eixos

  • O processo de visualizao 3D mais complexo do que o 2D, pois compreende um numero maior de etapas. Esta complexidade existe porque quase todos os dispositivos de sada, tais como monitores e impressoras, so somente 2D. Assim preciso definir como a cena 3D e projetada em uma imagem 2D.

  • Visualizao 3D: cmera sinttica* Corresponde ao pipeline clssico devisualizao de objetos 3D;* Cmera localizada e orientada no SRU;* Coordenadas dos objetos so transformadas para o SRC;* Coordenadas so projetadas no plano de projeo;* Coordenadas so mapeadas para a viewport.

  • Cmera Sinttica (Observador)A primeira etapa do processo de visualizao 3D a definio da cena 3D. Nesta etapa cada um dos objetos que faro parte do mundo 3D includo e posicionado no SRU (escala, translao e rotao).

  • Para localizar a cmara necessrio especificar a sua posio

  • O prximo passo consiste na especificao do observador virtual, um componente fundamental do processo de visualizao 3D. Este observador define de que local deseja-se que a cena 3D seja exibida, por exemplo, de cima, do lado direito ou do esquerdo.

  • Portanto, a especificao do observador inclui a sua posio e orientao, ou seja, onde o observador est e para onde ele est olhando dentro do universo. A necessidade da existncia do observador deve-se ao fato de que um mesmo conjunto de objetos 3D, visto de diferentes lugares, tem diferentes coordenadas para cada posio.

  • Cmera FotogrficaComo a imagem gerada a partir da posio e orientao do observador esttica, faz-se analogia com uma foto. Pode-se dizer que se obtm uma fotografia quando a cmera est em uma determinada posio direcionada para o objeto. A posio da cmera dada por um ponto (x,y,z) e sua orientao dada por um ponto alvo (x,y,z) e um vetor chamado up.

  • Projees

  • Paralela Ortogrfica As projetantes so paralelas entre si, passam pelos pontos que definem os objetos e interseccionam o plano com um ngulo de 90 graus.

    Perspectiva As projetantes emanam de um nico ponto que est a uma distncia finita do plano de projeo e passam pelos pontos que definem os objetos.

  • Transformaes de VisualizaoDuas interpretaes:Levam a cmera at a cena que se quer visualizarLevam os objetos da cena at uma cmera estacionriagluLookAt(Obsx,Obsy,Obsz,alvox,alvoy,alvoz,upx, upy, upz); Obs = ponto onde a cmera ser posicionadaAlvo = ponto para onde a cmera ser apontadaup = vetor que d a direo para cima da cmera.

    xyzalvoObsUp

  • Funes OpenGLAs funes descritas abaixo so utilizadas para configurar a cmera sinttica e a projeo perspectiva quando se est trabalhando com OpenGL

  • gluLookAt; define a transformao de visualizao. Seu prottipo : void gluLookAt( GLdouble obsx, GLdouble obsy, GLdouble obsz, GLdouble alvox, GLdouble alvoy, GLdouble alvoz, GLdouble upx, GLdouble upy, GLdouble upz );. Descrio dos parmetros: obsx, obsy e obsz so usados para definir as coordenadas x, y e z, respectivamente, da posio da cmera (ou observador); alvox, alvoy e alvoz so usados para definir as coordenadas x, y e z, respectivamente, da posio do alvo, isto , para onde o observador est olhando; upx, upy e upz so as coordenadas x, y e z, que estabelecem o vetor up.

  • gluPerspective; Esta funo estabelece os parmetros da Projeo Perspectiva, atualizando a matriz de projeo perspectiva. Seu prottipo : void gluPerspective( GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar );.Descrio dos parmetros: fovy o ngulo, em graus, na direo y (usada para determinar a "altura" do volume de visualizao); aspect a razo de aspecto que determina a rea de visualizao na direo x, e seu valor a razo em x (largura) e y (altura); zNear, que sempre deve ter um valor positivo maior do que zero, a distncia do observador at o plano de corte mais prximo (em z); zFar, que tambm sempre tem um valor positivo maior do que zero, a distncia do observador at o plano de corte mais afastado (em z). Esta funo sempre deve ser definida ANTES da funo gluLookAt, e no modo GL_PROJECTION.

  • GLvoid glFrustum ( GLdouble esquerda, GLdouble direita, GLdouble baixo, GLdouble cima, GLdouble proximo, GLdouble afastado)

  • Funo Perspectiva

  • Funo Perspectiva

  • Exemplo 1O cdigo fonte Exemplo3D.cpp desenha um cubo com projeo perspectiva. O cubo um dos objetos predefinidos da biblioteca GLUT. As funes gluPerspective e gluLookAt so utilizadas como segue: gluPerspective(60, fAspect, 0.5, 500);

    gluLookAt(40, 60, 100, 0, 0, 0, 0, 1, 0);

  • Defina a varivel global:

    GLfloat fAspect;

    Em seguida crie uma rotina com o nome EspecificaParametrosVisualizacao, como segue:

  • // Funo usada para especificar o volume de visualizaovoid EspecificaParametrosVisualizacao(void){// Especifica sistema de coordenadas de projeoglMatrixMode(GL_PROJECTION);// Inicializa sistema de coordenadas de projeoglLoadIdentity();

    //Especifica a projeo perspectiva(angulo,aspecto,zMin,zMax)gluPerspective(60,fAspect,0.5,500);

  • // Especifica sistema de coordenadas do modeloglMatrixMode(GL_MODELVIEW);// Inicializa sistema de coordenadas do modeloglLoadIdentity();

    // Especifica posio do observador e do alvogluLookAt(40,60,100, 0,0,0, 0,1,0);}

  • Na funo desenha, acrescente o cubo como definido abaixo, antes de glflush.

    // Funo da GLUT para fazer o desenho de um cubo // com a cor correnteglutWireCube(50);

  • Em seguida em:void AlteraTamanhoJanela(GLsizei w, GLsizei h)

    Acrescente a varivel global declarada anteriormente como:// Calcula a correo de aspectofAspect = (GLfloat)w/(GLfloat)h;logo depois de glViewport. E por ltimo acrescente a rotina criada anteriormente tambm: EspecificaParametrosVisualizacao();

  • Projeo OrtogrficaPara trabalhar com projeo ortogrfica, basta configur-la atravs da chamada para a seguinte funo:

    Void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far)

  • Os valores left e right especificam os limites min e max no eixo X; analogamente, bottom e top especificam os limites min e max no eixo Y, enquanto near e far especificam os limites min e max no eixo Z, geralmente com os valores negativos para o lado oposto da posio do observador.

  • Exerccio 1Aplicar no codigo fonte Exemplo3D.cpp uma projeo ortogrfica utilizando a funo glOrtho:

    glOrtho(-65.0, 65.0, -65.0, 65.0, -400.0, 400.0);