Projeções Computação Gráfica Projeções: conceitos Linhas Projetantes emanam do centro de projeção, passam por cada ponto do objeto e intersectam o plano de projeção, formando a projeção. Projeções: conceitos Projeção em perspectiva (ou cônica): centro de projeção é um ponto do espaço, a ser especificado. O objeto é deformado de forma inversamente proporcional à distância ao centro de projeção. Projeção paralela (ou cilíndrica): centro de projeção no infinito (ponto ideal). Deve-se especificar um vetor, que é a direção da projeção. Pode ser usada para tomada de algumas medidas. Projeções: conceitos A projeção em perspectiva não preserva retas paralelas, com algumas exceções: retas paralelas contidas num plano paralelo ao plano de projeção. Ângulos são preservados também nesta situação. A projeção paralela preserva retas paralelas; ângulos são preservados apenas em plano paralelos ao plano de projeção. Projeções em perspectiva Retas paralelas que não são paralelas ao plano de projeção convergem para um ponto de fuga. Retas paralelas se intersectam em pontos ideais. Assim, pontos de fuga podem ser vistos como a transformação de pontos ideais em pontos afins. A projeção propriamente dita, vista no espaço euclidiano mergulhado, se obtém com a normalização dos pontos afins. Existem infinitos pontos de fuga, um para cada possível direção de retas paralelas. Projeções em perspectiva Se o feixe de retas paralelas é paralelo ao algum dos três eixos principais, o ponto de fuga é dito axial. Podem existir, portanto, apenas três pontos de fuga axiais. Os pontos de fuga axiais aparecem no plano de projeção quando este corta um ou mais eixos principais. Projeções em perspectiva Projeções em perspectiva Projeções em perspectiva Projeções paralelas Existem dois tipos de projeções paralelas: Ortográfica Oblíqua Na projeção paralela ortográfica, as projetantes são normais ao plano de projeção, o que não acontece com a projeção paralela oblíqua. Projeções paralelas Os tipos mais comuns de projeções ortográficas são: vista frontal, lateral e superior. São importantes para desenhos de engenharia para representar partes de máquinas e prédios, pois as distâncias e os ângulos podem ser medidos a partir delas. Projeções paralelas Projeções paralelas Outro tipo de projeção ortográfica é a chamada axonométrica, que ocorre quando o plano de projeção não é ortogonal a algum eixo principal do sistema. Retas paralelas são projetadas em retas paralelas, mas os ângulos não são preservados. As medidas podem ser tomadas ao longo de cada eixo principal, em geral com um fator de escala distinto. Projeções paralelas Um tipo especial de projeção ortográfica axonométrica é a projeção isométrica. Trata-se de um caso especial em que o plano de projeção forma o mesmo ângulo com os três eixos principais. As projeções dos três vetores unitários canônicos formam ângulos de 120o entre si. Isto permite que as medições feitas na projeção em cada eixo utilize a mesma escala. Projeções paralelas Projeções paralelas Outros tipos de projeções axonométricas: dimétricas (ex: 100,100,160) e trimétricas. Projeções Oblíquas: as projetantes não são paralelas à normal ao plano de projeção. O plano de projeção é normal a algum eixo principal. Isto significa que projeções de faces paralelas a este plano preservam ângulos e distâncias. Projeções paralelas Projeções paralelas Projeções oblíquas permitem visões das faces superiores, frontais e laterais, e ainda permitem que medidas de distância possam ser tomadas em faces não paralelas ao plano de projeção, mas não ângulos. Geralmente as medidas de distância para estas faces têm um fator de escala associado. Projeções paralelas Os dois tipos de projeções oblíquas mais utilizados são: cavaleira e gabinete (cabinet). Na cavaleira as projetantes formam um ângulo de 45o com o plano de projeção. Isto resulta no fato de que segmentos de reta ortogonais ao plano de projeção possuirão o mesmo comprimento que sua projeção. Projeções paralelas Projeções paralelas Na projeção paralela oblíqua gabinete as projetantes formam um ângulo de arctg(2)=63,4o com o plano de projeção. A idéia deste ângulo é projetar segmentos de reta perpendiculares ao plano de projeção de forma a reduzirem seu tamanho à metade. Reúne as vantagens da cavaleira, mas um pouco mais realista. Deve haver um fator de escala =1/2 para medidas sobre retas perpendiculares ao plano de projeção. Projeções paralelas Projeções paralelas Uma forma de especificar a projeção oblíqua: Projeções Planares Modelos de Vista 3D O modelo de vista 3D é a forma de especificar o volume de vista (paralelepípedo de vista ou pirâmide de vista) com o objetivo tanto de propiciar a projeção 2D adequada bem como do corte e enquadramento adequados. Nesta exposição daremos uma olhada nas abordagens e terminologias do sistema PHIGS (ANSI-88). Modelos de Vista 3D Plano de projeção = plano de vista Ponto que fixa o plano = VRP (View Reference Point) Normal ao plano = VPN (View Plane Normal) O plano de vista pode ser colocado de forma arbitrária com respeito ao sistema mundial. O sistema de vista é definido através de três vetores: n, v e u. Modelos de Vista 3D O eixo n é dirigido pelo vetor VPN; o eixo v é definido como a projeção de VUP sobre o plano normal a este vetor. O eixo u é definido de forma a se obter um sistema de coordenadas da mão direita. Modelos de Vista 3D Modelos de Vista 3D Define-se então o retângulo de vista, através da escolha das coordenadas mínimas e máximas. O retângulo de vista não precisa estar centralizado em relação ao VRP (CW). Modelos de Vista 3D Modelos de Vista 3D PRP = Projection Reference Point DOP = Direction of Projection Modelos de Vista 3D O parâmetro de câmera que define a projeção é o PRP e uma indicação do tipo de projeção: se o tipo pretendido é em perspectiva, então PRP é centro de projeção. Senão, DOP é o vetor de direção dada por CW e PRP. O PRP é dado em coordenadas de vista, não mundiais. Vantagem: pode-se mover VUP ou VPN sem se recalcular o PRP; se a projeção é cavaleira, por exemplo, não há necessidade de se recalcular PRP/DOP para se manter a inclinação. Modelos de Vista 3D O volume de vista limita a parte do mundo que deve ser enquadrado e projetado no plano de vista. Para a projeção em perspectiva o volume de vista é uma pirâmide semi-infinita com vértice no PRP e arestas passando pelas extremidades do retângulo de vista. Pontos atrás de PRP não são mostrados. Na realidade, deveria ser um volume cônico, mas a pirâmide é mais tratável matematicamente. Modelos de Vista 3D Modelos de Vista 3D Para a projeção paralela o volume de vista é um paralelepípedo com lados paralelos à direção de projeção. Ortográfica: Modelos de Vista 3D oblíqua: Modelos de Vista 3D Volumes: Modelos de Vista 3D Modelos de Vista 3D Modelos de Vista 3D Preparando para corte e projeção: Projeção paralela(utilizando matrizes 4X4): 1.Transladar VRP p/ a origem. 2.Rotacionar VRC de tal forma a que o eixo n coincida com z o eixo u coincida com x e o eixo v coincida com o y. 3. Cisalhar de tal forma que a direção de projeção fique paralela ao eixo z. 4. Transladar e escalar o volume no volume normalizado. Modelos de Vista 3D Modelos de Vista 3D Modelos de Vista 3D Projeção em perspectiva: 1.Transladar VRP p/ a origem. 2.Rotacionar VRC de tal forma a que o eixo n coincida com z o eixo u coincida com x e o eixo v coincida com o y. 3. Transladar de forma a COP coincidir com origem. 4. Cisalhar de tal forma que a linha central do volume se transforme no eixo z. 5. Escalar o volume de vista no volume piramidal reto normalizado. Modelos de Vista 3D Modelos de Vista 3D Modelos de Vista 3D Modelos de Vista 3D Corte 3D: determinação das partes da cena que estão dentro do volume de vista. Existem algoritmos de corte 2D, para arestas, que podem ser generalizados para faces contra paredes de um paralelepípedo retangular. Um algoritmo eficiente é o de Cohen – Sutherland: a cada vértice atribui-se uma palavra de 4 bits, onde cada bit carrega informação do vértice pertencer a algum semi-plano determinado por cada reta que suporta as arestas do retângulo de vista. Modelos de Vista 3D 1001 1000 1010 0001 0000 0010 0101 0100 Bit 1: y > ymax Bit 2: y < ymin Bit 3: x > xmax 0110 Bit 4: x < xmin Note que o bit 1 é o sinal de ymax – y ; o bit 2 é o sinal de y – ymin; o bit 3 é o sinal de xmax – x e o bit 4 é o sinal de x – xmin . Modelos de Vista 3D O algoritmo testa o código para saber se pode rejeitar ou aceitar trivialmente o segmento. Senão, ele escolhe uma aresta (o código indica) e encontra a interseção com o segmento. Então ele rejeita a parte exterior do segmento ao substituir o vértice exterior pelo ponto de interseção. O código também diferencia o lado exterior do lado interior. O algoritmo então calcula o código do novo vértice e vai para a próxima iteração. Modelos de Vista 3D Outros algoritmos, como o de Cyrus-Beck e o de Liang-Barsky utilizam retas paramétricas e o produto escalar para determinação de visibilidade de cada segmento. Eles são algoritmos mais modernos e geralmente mais eficientes que o de CohenSutherland. Todos estes algoritmos se estendem para o paralelepípedo retangular. No caso o paralelepípedo é normalizado: [-1,1] X [-1,1] X [0,1] Modelos de Vista 3D O código passa a ter 6 bits : Paralela: Bit 1: y > 1 Bit 3: x > 1 Bit 5: z < -1 Bit 2: y < -1 Bit 4: x < -1 Bit 6: z > 0 Modelos de Vista 3D Perspectiva: Bit 1: y > -z Bit 3: x > -z Bit 5: z < 0 Bit 2: y < z Bit 4: x < z Bit 6: z > zmax Modelos de Vista 3D Fazendo o corte em coordenadas homogêneas: Razões: eficiência, já que os algoritmos para paralelepípedo retangular são mais eficientes; também são implementados (pelo menos a parte central) em hardware; o corte pode não ser feito corretamente para operações homogêneas não usuais, como o que pode ocorrer com nurbs. Modelos de Vista 3D A transformação do volume piramidal no paralelepípedo pode é projetiva, ou seja, pode ser representada no bloco de perspectiva da matriz 4x4, seguida de uma normalização para pontos afins. Para simplificar o entendimento, utilizaremos o modelo 3D do livro de A. Watt /M. Watt. Modelos de Vista 3D Modelos de Vista 3D Para transformar este tronco de pirâmide no paralelepípedo canônico, deve-se aplicar uma transformação de coordenadas de vista para coordenadas de tela, que apresenta uma divisão de x e y por z. A transformação visa a facilitar as operações de corte, interpolação linear e ordenação de profundidade (z-buffer) para visibilidade. Newman and Sproul ‘73 mostraram que a coordenada z deve ser transformada através de uma expressão do tipo: zs =A + B/ze Modelos de Vista 3D Esta transformação de z leva retas em retas e planos em planos. Ela também preservará a orientação da profundidade, desde que B<0. Forçando com que a transformação leve os vértices extremos da pirâmide nos vértices do paralelepípedo retangular [-1,1] X [-1,1] X [0,1], encontramos o valor de A e B. A seguir mostramos como ficam as transformações de vista para tela (3D->3D): Modelos de Vista 3D xe xs D hze ye ys D hze D 1 ze zs F F D Modelos de Vista 3D Para a transformação ser incorporada na matriz 4x4, devemos separar a parte linear da não linear, utilizando as coordenadas homogêneas, em dois passos: x =xe , y =ye , z=(hFze )/[D(F-D)] – hF/(F-D) w=hze/D E aí segue-se o passo da divisão de perspectiva: xs =x/w, ys = y/w, zs= z/w. Esta é uma normalização de ponto afim. Modelos de Vista 3D A matriz da parte linear da transformação então fica assim: 1 0 M 0 0 0 0 1 0 hF D( F D) h D 0 0 0 hF F D 0 0