He trabajado usando Maya para animación y más proyectos orientados al cine, sin embargo, también me estoy centrando en mis estudios sobre el desarrollo de videojuegos. De todos modos, estaba hablando con uno de mis profesores y no pudimos entender por qué todos los motores de juego (que yo sepa) se convierten en triángulos.
¿Alguien sabe por qué los motores de juego se convierten en triángulos en comparación con dejar los modelos como polígonos de cuatro lados? Además, ¿cuáles son los pros y los contras (si los hay) de hacer esto?
graphics-programming
Conceder
fuente
fuente
Respuestas:
La conclusión es la Rasterización de triángulos, que es cómo las computadoras representan los objetos en la pantalla. Aunque otros lo dicen con más frecuencia que yo:
El énfasis es mío. Fuente: http://www.devmaster.net/articles/software-rendering/part3.php
fuente
Los triángulos tienen muchas propiedades que los hacen más fáciles de dibujar y, por lo tanto, más rápidos.
Puede que cuatro puntos o más no estén en el mismo plano, pero tres puntos siempre lo están (ignorando los casos degenerados). Esto tiene la interesante propiedad de que los valores escalares varían linealmente sobre la superficie del triángulo. Incluso cuando el triángulo se proyecta en la pantalla, los valores escalares aún varían linealmente con respecto a x '/ z e y' / z.
Esto, a su vez, significa que la mayoría, si no todo, de lo que se necesita para sombrear, mapear texturas y filtrar en profundidad un triángulo se puede calcular mediante interpolación lineal, que se puede hacer extremadamente rápido en hardware especializado.
tl; dr: los triángulos son los primitivos más simples, por lo que los algoritmos que tratan con triángulos pueden optimizarse en gran medida.
fuente
Tres puntos (un triángulo) SIEMPRE definen un plano plano. En otras palabras, dados cualquiera de los tres puntos, siempre puede crear un plano plano que pueda cortar los tres puntos. Sin embargo, lo mismo no siempre es cierto para cuatro puntos. Puede tener cuatro puntos en un avión, pero también puede tener cuatro puntos que no están en un avión.
fuente
No son los "motores de juego" los que hacen esto; todo el software 3D que usas hace esto. Simplemente no te dice nada al respecto, y tu profesor parece poco calificado si no sabe esto. Existen en la memoria de la computadora incluso si el software te los está ocultando. Todos los programas 3D tienen una opción que hará visibles los triángulos. También tendrán una opción que los divide en bordes editables, para que pueda jugar con ellos. Pero siempre estuvieron allí para empezar y es ingenuo de tu profesor enseñar esta materia y aún preguntarte "para qué sirven los triángulos".
Un triángulo es la única forma de organizar verts y garantizar una superficie plana. Cuando tienes un quad, puedes organizar los verts de manera que se doblen. Pero ya está hecho de triángulos y son esos triángulos los que permiten la curva.
fuente
Un triángulo es la primitiva más simple que se puede describir de forma aislada porque tiene tres puntos, menos de los cuales no describen una superficie en 3D.
Debido a que un triángulo se puede considerar de forma aislada, es posible hacer una pieza de código o silicio que sea capaz de representar solo un triángulo, que a través del poder de la repetición puede representar cualquier superficie.
Por lo tanto, el primer sistema informático que logró representar "cualquier superficie en absoluto" lo hizo naturalmente al representar muchos triángulos de forma independiente.
Si uno piensa en los triángulos y quads como "primitivos" (es decir, como pedazos de geometría completamente aislados sin contexto), el triángulo es el más primitivo, por lo que tenderá a "ganar".
Sin embargo, una vez que las computadoras de grado de entretenimiento excedieron un cierto nivel de sofisticación en la década de 1980, la simplicidad de considerar los "primitivos" de forma aislada se volvió menos importante. Si los gráficos se van a producir en masa, las economías de escala favorecen el procesamiento de grupos de vértices relacionados, al igual que favorecen el ensamblaje de cien autos casi idénticos a la vez.
Es por eso que en la década de 1980, las películas adoptaron el "quad", que es un nombre inapropiado porque se refiere a una cuadrícula 2D de vértices en el espacio 3D, y no a un cuadrilátero aislado.
El mismo cambio de triángulos a "quads" aún no ha sucedido en el ámbito del entretenimiento interactivo, pero es probable que suceda, bastante pronto, y por las mismas razones que sucedieron en el negocio del cine.
fuente
Solo hay una forma de triangular un triángulo frente a 'n - 2' formas para un polígono de n lados. Entonces, los triángulos son, en última instancia, la forma menos ambigua de definir una forma poliédrica. Además, como lo han indicado otros carteles, hay muchas maneras de acelerar la rasterización triangular (en lugar de cuádruple o superior) (la constante z es una de mis favoritas). Además, es más fácil optimizar las pruebas de intersección de triángulo de rayos que las pruebas de intersección de polígonos arbitrarias de rayos. De hecho, muchas operaciones en polígonos de lados n se benefician de tener una representación triangulada a mano. Eso no quiere decir que las representaciones de polígonos de lados n son 'malas': son muy útiles pero, en última instancia, querrá trabajar con triángulos para muchas operaciones de malla.
fuente
Mientras el triángulo esté definido por tres vértices no colineales (léase: ninguno de los ángulos es exactamente Pi), entonces los vértices definen un plano único.
Un quad está, por supuesto, definido por cuatro vértices. Es perfectamente posible que esos vértices no sean coplanares. En ese caso, tu quad realmente sería dos triángulos divididos por una diagonal en el quad. Eso son dos planos, dos conjuntos de normales de superficie, etc.
Todas las herramientas de modelado disponibles, todos los algoritmos para texturizado, iluminación, etc. asumen que un modelo está hecho de segmentos planos, y cada fórmula que tenemos (los productos cruzados para el cálculo normal es el primero que tenemos) usan el conjunto de datos de entrada mínimo absoluto: tres los vértices definen un plano, y el plano es lo que necesitamos para hacer todas las cosas elegantes.
Ciertamente, podría escribir un motor para trabajar con quads, pero se encontraría ignorando el cuarto vértice en casi todos los casos, excepto cuando (con frecuencia) necesitaría asegurarse de que sea coplanar con los otros tres que definen el quad. Y, la solución lógica más al caso en que se trata no coplanares sería dividir el quad en dos triángulos. Entonces, ¿por qué no hacer eso para empezar?
¿Cuál sería el punto de trabajar con quads?
Si quieres un quad, junta dos triángulos.
fuente
Si suponemos que conseguir que 4 puntos sean coplanares no es un problema (lo es, como lo han señalado los demás, pero tengan paciencia conmigo), entonces encontrará que renderizar un trapecio arbitrario (que es lo que generalmente se verá un cuadrilátero) cuando se transforma en espacio de pantalla) no es particularmente diferente de representar un triángulo; de hecho, prácticamente funciona igual una vez que se realiza el recorte, ya que puede introducir vértices adicionales. (Al menos en un modelo de software, el hardware puede tener una forma más simple de fuerza bruta para hacer el recorte).
El problema restante, por lo tanto, es uno de eficiencia representacional. - puedes representar fácilmente un quad con 2 triángulos, y sin vértices adicionales si usas una tira triangular (3 vértices para el 1er triángulo, luego un vértice extra para el 2do triángulo). Por otro lado, si intentas representar un triángulo con un quad, debes usar 4 vértices y tener uno degenerado que sea idéntico a otro. Esto no es ideal en términos de eficiencia.
fuente