Ferramentas do usuário

Ferramentas do site


prog2:visualizacao_de_modelos_3d

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
prog2:visualizacao_de_modelos_3d [2019/08/01 16:07]
maziero
prog2:visualizacao_de_modelos_3d [2019/10/22 14:23] (atual)
maziero
Linha 71: Linha 71:
  
 Existem vários tipos de projeção, como a projeção ortográfica e a projeção em perspectiva. Na projeção em perspectiva,​ a posição do observador é considerada nos cálculos da transformação 3D-2D. Uma boa explicação da projeção em perspectiva pode ser encontrada [[http://​www.scratchapixel.com/​lessons/​3d-basic-rendering/​computing-pixel-coordinates-of-3d-point|neste site]]. Existem vários tipos de projeção, como a projeção ortográfica e a projeção em perspectiva. Na projeção em perspectiva,​ a posição do observador é considerada nos cálculos da transformação 3D-2D. Uma boa explicação da projeção em perspectiva pode ser encontrada [[http://​www.scratchapixel.com/​lessons/​3d-basic-rendering/​computing-pixel-coordinates-of-3d-point|neste site]].
- 
-Os cálculos necessários à projeção podem ser complexos e demorados, mas algumas simplificações podem ser realizadas. Este projeto usa uma simplificação chamada //​perspectiva fraca// (//weak perspective//​),​ descrita a seguir. 
  
 ==== Perspectiva fraca ==== ==== Perspectiva fraca ====
 +
 +Os cálculos necessários à projeção podem ser complexos e demorados, mas algumas simplificações podem ser realizadas. Este projeto usa uma simplificação chamada //​perspectiva fraca// (//weak perspective//​),​ descrita a seguir:
  
 Considerando que as coordenadas da câmera são [x<​sub>​c</​sub>​ y<​sub>​c</​sub>​ z<​sub>​c</​sub>​] e que a câmera está olhando para a origem [0 0 0], a conversão das coordenadas 3D de cada vértice v = [x<​sub>​v</​sub>​ y<​sub>​v</​sub>​ z<​sub>​v</​sub>​] em sua projeção 2D p = [x<​sub>​p</​sub>​ y<​sub>​p</​sub>​] no plano z = 0 pode ser calculada desta forma: Considerando que as coordenadas da câmera são [x<​sub>​c</​sub>​ y<​sub>​c</​sub>​ z<​sub>​c</​sub>​] e que a câmera está olhando para a origem [0 0 0], a conversão das coordenadas 3D de cada vértice v = [x<​sub>​v</​sub>​ y<​sub>​v</​sub>​ z<​sub>​v</​sub>​] em sua projeção 2D p = [x<​sub>​p</​sub>​ y<​sub>​p</​sub>​] no plano z = 0 pode ser calculada desta forma:
Linha 127: Linha 127:
     * y<​sub>​d</​sub>​ = y"<​sub>​p</​sub>​ + H / 2     * y<​sub>​d</​sub>​ = y"<​sub>​p</​sub>​ + H / 2
  
 +<note tip>
 Os passos 3 a 5 podem ser condensados em um único passo: Os passos 3 a 5 podem ser condensados em um único passo:
  
Linha 132: Linha 133:
     * x<​sub>​d</​sub>​ = ( (x<​sub>​p</​sub>​ - x<​sub>​cen</​sub>​) * escala) + W / 2     * x<​sub>​d</​sub>​ = ( (x<​sub>​p</​sub>​ - x<​sub>​cen</​sub>​) * escala) + W / 2
     * y<​sub>​d</​sub>​ = ( (y<​sub>​p</​sub>​ - y<​sub>​cen</​sub>​) * escala) + H / 2     * y<​sub>​d</​sub>​ = ( (y<​sub>​p</​sub>​ - y<​sub>​cen</​sub>​) * escala) + H / 2
 +</​note>​
  
 Com isso é obtido um conjunto de pontos no intervalo [(0, 0) .. (//width//, //​height//​)] que pode ser usado para plotar na janela gráfica as arestas que definem o objeto 3D. Com isso é obtido um conjunto de pontos no intervalo [(0, 0) .. (//width//, //​height//​)] que pode ser usado para plotar na janela gráfica as arestas que definem o objeto 3D.
Linha 177: Linha 179:
     * **usar regras implícitas**     * **usar regras implícitas**
  
-Bônus (+pontos cada):+Bônus (+ 20/​100 ​pontos cada):
   * Usar o mouse para girar o objeto na tela   * Usar o mouse para girar o objeto na tela
   * Usar perspectiva completa ao invés da perspectiva fraca   * Usar perspectiva completa ao invés da perspectiva fraca
prog2/visualizacao_de_modelos_3d.1564686436.txt.gz · Última modificação: 2019/08/01 16:07 por maziero