A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Visualização Tridimensional. Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três eixos ortogonais.

Apresentações semelhantes


Apresentação em tema: "Visualização Tridimensional. Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três eixos ortogonais."— Transcrição da apresentação:

1 Visualização Tridimensional

2 Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três 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 posições ao longo dos respectivos eixos

3 O processo de visualização 3D é mais complexo do que o 2D, pois compreende um numero maior de etapas. Esta complexidade existe porque quase todos os dispositivos de saída, tais como monitores e impressoras, são somente 2D. Assim é preciso definir como a cena 3D e projetada em uma imagem 2D.

4 Visualização 3D: câmera sintética * Corresponde ao pipeline clássico de visualização de objetos 3D; * Câmera é localizada e orientada no SRU; * Coordenadas dos objetos são transformadas para o SRC; * Coordenadas são projetadas no plano de projeção; * Coordenadas são mapeadas para a viewport.

5 Câmera Sintética (Observador) A primeira etapa do processo de visualização 3D é a definição da cena 3D. Nesta etapa cada um dos objetos que farão parte do mundo 3D é incluído e posicionado no SRU (escala, translação e rotação).

6 Para localizar a câmara é necessário especificar a sua posição

7 O próximo passo consiste na especificação do observador virtual, um componente fundamental do processo de visualização 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.

8 Portanto, a especificação do observador inclui a sua posição e orientação, ou seja, onde o observador está e para onde ele está olhando dentro do universo. A necessidade da existência do observador deve-se ao fato de que um mesmo conjunto de objetos 3D, visto de diferentes lugares, tem diferentes coordenadas para cada posição.

9 Câmera Fotográfica Como a imagem gerada a partir da posição e orientação do observador é estática, faz-se analogia com uma foto. Pode-se dizer que se obtém uma fotografia quando a câmera está em uma determinada posição direcionada para o objeto. A posição da câmera é dada por um ponto (x,y,z) e sua orientação é dada por um ponto alvo (x,y,z) e um vetor chamado up.

10

11 Projeções

12 Paralela Ortográfica – As projetantes são 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 distância finita do plano de projeção e passam pelos pontos que definem os objetos.

13 Transformações de Visualização Duas interpretações: Duas interpretações: Levam a câmera até a cena que se quer visualizar Levam a câmera até a cena que se quer visualizar Levam os objetos da cena até uma câmera estacionária Levam os objetos da cena até uma câmera estacionária gluLookAt(Obs x,Obs y,O bs,alvo x,alvo y,alvo z,up x, up y, up z ); gluLookAt(Obs x,Obs y,O bs z,alvo x,alvo y,alvo z,up x, up y, up z ); Obs = ponto onde a câmera será posicionada Alvo = ponto para onde a câmera será apontada up = vetor que dá a direção “para cima” da câmera. x y z alvo Obs Up

14 Funções OpenGL As funções descritas abaixo são utilizadas para configurar a câmera sintética e a projeção perspectiva quando se está trabalhando com OpenGL

15 gluLookAt; define a transformação de visualização. Seu protótipo é: Descrição dos parâmetros: obsx, obsy e obsz são usados para definir as coordenadas x, y e z, respectivamente, da posição da câmera (ou observador); alvox, alvoy e alvoz são usados para definir as coordenadas x, y e z, respectivamente, da posição do alvo, isto é, para onde o observador está olhando; upx, upy e upz são as coordenadas x, y e z, que estabelecem o vetor up. Seu protótipo é: void gluLookAt( GLdouble obsx, GLdouble obsy, GLdouble obsz, GLdouble alvox, GLdouble alvoy, GLdouble alvoz, GLdouble upx, GLdouble upy, GLdouble upz );. Descrição dos parâmetros: obsx, obsy e obsz são usados para definir as coordenadas x, y e z, respectivamente, da posição da câmera (ou observador); alvox, alvoy e alvoz são usados para definir as coordenadas x, y e z, respectivamente, da posição do alvo, isto é, para onde o observador está olhando; upx, upy e upz são as coordenadas x, y e z, que estabelecem o vetor up.

16 gluPerspective; Esta função estabelece os parâmetros da Projeção Perspectiva, atualizando a matriz de projeção perspectiva. Seu protótipo é: gluPerspective; Esta função estabelece os parâmetros da Projeção Perspectiva, atualizando a matriz de projeção perspectiva. Seu protótipo é: void gluPerspective( GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar );. Descrição dos parâmetros: fovy é o ângulo, em graus, na direção y (usada para determinar a "altura" do volume de visualização); aspect é a razão de aspecto que determina a área de visualização na direção x, e seu valor é a razão em x (largura) e y (altura); zNear, que sempre deve ter um valor positivo maior do que zero, é a distância do observador até o plano de corte mais próximo (em z); zFar, que também sempre tem um valor positivo maior do que zero, é a distância do observador até o plano de corte mais afastado (em z). Esta função sempre deve ser definida ANTES da função gluLookAt, e no modo GL_PROJECTION.

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

18 Função Perspectiva

19

20 Exemplo 1 O código fonte “Exemplo3D.cpp desenha um cubo com projeção perspectiva. O cubo é um dos objetos predefinidos da biblioteca GLUT. As funções gluPerspective e gluLookAt são utilizadas como segue: gluPerspective(60, fAspect, 0.5, 500); gluLookAt(40, 60, 100, 0, 0, 0, 0, 1, 0);

21 Defina a variável global: GLfloat fAspect; Em seguida crie uma rotina com o nome EspecificaParametrosVisualizacao, como segue:

22 // Função usada para especificar o volume de visualização void EspecificaParametrosVisualizacao(void) { // Especifica sistema de coordenadas de projeção glMatrixMode(GL_PROJECTION); // Inicializa sistema de coordenadas de projeção glLoadIdentity(); // Especifica a projeção perspectiva(angulo,aspecto,zMin,zMax ) gluPerspective(60,fAspect,0.5,500);

23 // Especifica sistema de coordenadas do modelo glMatrixMode(GL_MODELVIEW); // Inicializa sistema de coordenadas do modelo glLoadIdentity(); // Especifica posição do observador e do alvo gluLookAt(40,60,100, 0,0,0, 0,1,0); }

24 Na função desenha, acrescente o cubo como definido abaixo, antes de glflush. // Função da GLUT para fazer o desenho de um cubo // com a cor corrente glutWireCube(50);

25 Em seguida em: void AlteraTamanhoJanela(GLsizei w, GLsizei h) Acrescente a variável global declarada anteriormente como: // Calcula a correção de aspecto fAspect = (GLfloat)w/(GLfloat)h; logo depois de glViewport. E por último acrescente a rotina criada anteriormente também: EspecificaParametrosVisualizacao();

26 Projeção Ortográfica Para trabalhar com projeção ortográfica, basta configurá-la através da chamada para a seguinte função: Void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far)

27 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 posição do observador.

28 Exercício 1 Aplicar no codigo fonte Exemplo3D.cpp uma projeção ortográfica utilizando a função glOrtho: glOrtho(-65.0, 65.0, -65.0, 65.0, -400.0, 400.0);


Carregar ppt "Visualização Tridimensional. Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três eixos ortogonais."

Apresentações semelhantes


Anúncios Google