Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução: conceito abstrato usado para localizar objetos no espaço R2 ou R3. Sistema de Coordenadas de eixos cartesianos Objetivo: Localizar objetos em um espaço através de medidas de distâncias Descrição de um ponto: conjunto de três valores (coordenadas cartesianas): X (largura) – informa a localização esquerda (-X) ou direita (+X) em relação à origem de um eixo lateral Y (altura) – informa a localização acima (+Y) ou abaixo (-Y) em relação à origem de um eixo vertical Z (profundidade) – informa a localização perto (+Z) ou longe (-Z) em relação à origem de um eixo longitudinal Origem – é o ponto no qual os três eixos se encontram. - Possui valores de X, Y e Z iguais a zero: (0, 0, 0). - É o centro do volume espacial. Aplicação - Utilizado para localizar o centro de um objeto no espaço. Comp Graf – Cena3D Observador +Z +X +Y Origem Comp Graf – Espaço Vetorial dos Pontos Ponto - especifica uma posição no espaço. Requer três coordenadas cartesianas. Vetor – é especificado por dois pontos: um ponto de partida e outro ponto de chegada. Portanto a representação de um vetor requer seis números: três para fornecer as coordenadas do ponto de partida e três para as coordenadas do ponto de chegada. Simplificação: Se o ponto de partida é a origem, pode-se representar um vetor por apenas três números: as suas coordenadas em relação à origem. - Um ponto P (x, y, z) pode ser visto como um vetor A indo da origem até ele. - Um vetor pode ser deslocado, sem se alterar, desde que seu comprimento e direção sejam mantidos. - O espaço de coordenadas cartesianas é na verdade um espaço vetorial, e todo vértice de um objeto define um vetor que vai da origem até ele. Comp Graf – Sistema de Coordenadas Esférico Objetivo: Orientar objetos em um espaço através de medidas de ângulos Descrição de um ponto: conjunto de três valores (coordenadas esféricas): Pitch (arfagem) – indica a inclinação para frente ou para trás, mede a rotação em torno do eixo X (como um molinete, uma roda de automóvel visto de frente, ou um rolo compressor) Observador +Z +X +Y Pitch Yaw (Guinada) – direção, refere-se ao rumo (curso), mede a rotação em torno do eixo Y (como um carrossel, uma bússula, ou um liquidificador) Observador +Z +X +Y Yaw Roll (Rolamento) – indica a inclinação para esquerda ou para a direita, mede a rotação em torno do eixo Z (como um ventilador, ou guidão de automóvel) Observador +Z +X +Y Roll Origem – é o ângulo a partir do qual se faz as visadas. Aplicação - Utilizado para fornecer uma orientação (ou atitude) a um objeto no espaço Comp Graf – Sistema de Coordenadas Esférico Comp Graf – Cena3D Cena: É uma região do espaço 3D que pode conter as seguintes entidades: Objetos 3D Luzes Câmera Comp Graf – Objeto3D Definição: É tudo que pode ser visto na cena (paredes, cadeiras, livros, etc.) Propriedades: Formato – descreve a superfície de contorno do objeto. Pode ser construída com diversos formatos básicos ou primitivos (por ex: esfera, cone, cubo, cilindro, etc.) Tamanho – descreve as dimensões que caracterizam a grandeza e a pequenez do objeto, por exemplo: largura, altura e profundidade Superfície – descreve a rugosidade, aspereza e suavidade da superfície de contorno do objeto, que influencia a sua interação com a luz. Por exemplo: metálica, plástica, espelhada, vítrea, emborrachada, etc. Textura – descreve como um padrão de cores é distribuído na superfície. É uma grade bidimensional de valores de cor. Geralmente são fornecidas de arquivos bitmap. Por exemplo: mármore, madeira, areia, pedra, creme, água, etc. Posicionamento – informa a localização e atitude (orientação, direção para onde está apontando) do objeto no espaço da cena Comp Graf – Luzes Definição: São objetos especiais que não apresentam as propriedades: formato, tamanho e superfície. Portanto, não são visíveis na cena, embora seus efeitos o sejam. Iluminam os objetos da cena, podendo alterar suas cores Uma única cena pode conter várias luzes. Projetam sombras e criam partes de destaque nos objetos através de brilhos. Propriedades: Posicionamento – informa a localização e atitude da luz no espaço da cena Textura – informa a cor que está sendo irradiada Tipo – categoriza a luz segundo uma das alternativas: Luz Ambiente – é a mais simples. Não possui localização. Ilumina todos os objetos com a mesma intensidade Luz Pontual (omni-direcional)– emite luz a partir de um ponto (sua localização) em todas as direções (não possui uma atitude ou orientação específica) Luz Direcional – possui orientação, mas não possui localização. Seus raios são paralelos entre si. Luz Spot – possui orientação e localização. Produz luz na forma de um cone (determinado pelos ângulos de iluminação máxima – umbra - e periférica - penumbra) Comp Graf – Câmera ou Observador Um sistema de aplicação 3D deverá ler o arquivo de cena e criar uma imagem bidimensional da informação tridimensional fornecida. Esta imagem é como uma fotografia da cena, logo precisa do posicionamento de uma câmera. A câmera é um tipo especial de objeto que só possui a propriedade posicionamento (localização e atitude no espaço). É usada para visualizar a cena, mas não é visível na cena. É uma analogia prática com uma máquina fotográfica, substitui o observador. Só pode ser uma única. Z X Y xObj zObj yObj Câmera Objeto Comp Graf – Cena3D Conceitos Conceitos Centro do Objeto - É o ponto eqüidistante dos extremos do objeto. Eixo do Objeto - É uma reta que parte do centro do objeto, segundo a direção do maior comprimento do objeto. Pivot – Centro de coordenadas do objeto, em referência a algum ponto do objeto Comp Graf – Cena3D Conceitos Formatos Primitivos - Observa-se na natureza a repetição do formato de certos tipos de objetos: Bola de futebol Sol Lua Bolha de sabão Balão de aniversário Coisa Comum: Esfera Caneta Chaminé Foguete Poste Cigarro Coisa Comum: Cilindro Megafone Funil Chapéu chinês Coisa Comum: Cone Pneu Rosca Argola Anel Coisa Comum: Toróide Edifício Armário Caixa de sapato Microcomputador Maço de cigarros Coisa Comum: Paralelepípedo Formatos Derivados - Quando aproximados por superfícies planas os formatos primitivos geram objetos facetados como os prismas, as pirâmides e os poliedros Cone Pirâmide Cilindro Prisma Comp Graf – Cena3D Conceitos Comp Graf – Posicionamento no Espaço 3D Para definir o posicionamento no espaço 3D de forma completa é necessário definir os atributos de localização e atitude. Localização – informa a região do espaço onde está o objeto, através das coordenadas cartesianas do seu centro. Atitude - informa qual é a disposição do objeto em uma dada localidade através das coordenadas esféricas de um eixo do objeto. Os dois objetos possuem a mesma localização, mas estão em atitudes diferentes Comp Graf – Cena3D Objetos Primitivos: São objetos 3D com formato primitivo, tamanho predefinido, posicionado em uma determinada localidade e com uma certa atitude Definições: Tamanho do Objeto Primitivo = unitário largura = altura = profundidade = 1 Localidade do Objeto Primitivo = Origem Atitude do Objeto Primitivo = ortogonal (perpendicular) aos eixos cartesianos Formatos do Objeto Primitivo: cubo e formatos derivados de esfera, cilindro, cone, etc. Comp Graf – Cena3D Regra de Posicionamento de Objetos 3D(operações elementares) Pode-se posicionar um objeto 3D a partir de um objeto primitivo aplicando-se: Distorções - são transformações de escala para levar um objeto primitivo à um tamanho igual ao do objeto 3D Objeto primitivo (posição pré- definida) Aumento de escala Comp Graf - Cena3D Deslocamentos - são transformações por movimento de translação que levam um objeto primitivo a ocupar a mesma localidade do objeto 3D. Deslocamento Orientações - são transformações por movimento de rotação que levam um objeto primitivo à mesma atitude do objeto 3D Rotação Comp Graf - Cena3D Observações: Como o tamanho do objeto primitivo é unitário: Distorção(objeto Primitivo) = Tamanho(objeto 3D) Como o objeto primitivo está centrado na origem: Deslocamento(objeto Primitivo) = Localização(objeto 3D) Como a atitude do objeto primitivo é ortogonal aos eixos: Orientação(objeto Primitivo) = Atitude(objeto 3D) Conclusão: Pode-se construir qualquer objeto 3D à partir dos objetos primitivos do sistema, informando-se: Distorção por escala: kx, ky, kz Orientação: yaw, roll, pitch Deslocamento: x, y, z Posicionamento(objeto 3D) = Orientação (Deslocamento(Distorção(Objeto Primitivo))) Mudança de Escala Movimento de Translação Movimento de Rotação Este capítulo descreve como trabalhar em 3D usando OpenGL. As bibliotecas GLU e GLUT possuem uma série de funções para desenhar primitivas 3D, tais como esferas, cones, cilindros e “teapot”. Em 3D se assume que o processo utilizado para visualizar uma determinada cena é análogo a tirar uma fotografia com uma máquina fotográfica, o que inclui, segundo [Woo 1999], os seguintes passos: Arrumar o tripé e posicionar a câmera para fotografar a cena - equivalente a especificar as transformações de visualização (veja a função gluLookAt); Arrumar a cena para ser fotografada, incluindo ou excluindo objetos/pessoas - equivalente à etapa de modelagem (inclui as tranformações geométricas, glTranslatef, glScalef, glRotatef, e o desenho dos objetos); Escolher a lente da câmera ou ajustar o zoom - equivalente a especificar as transformações de projeção (veja a função gluPerspective); Determinar o tamanho final da foto (maior ou menor) - equivalente a especificar a viewport (funções glViewport e ChangeSize). OpenGL – Ambiente 3D Exemplo: gluLookAt (0, 80, 200, 0, 0, 0, 0, 1, 0); Função que define a transformação de visualização. Através dos seus argumentos é possível indicar a posição da câmera e para onde ela está direcionada. Protótipo: void gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz ); Descrição dos parâmetros: eyex, eyey e eyez são usados para definir as coordenadas x, y e z, respectivamente, da posição da câmera (ou observador); centerx, centery e centerz são usados para definir as coordenadas x, y e z, respectivamente, da posição do alvo, isto é, para onde o observador está olhando (normalmente, o centro da cena); upx, upy e upz são as coordenadas x, y e z, que estabelecem o vetor up (indica o "lado de cima" de uma cena 3D). OpenGL – Ambiente 3D Exemplo: gluPerspective (angle, aspect, 0.1, 500); Função que estabelece os parâmetros da Projeção Perspectiva, atualizando a matriz de projeção perspectiva. Protótipo: void gluPerspective( GLdouble angle, GLdouble aspect, GLdouble zNear, GLdouble zFar ); Descrição dos parâmetros: “angle” é 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. OpenGL – Ambiente 3D • Funções para desenhar objetos 3D (GLUT): - void glutWireCube(GLdouble size); - void glutWireSphere(GLdouble radius, GLint slices, GLint stacks); - void glutWireCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks); - void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); - void glutWireIcosahedron(void); - void glutWireOctahedron(void); - void glutWireTetrahedron(void); - void glutWireDodecahedron(GLdouble radius); - void glutWireTeapot(GLdoouble size); OpenGL – Ambiente 3D OpenGL – Ambiente 3D Exemplo: glutWireTeapot (50.0f); • Função usada para desenhar o wire-frame de um “teapot” ( bule de chá). • Protótipo: glutWireTeapot(GLdoouble size); • Descrição: o parâmetro size indica um raio aproximado do teapot. Uma esfera com este raio irá "envolver" totalmente o modelo. Os parâmetros slices e stacks que aparecem no protótipo de algumas funções, significam, respectivamente, o número de subdivisões em torno do eixo z (como se fossem linhas longitudinais) e o número de subdivisões ao longo do eixo z (como se fossem linhas latitudinais). Já rings e nsides correspondem, respectivamente, ao número de seções que serão usadas para formar o torus, e ao número de subdivisões para cada seção. void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); OpenGL – Ambiente 3D Torus (rings=20, nsides=20)Torus (rings=6, nsides=20)
Compartilhar