Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Nome:Vitor Ferreira Vieira Matrícula: 20162103212 Ex1: Responda com suas palavras às perguntas abaixo: 1.1. Descreva as matrizes de transformação e as respectivas instruções OpenGL para representar as transformações geométricas 3D de um objeto. Cite exemplos e parâmetros usados para as transformações geométricas de escala, translação e rotação. Translação: deslocamento ao longo de uma direção (sem girar) 2D 3D x’ = x + xObj x’ = x + xObj y’ = y + yObj y’ = y + yObj z’ = z + zObj x é a posição x inicial, o ponto mais próximo do eixo x. y é a posição y inicial, o ponto mais próximo do eixo y. x’ é a nova posição de x y’ é a nova posição de y xObj é dx yObj é dy. Comando OpenGL: glTranslate(Tx, Ty, Tz). Translação em 2D: Translação em 3D: Rotação: um ângulo de rotação é aplicado a cada ponto de um objeto, fazendo com que esse objeto gire em torno de um ponto de referência R.sin(b) = y R.sin(a + b) = y’ R.cos(b) = x R.cos(a + b) = x’ cos(a + b) = cos(a).cos(b) – sin(a).sin(b) R.cos(a + b) = R.[cos(a).cos(b) – sin(a).sin(b)] = x’ R.cos(a).cos(b) – R.sin(a).sin(b) = x’ R.cos(b).cos(a) – R.sin(b).sin(a) = x’ x’ = x . cos(a) – y . sin(a) UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA sin(a + b) = sin(a).cos(b) + sin(b).cos(a) R.sin(a + b) = R[sin(a). cos(b) + sin(b).cos(a)] = y’ R.sin(a).cos(b) + R.sin(b).cos(a) = y’ R.cos(b).sin(a) + R.sin(b).cos(a) = y’ y’ = x . sin(a) + y . cos(a) Ou seja, x’ = x . cos(a) – y . sin(a) y’ = x . sin(a) + y. cos(a) 2D 3D Em torno do eixo z: Em torno do eixo x: Em torno do eixo y: x é a posição x inicial, o ponto mais próximo do eixo x. y é a posição y inicial, o ponto mais próximo do eixo y. x’ é a nova posição de x y’ é a nova posição de y a seria o ângulo da diferença de R e R’, logo seria o ângulo de Tg 𝑦′ 𝑥′ - Tg 𝑦 𝑥 Comando OpenGL: glRotate(ângulo, x, y, z). UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Escala: ampliar, reduzir ou distorcer o objeto em questão. 2D 3D x´= x. Sx x´= x. Sx y´= y. Sy y´= y. Sy z´= z. Sz x é a posição x inicial, o ponto mais próximo do eixo x. y é a posição y inicial, o ponto mais próximo do eixo y. x’ é a nova posição de x. y’ é a nova posição de y. Sx é a distorção em x. Sy é a distorção em y. Comando OpenGL: glScale(Ex, Ey, Ez). Casos de Escala: Sx = Sy > 1 → Ampliação 0 < Sx = Sy < 1 → Redução Sx <> Sy → Distorção: alongamento ou encolhimento Sx = Sy = –1 → Espelhamento: imagens refletidas Escala em 2D: Escala em 3D: 1.2. Explique as vantagens de se utilizar coordenadas homogêneas na representação das matrizes de transformação geométrica 3D simples e compostas. Como deve ser a ordem de declaração das instruções OpenGL de transformação geométrica? Um sistema de coordenada homogênea utiliza o valor adicional para representar um ponto num sistema de coordenada qualquer. A representação de uma transformação composta se reduz a uma multiplicação de matrizes quadradas com coordenadas homogêneas de qualquer transformação simples. UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA A representação de um ponto P(x,y) em um sistema de coordenadas homogêneo é: P(W.x , W.y , W) = P(X, Y, W) para qualquer W <> 0 W é chamado de fator de escala e x = X/W e y = Y/W. Nós sempre utilizaremos W = 1 e a divisão acima é desnecessária. Podemos imaginar um sistema de coordenadas homogêneas 2D, como posicionar o plano xy na posição W do eixo z de um sistema 3D qualquer. Assim podemos representar qualquer operação geométrica como uma matriz 3x3. Podemos realizar toda operação geométrica sobre um ponto como uma multiplicação de matrizes, onde uma é o ponto e a outra a matriz de transformação. 1fc 0eb 0da .1yx1y'X' Os parâmetros da matriz podem ser ajustados de forma a que represente as três operações: Translação 1DyDx 010 001 .1yx1y'X' Escalonamento 100 0Sy0 00Sx .1yx1y'X' Rotação 100 0cosθsenθ 0senθcosθ .1yx1y'X' Esta definição permite a concatenação de operações de uma forma muito eficiente. Como qualquer sequência de operações lineares é sempre uma operação linear, podemos expressar qualquer sequência de operações geométricas como uma única matriz, resultante da multiplicação das matrizes representando cada uma das operações. Através disto calculamos uma única matriz, que utilizamos para transformar todos os pontos do objeto. Exemplo: Escalonamento dos pontos de um objeto pelo ponto Sx = 2 e Sy = 2 seguido de uma translação pelo vetor Dx = 10 e Dy = 5: 100 020 002 .1yx1y'x' UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA 1510 010 001 .1yx1y"x" 1510 010 001 100 020 002 .1yx1y'x' 1510 020 002 .1yx1y"x" Isto é muito importante na rotação. Se quisermos rotacionar um objeto em torno de um ponto qualquer (por exemplo o seu próprio centro, que é a forma mais intuitiva de se rodar algo): – Necessitamos transladar o ponto sobre o qual será efetuada a rotação para a origem – Rotacional – Transladar de volta à posição original Para isso podemos calcular uma única matriz de rotação concatenada: 1DyDx 010 001 . 100 0cosθsenθ 0senθcosθ . 1DyDx 010 001 .1yx1y'x' 1. Para desenhar o objeto é necessário: a. Fazer a transformada de viewport em função dos pontos dados; b. Desenhar o objeto; c. Transladar o objeto; d. Desenhar novamente o objeto. 1.3. Qual a diferença entre as transformações geométricas aplicadas aos objetos 3D e as transformações geométricas aplicadas à câmera numa cena 3D ? Objeto 3D: Transformar um objeto por alguma operação nada mais é do que que aplicar esta operação em todos os pontos do objeto. Cena 3D: A cena, vista da câmera, exige os objetos referenciados ao sistema de coordenadas da câmera. SOLUÇÃO: Mover os objetos para o sistema de coordenadas da câmera, e em seguida retornar com os objetos para sua posição original, mantendo o sistema de coordenadas dos objetos fixo no sistema de coordenadas da câmera. – Associar o sistema de coordenadas da câmera ao sistema de coordenadas do UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA objeto (equivale a colocar o centro do objeto no sistema de coordenadas da câmera) – Mover o objeto em direção oposta à posição da câmera, mantendo seu sistema de coordenadas centrado na câmera. 1.4. Como podem ser classificadas as projeções geométricas? Descreva as instruções OpenGL e respectivos parâmetros para representar uma projeção Ortográfica e projeção Perspectiva em OpenGL. Dependem das relações entre o centro de projeção, plano de projeção e as direções dos raios deprojeção. Projeções Paralelas (projeções cilíndricas) Mantém o alinhamento dos pontos, pois a imagem de uma reta (sua projeção) é também uma reta. O paralelismo também é conservado (duas retas paralelas resultam em retas paralelas após a projeção) Projeções Perspectivas (projeções cônicas) Produzem imagens mais realistas pois representam medidas menores quanto mais distantes do observador. Mantém o alinhamento dos pontos, pois a imagem de uma reta (sua projeção) é também uma reta. O paralelismo não é conservado (duas retas paralelas podem não ficar paralelas após a projeção). Centro de projeção localizado no infinito e todas as linhas de projeção paralelas entre si. Paralelas ortográfica - linhas de projeção paralelas entre si e perpendiculares ao plano de projeção. Múltiplas Vistas Ortográficas Axonométrica Paralelas oblíquas - linhas de projeção inclinadas em relação ao plano de projeção Cavaleira Cabinet Projeções paralelas ortográficas - linhas de projeção paralelas entre si e perpendiculares ao plano de projeção Múltiplas Vistas Ortográficas – plano de projeção paralelo aos planos do objeto (faces): planta baixa, frente e elevação Axonométrica – plano de projeção posicionado inclinado em relação aos planos do objeto Isométrica – Os 3 eixos do objeto parecem ter a mesma mudança nas métricas: Ângulos de projeção entre os eixos principais são iguais entre si (120º) Dimétrica Trimétrica Projeção Ortográfica em OpenGL: static void Reshape(int width, int height) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-10, 10, -10, 10, 1.8, 7); // define o volume visível da projeção paralela UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA } Projeção Perspectiva em OpenGL: static void Reshape(int width, int height) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glFrustum(-10, 10, -10, 10, 1.8, 7); // define o volume visível da projeção perspectiva } 1.5. Descreva as propriedades de cada entidade que forma em uma cena 3D (objetos, câmera e iluminação). Objeto 3D: 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 Iluminação: 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) Câmera: É o ponto de vista que o observador poderá ver toda a cena que está disposta com os objetos. A imagem é como uma fotografia da cena, tendo assim uma visão geográfica da cena. UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Propriedades: · Um sistema de aplicação 3D deverá ler o arquivo de cena e criar uma imagem bidimensional da informação tridimensional fornecida. · 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. · 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. 1.6. Descreva os sistemas de coordenadas de referência que são utilizados em uma modelagem 3D: (Sistemas de Coordenadas do Objeto, Universo, Normalizado e Dispositivo). Sistema de Referência do Universo (SRU): Utilizado para descrever os objetos em termos das coordenadas utilizadas pelo usuário em uma determinada aplicação. • Cada tipo de aplicação especifica seu universo de trabalho próprio e limites de coordenadas extremos (valores máximos e mínimos). Exemplos: Sistema Radar – coordenadas polares (ângulos geográficos) Sistema CAD de mecânica de precisão: coordenadas cartesianas (milímetros) Sistema de Referência do Objeto (SRO): Cada objeto tem suas particularidades descritas em função do seu próprio sistema de coordenadas. Cada objeto representa um mini-universo individual. Muitas vezes o centro do sistema de coordenadas coincide com o centro geométrico ou centro de gravidade do objeto. Em modelagem de sólidos, este ponto central de referência é denominado pivô (ou pivot). Sistema de Referência Normalizado (SRN): Trabalha com coordenadas normalizadas com valores entre 0 e 1 (0 x 1 e 0 y 1), sendo x e y as coordenadas horizontais e verticais possíveis respectivamente. O SRN é um sistema de referência intermediário entre o SRU e o SRD; A principal aplicação do SRN é tornar a geração das imagens independente do dispositivo pois as coordenadas do universo são convertidas para um sistema de coordenadas padrão normalizado; Sistema de Referência do Dispositivo (SRD): Utiliza coordenadas que podem ser fornecidas diretamente para um dispositivo de saída especifico. O sistema de coordenadas depende geralmente da resolução e da configuração definida pelo usuário entre um conjunto de opções possíveis 1.7. Qual a diferença entre a descrição topológica e a descrição geométrica da estrutura UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA de um objeto 3D? Descreva as técnicas usadas para Modelagem de objetos 3D: Boundary Representation (B-Rep), Wireframe e Modelagem em camadas. Descrição Geométrica –fornece a localização (valores de coordenadas) de cada vértice. Descrição Topológica – fornece a estrutura da forma através das listas das arestas de cada face. A modelagem B-Rep (Boundary Representation) é um tipo de modelagem de sólidos que permite que superfícies sejam representadas por diversas formas matemáticas, incluindo curvas splines e curvas Bezier. São utilizadas em sistemas de CAD, sendo as técnicas mais conhecidas: – Modelagem por Polígonos – gera sólidos facetados A técnica de representação pelo contorno (B-Rep) define os volumes através do armazenamento dos elementos geométricos (faces, arestas e vértices) e da relação entre esses elementos (denominada de topologia) necessários para descrição do objeto. Um programa que utilize a modelagem B-Rep precisa registrar quais arestas estão associadas à cada face e quais vértices os limitam. Ao contrário da modelagem matemáticae da construção geométrica de sólidos, a modelagem B-Rep retrata uma entidade 3-D através da sua superfície externa facetada (limites externos da entidade). – Modelagem em Camadas Construtivas - gera sólidos facetados – Modelagem por pedaços splines Wireframe (armação de arame) é um modelo construído apenas com vértices e arestas envolvendo uma forma. As faces formadas pelos vértices e arestas são transparentes. O conjunto de vértices e arestas gera um poliedro. Desenha uma estrutura de traços, isto é, um objeto que não tem superfície alguma. O aumento do número de faces do poliedro, melhora a definição do modelo (fica mais próximo do real), pricipalmente nos sólidos com superfícies curvas. Entretanto, quanto mais faces tem o poliedro, mais "pesado" será o modelo para ser manipulado pelo computador. Na construção do modelo WireFrame pode-se usar os seguintes formatos: Formato triangular – é o mais simples e mais preciso já que três pontos não colineares sempre estarão em um plano. Gera estrutura na forma de treliças Formato de quadrilátero – pode sempre ser dividido, pela diagonal, em duas figuras triangulares Figuras poligonais – são as mais complexas A modelagem em camadas de um objeto (esfera, cilindro, cone, etc.) cria um objeto primitivo centrado na origem, onde os vértices situam-se sobre camadas de formato definido (normalmente circunferências). A estrutura do objeto primitivo irá requerer parâmetros adicionais: um índice correspondente ao número de camadas (nc) e outro índice correspondente aos vértices existentes nas camadas (nvc). Basicamente o processo ocorre em três etapas: São feitos cortes nos objetos definindo camadas Em cada camada são distribuídos um número fixo de vértices Os vértices entre camadas e nas próprias camadas são ligados 1.8. Descreva os conceitos de volume de visão e planos de recorte em uma cena 3D ? Como estes parâmetros podem ser definidos na biblioteca OpenGL. UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA É uma pirâmide reta truncada, cujo vértice está localizado na lente da câmera. Quaisquer entidades 3D localizadas fora do volume de visão não podem ser vistas pela câmera O volume de visão é normalizado quando for escalonado para se encaixar dentro do intervalo de –1 até +1, para simplificação dos cálculos. Planos de Recorte: São definidos opcionalmente para descartar as entidades 3D localizadas muito distantes ou muito próximas à câmera. Plano de Recorte Próximo – antes do qual nada pode ser visto Plano de Recorte Distante – após o qual nada pode ser visto Assegura que as fórmulas 3D não desperdiçarão tempo reproduzindo entidades tão distantes que não ocuparão mais do que um único pixel. Garante que as entidades localizadas muito perto da câmera também serão descartadas. O Volume de Visão de pirâmide reta truncada leva mais tempo para ser calculado pelo computador e reproduz uma perspectiva convencional. Para simplificar os cálculos, o volume de pirâmide é distorcido para a forma mais simples de um paralelepípedo. Assim, as funções de recorte e o código necessário para operar um sistema de ordenação de profundidade “z-buffer” ficam facilitados. void EspecificaParametrosVisualizacao(void) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(angle,fAspect,0.1,500); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0,80,200, 0,0,0, 0,1,0); } 1.9. Descreva o funcionamento do algoritmo de remoção de faces escondidas (Hidden Faces). Qual é a utilidade do produto vetorial e do produto escalar no algoritmo de Hidden Faces Remoção das Faces Escondidas: Primeiro, deve-se definir as superfí cies que a Câmera pode ver. Para determinar qual o lado do objeto está de frente para câmara calcula-se o vetor perpendicular à superfície de cada face. Este vetor é o resultado de um produto vetorial entre dois vetores pertencentes à uma face do sólido. Restrição: o vetor normal N à superfície deve apontar para fora dela . Se o resultado do cálculo do produto interno entre o vetor normal à superfície do objeto e um vetor que aponta para a câmara for positivo, então o lado correspondente do objeto será visível. 1.10. Descreva as propriedades da configuração e modelagem de fontes de luz e materiais em OpenGL. Dê exemplos dos coeficientes utilizados em cada campo. O primeiro passo para usar iluminação é desenhar objetos sólidos. Portanto, inicialmente, utilizando de métodos glutSolid. A ativação da iluminação, é feita através de duas etapas: primeiro ativamos as fontes de luz desejadas, e depois ativamos a iluminação como um todo. Para tanto, pode-se incluir linhas como: gl.glEnable(GL.GL_LIGHT0); UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA gl.glEnable(GL.GL_LIGHTING); O OpenGL suporta até 8 fontes de luz simultâneas, de GL_LIGHT0 a GL_LIGHT7 Para que a iluminação funcione, é preciso criar materiais, e especificar suas propriedades (ambiente, difusa e especular) através de chamadas aos métodos glMaterial. O problema é que esse processo é trabalhoso, então OpenGL suporta um recurso chamado COLOR MATERIAL, que faz com que a cor do material seja alterada de acordo com a cor corrente de desenho. Dessa forma, basta usar glColor. para modificar o material. Para que isso funcione, é preciso habilitar esse estado e informar de que forma a cor do material deve ser modificada. Além disso, é possível informar que devem ser alteradas as propriedades ambiente e difusa do material. Incluindo, por exemplo, as seguintes linhas no código: gl.glEnable(GL.GL_COLOR_MATERIAL); gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE); Também é necessário ajustar as propriedades da(s) fonte(s) de luz desejada(s). Para isso, um método defineIluminacao, pode ser o suficiente, insira uma chamada a ele no método display. // Define os parâmetros através de vetores RGBA - o último valor deve ser sempre 1.0f float luzAmbiente[]={0.2f, 0.2f, 0.2f, 1.0f}; float luzDifusa[]={0.7f, 0.7f, 0.7f, 1.0f}; float luzEspecular[]={1.0f, 1.0f, 1.0f, 1.0f}; float posicaoLuz[]={0.0f, 50.0f, 50.0f, 1.0f}; // Ativa o uso da luz ambiente gl.glLightModelfv(GL.GL_LIGHT_MODEL_AMBIENT, luzAmbiente, 0); // Define os parâmetros da luz de número 0 gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, luzAmbiente, 0); gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, luzDifusa, 0 ); gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, luzEspecular, 0); gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, posicaoLuz, 0 ); UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Ex 2 Para cada um dos sistemas de equações abaixo, que transformam coordenadas (x, y, z) em coordenadas (x', y', z'), determine uma matriz de transformação A (4x4) tal que: X' = A . X, onde X = (x, y, z, 1) e X' = (x', y', z', 1): 2x' = y - 2z + 3x - 1 a) y' + y = 3 - 2x z'/2 = z + 1 - 3y a) x' = x - y + 1 x' + y' = 2x - 1 2z = 1 - z’ + 3x UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Ex 3: Transformações Geométricas são a base de inúmeras aplicações gráficas. As matrizes de transformação podem representar diversos efeitos ou movimentos, tais como: translações, mudanças de escala, distorções, rotações e reflexões em relação aos eixos de coordenadas x, y, z, etc. Descreva detalhamente os efeitos e/ou movimentos em cada eixo e que são representados pelas seguintes matrizes de transformação Ai (4x4), que transformam pontos do espaço 3 para o espaço 3 U = Ai . X UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA A1 = Escala: 4x, 3y e 2z Translação: 0.25x, 0.33y, 0.5z A3 = 0 0 -1 0 A4 = ½ 0 0 ½ 0 1 00 0 ½ 0 ½ 1 0 0 0 0 0 ½ ½ 0 0 0 1 0 0 0 1 Rotação: angulo 90º, 0.0x, 1.0y, 0.0z Translação e Escala para cada coordenada: 0.5x, 0.5y, 0.5z Ex4: Descreva os comandos OpenGL que implementam as matrizes de transformações A1 , A2 , A3 e A4 do exercício 3 anterior. A1: glScalef(4.0f,3.0f,2.0f); A2: glTranslatef(0.25f, 0.33f, 0.5f); A3: glRotatef(90.0f, 0.0f, 1.0f, 0.0f); A4: glTranslate(0.5f, 0.5f, 0.5f); e glScalef(0.5f,0.5f,0.5f); Ex5: Calcule as matrizes inversas das matrizes de transformação A1 , A2 , A3 e A4 do exercício 3 anterior. Dica: Usar o método das transformações geométricas inversas. 4 0 0 0 A2 = 1 0 0 1/4 0 3 0 0 0 1 0 1/3 0 0 2 0 0 0 1 1/2 0 0 0 1 0 0 0 1 UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Ex6: Calcule os elementos da matriz de transformação B (4x4) tal que X'' = B . X, que transformam pontos X = (x, y, z, 1) em pontos X" = (x'', y'', z'', 1). A matriz B é uma matriz de transformação composta, formada a partir das matrizes de transformação A1 (4x4) e A2 (4x4) mostradas no ex.3 anterior, usando as equações matriciais a seguir: X' = A1 . X , onde X' = (x’, y’, z’, 1) X" = A2 . X' X' = A2 . X , onde X' = (x’, y’, z’, 1) X'' = A1 . X' UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Ex7: As matrizes de transformação de rotação representam giros simples em relação aos eixos x, y ou z. Escreva as matrizes transformação A (4x4) e os respectivos comandos OpenGLpara cada caso abaixo: Dados: cos 0 = 1 cos 90 = 0 cos 180 = -1 cos 270 = 0 sen 0 = 0 sen 90 = 1 sen 180 = 0 sen 270 = -1 a) Rotação de 270 em relação ao eixo x. b) Rotação de 90 em relação ao eixo y. c) Rotação de 180 em relação ao eixo z. d) Rotação de 360 em relação ao eixo x. UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Y P0 P4 P3 0 P1 X P2 P0 Y 1 P3 P1 -1/2 P2P4 +1/2 Ex08: O objeto primitivo Pirâmide é definido conforme as figuras abaixo: PIRÂMIDE: X X Z Z Vista de cima (sobre eixo Y) Vista frontal (sobre eixo Z) P4 -1/2 -1/2 P3 P0 0 +1/2 P1 P2 +1/2 UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA a) Defina a matriz de vértices com as coordenadas X, Y, Z para o objeto Pirâmide. X Y Z P0 0 1 0 P1 1/2 0 0 P2 0 0 1/2 P3 -1/2 0 0 P4 0 0 -1/2 A = 0 1 0 1/2 0 0 0 0 1/2 -1/2 0 0 0 0 -1/2 b) Defina a matriz de faces com vértices P0 até P4 para o objeto Pirâmide. P0 P1 P2 P3 P4 F0 0 1/2 1/2 -1/2 -1/2 F1 1 1/2 1/2 0 0 F2 1 0 1/2 -1/2 0 F3 1 0 0 -1/2 -1/2 F4 1 1/2 0 0 -1/2 Matriz P0 até P4 A = 0 1/2 1/2 -1/2 -1/2 1 1/2 1/2 0 0 1 0 1/2 -1/2 0 1 0 0 -1/2 -1/2 1 1/2 0 0 -1/2 c) Inclua no método Desenha as instruções necessárias para mostrar o objeto Pirâmide como modelagem Wireframe utilizando as instruções GL_LINE_LOOP Dica: Apostila Curso OpenGL da PUC-RS, capitulo 12. // Função callback chamada para fazer o desenho da Pirâmide (Wireframe) void DesenhaPirâmide(void) { // Limpa a janela e o depth buffer glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(1.0f, 1.0f, 1.0f); // Desenha Pirâmide wireframe glBegin(GL_LINELOOP); // Faces da Pirâmide glVertex3f(0.0f,1.0f,0.0f); glVertex3f(0.5f,0.0f,0.0f); glVertex3f(0.0f,0.0f,0.5f); glVertex3f(-0.5f,0.0f,0.0f); glVertex3f(0.0f,0.0f,-0.5f); UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA glEnd(); glutSwapBuffers(); } UNIVERSIDADE VEIGA DE ALMEIDA Computação Gráfica – 2ª Lista de Exercícios – 2020/2 UVA Ex9: Inclua métodos de desenho no aplicativo em linguagem C++ com as instruções OpenGL necessárias para exibir o objeto Cone como modelagem Wireframe utilizando as instruções GL_LINE_LOOP: Parâmetros de entrada: raio R, altura H e número de vértices por camada N // Função callback chamada para fazer o desenho do Cone (Wireframe) void DesenhaCone(int R, int H, int N) { double alfa = 2.0 * M_PI / nvc; int j; GLfloat y0 = -0.5 * height; GLfloat y1 = 0.5 * height ; glBegin(GL_TRIANGLE_FAN); glVertex3f(0, y1, 0); for (j = 0; j <= nvc; ++j) { double angulo = j * alfa; GLfloat x = radius * cos(angulo); GLfloat z = radius * sin(angulo); glVertex3f(x, y0, z); } glEnd(); } Y Vértice do topo R Y1=H/2 H X Y0=-H/2 Camada da base Z Ex 10: Desafio (EXTRA): Inclua rotina de Callback para tratar eventos de mouse, teclado, efeitos de iluminação e/ou animação (timer) para o desenho dos objetos Pirâmide e Cone em uma cena 3D com projeção perspectiva. Por exemplo: Digitar “p” ou “c” para ativar os desenhos dos objetos, ligar e desligar efeitos de iluminação, colocar uma animação com uma fonte de luz se deslocando como representasse o movimento de rotação da terra em relação ao sol, etc. Nome:Vitor Ferreira Vieira Matrícula: 20162103212 1.2. Explique as vantagens de se utilizar coordenadas homogêneas na representação das matrizes de transformação geométrica 3D simples e compostas. Como deve ser a ordem de declaração das instruções OpenGL de transformação geométrica? 1.5. Descreva as propriedades de cada entidade que forma em uma cena 3D (objetos, câmera e iluminação). Objeto 3D: 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 Iluminação: Propriedades: (1) 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) Câmera: É o ponto de vista que o observador poderá ver toda a cena que está disposta com os objetos. A imagem é como uma fotografia da cena, tendo assim uma visão geográfica da cena. Propriedades: (2) Um sistema de aplicação 3D deverá ler o arquivo de cena e criar uma imagem bidimensional da informação tridimensional fornecida. A câmera é um tipo especial de objeto que só possui a propriedade posicionamento (localização e atitude no espaço). É usada para visualizara 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. 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. Ex 2 Para cada um dos sistemas de equações abaixo, que transformam coordenadas (x, y, z) X' = A . X, onde X = (x, y, z, 1) e X' = (x', y', z', 1): Ex4: Descreva os comandos OpenGL que implementam as matrizes de transformações A1 , A2 , A3 e A4 do exercício 3 anterior. X' = A1 . X , onde X' = (x’, y’, z’, 1) X" = A2 . X' Ex7: As matrizes de transformação de rotação representam giros simples em relação aos eixos x, y ou z. Escreva as matrizes transformação A (4x4) e os respectivos comandos OpenGLpara cada caso abaixo: Vértice do topo Camada da base Z
Compartilhar