¿Por qué los triángulos siempre se usan para dibujar superficies en 3D? ¿Por qué no un cuadrado o alguna otra forma?¿Por qué los motores 3D utilizan principalmente triángulos para dibujar superficies?
Respuesta
Los triángulos nunca pueden ser no planos; cualquier elemento con más de 3 puntos puede ser no plano y, por lo tanto, no se puede renderizar, a menos que se convierta en triángulos.
Por ejemplo: un cuadrado son dos triángulos que están en el mismo plano, si todos los puntos que forman el cuadrado son coplanarios. Se requieren muchos cálculos para asegurarnos de que todos los puntos sean coplanarios, por lo tanto, todos los polígonos que son mayores a 3 puntos se calculan previamente mediante su decimación en triángulos y se prueban para asegurarse de que todos los puntos sean coplanarios una vez. de en cada fotograma que se procesa.
Aquí hay una buena referencia about polygon meshes.
planar Mesh
http://softimage.wiki.softimage.com/xsidocs/ca0c8514.jpg
no plana de malla
http://softimage.wiki.softimage.com/xsidocs/ca0c854b.jpg
y un ejemplo más que podría hacerlo más claro
La malla no plana es degenerada y no se puede ordenar 0 prestados correctamente de ninguna manera. Los triángulos no tienen este problema.
Eficiencia
Los triángulos son también muy eficiente de la memoria y se pueden ordenar, y se hace extremadamente rápido cuando se utiliza Triangle Strips que sólo necesita 1 punto para ser almacenada para cada triángulo adicional después de la primera.
http://upload.wikimedia.org/wikipedia/en/0/03/Triangle_Strip.png
y Triangle Fans que es un caso especial de una tira de triángulos.
http://www.codesampler.com/d3dbook/chapter_05/chapter_05_files/image008.jpg
Básicamente, cualquier estructura compleja (superficie) se puede representar como un grupo de triángulos. El triángulo es la geometría más atómica y primitiva. Por lo tanto, se utiliza como base para casi cualquier cosa. Sin embargo, la mayoría de los motores 3D le proporcionan primitivas más complejas como esferas, conos, cilindros, donas, etc. Revise la documentación de su biblioteca.
Dado que 3 puntos son los mínimos necesarios para definir una superficie plana, cualquier forma se puede simular utilizando muchos triángulos, y existen algoritmos eficientes para pintar rápidamente triángulos en la pantalla.
- 1. WPF Problema de superposición de triángulos 3D
- 2. ¿Qué biblioteca (gratuita) puedo usar para crear gráficos de gráficos de superficies 3D en C#?
- 3. ¿Por qué los motores de búsqueda ignoran los símbolos?
- 4. ¿Qué API usar para dibujar objetos 3D en C#?
- 5. motores de juego en 3D para Ruby o Python?
- 6. ¿Qué son los corchetes angulares para los valores de los argumentos y para qué se utilizan?
- 7. ¿Por qué se recortan triángulos en esta malla?
- 8. ¿Qué pueden lograr los motores de reglas?
- 9. ¿Qué motores usan los principales navegadores?
- 10. Cómo calcular el volumen de un objeto de malla 3D cuya superficie está formada por triángulos
- 11. ¿Qué IDE utilizan los programadores CLISP?
- 12. Cómo dibujar fondo 3D en juegos
- 13. ¿Para qué se utilizan los componentes fuertemente conectados?
- 14. ¿Qué utilizan los navegadores de Internet para representar?
- 15. ¿Para qué se utilizan los archivos .rc2 en Visual Studio?
- 16. ¿Para qué se utilizan los diferentes formatos de NameID?
- 17. Subprocesamiento/incremento de subprocesos inseguros: ¿por qué principalmente positivos?
- 18. ¿Para qué se utilizan los diferentes formatos de archivo gettext?
- 19. ¿Para qué se utilizan los diferentes directorios en @INC?
- 20. ¿Por qué IE10 no muestra elementos 3D 3D anidados transformados?
- 21. Navegadores en SmarTvs: ¿Qué motor utilizan?
- 22. por qué los motores de juegos prefieren bibliotecas estáticas sobre bibliotecas de vínculos dinámicos
- 23. ¿Cómo dibujar modelos matemáticos 3D en .NET? ¿Qué motor 3D sería el más adecuado para hacer esto de manera efectiva?
- 24. ¿Los elementos HTML5 significan algo para los motores de búsqueda?
- 25. ¿De qué maneras hay para dibujar árboles 3D usando Java y OpenGL?
- 26. Qué motor 3D para ruby
- 27. ¿Para qué se utilizan java.awt.Component.getName() y setName()?
- 28. ¿Para qué se utilizan parches en SVN?
- 29. ¿Por qué la mayoría de los ejemplos de Delphi utilizan FillChar() para inicializar registros?
- 30. ¿Por qué no se utilizan los archivos PHP para (personalizado) CSS y JS?
sólo para añadir rápidamente un poco, polígonos (y más precisamente triángulos) no es la única manera de hacer que las superficies 3D: Salida surfels ([http://www.filipvanbouwel.be/master_thesis.php ] (http://www.filipvanbouwel.be/master_thesis.php)), vóxeles, etc. –