En gráficos por computadora en 3D , el modelado poligonal es un enfoque para modelar objetos mediante la representación o aproximación de sus superficies utilizando mallas poligonales . El modelado poligonal es muy adecuado para la representación de líneas de exploración y, por lo tanto, es el método de elección para gráficos por computadora en tiempo real . Los métodos alternativos para representar objetos en 3D incluyen superficies NURBS , superficies de subdivisión y representaciones basadas en ecuaciones (superficie implícita) utilizadas en trazadores de rayos .
El objeto básico utilizado en el modelado de mallas es un vértice , un punto en el espacio tridimensional. Dos vértices conectados por una línea recta se convierten en una arista . Tres vértices, conectados entre sí por tres aristas, definen un triángulo , que es el polígono más simple en el espacio euclidiano . Se pueden crear polígonos más complejos a partir de múltiples triángulos o como un solo objeto con más de 3 vértices. Los polígonos de cuatro lados (generalmente denominados cuadriláteros) [1] [2] y los triángulos son las formas más comunes utilizadas en el modelado poligonal. Un grupo de polígonos, conectados entre sí por vértices compartidos, generalmente se denomina elemento . Cada uno de los polígonos que componen un elemento se denomina cara .
En la geometría euclidiana , tres puntos cualesquiera no colineales determinan un plano . Por esta razón, los triángulos siempre ocupan un único plano. Sin embargo, esto no es necesariamente cierto en el caso de polígonos más complejos. La naturaleza plana de los triángulos hace que sea sencillo determinar su normal de superficie , un vector tridimensional perpendicular a la superficie del triángulo. Las normales de superficie son útiles para determinar el transporte de luz en el trazado de rayos y son un componente clave del popular modelo de sombreado Phong . Algunos sistemas de renderizado utilizan normales de vértice en lugar de normales de cara para crear un sistema de iluminación de mejor aspecto a costa de un mayor procesamiento. Tenga en cuenta que cada triángulo tiene dos normales de cara, que apuntan a direcciones opuestas entre sí. En muchos sistemas, solo una de estas normales se considera válida: el otro lado del polígono se conoce como cara posterior y se puede hacer visible o invisible según los deseos del programador.
Muchos programas de modelado no aplican estrictamente la teoría geométrica; por ejemplo, es posible que dos vértices tengan dos aristas distintas que los conecten y que ocupen exactamente la misma ubicación espacial. También es posible que existan dos vértices en las mismas coordenadas espaciales o que existan dos caras en la misma ubicación. Situaciones como estas no suelen ser deseables y muchos paquetes admiten una función de limpieza automática. Sin embargo, si la limpieza automática no está presente, deben eliminarse manualmente.
Un grupo de polígonos que están conectados por vértices compartidos se denomina malla . Para que una malla parezca atractiva cuando se renderiza , es deseable que no se autointersecte , lo que significa que ningún borde pase a través de un polígono. Otra forma de ver esto es que la malla no puede perforarse a sí misma. También es deseable que la malla no contenga ningún error como vértices, bordes o caras duplicados. Para algunos propósitos, es importante que la malla sea una variedad , es decir, que no contenga agujeros o singularidades (ubicaciones donde dos secciones distintas de la malla están conectadas por un solo vértice).
Aunque es posible construir una malla especificando manualmente los vértices y las caras, es mucho más común construir mallas utilizando una variedad de herramientas. Existe una amplia variedad de paquetes de software de gráficos 3D disponibles para su uso en la construcción de mallas poligonales.
Uno de los métodos más populares para construir mallas es el modelado de cajas , que utiliza dos herramientas simples:
Un segundo método de modelado común se denomina a veces modelado por inflación o modelado por extrusión . En este método, el usuario crea una forma 2D que traza el contorno de un objeto a partir de una fotografía o un dibujo. [3] Luego, el usuario usa una segunda imagen del sujeto desde un ángulo diferente y extruye la forma 2D en 3D, nuevamente siguiendo el contorno de la forma. Este método es especialmente común para crear caras y cabezas. En general, el artista modelará la mitad de la cabeza y luego duplicará los vértices, invertirá su ubicación en relación con algún plano y conectará las dos piezas. Esto garantiza que el modelo sea simétrico.
Otro método común para crear una malla poligonal es conectar varias primitivas , que son mallas poligonales predefinidas creadas por el entorno de modelado. Las primitivas comunes incluyen:
Por último, existen algunos métodos especializados para construir mallas con alto o bajo nivel de detalle. El modelado basado en bocetos es una interfaz fácil de usar para construir modelos con bajo nivel de detalle rápidamente, mientras que los escáneres 3D se pueden utilizar para crear mallas con alto nivel de detalle basadas en objetos reales existentes de una manera casi automática. Estos dispositivos son muy caros y, por lo general, solo los utilizan investigadores y profesionales de la industria, pero pueden generar representaciones digitales submilimétricas de alta precisión.
Existe una gran cantidad de operaciones que se pueden realizar en mallas poligonales. Algunas de ellas corresponden aproximadamente a manipulaciones reales de objetos 3D, mientras que otras no. Las operaciones de malla poligonal incluyen:
Una vez que se ha construido una malla poligonal, se deben realizar otros pasos antes de que sea útil para juegos, animación, etc. Se debe aplicar un mapa de textura al modelo para agregar colores y textura a la superficie y se le debe dar un esqueleto para la animación. También se pueden asignar pesos y centros de gravedad a las mallas para usarlas en la simulación física .
Para visualizar un modelo en la pantalla de una computadora fuera del entorno de modelado, es necesario almacenar dicho modelo en uno de los formatos de archivo que se enumeran a continuación y luego usar o escribir un programa capaz de cargarlo desde ese formato. Los dos métodos principales para visualizar modelos de polígonos 3D son OpenGL y Direct3D . Ambos métodos se pueden utilizar con o sin una tarjeta gráfica acelerada en 3D .
Existen muchas desventajas en la representación de un objeto mediante polígonos. Los polígonos no son capaces de representar con precisión superficies curvas, por lo que se debe utilizar una gran cantidad de ellos para aproximar las curvas de una manera visualmente atractiva. El uso de modelos complejos tiene como consecuencia una reducción de la velocidad. En la conversión de líneas de escaneo , cada polígono debe convertirse y mostrarse, independientemente de su tamaño, y con frecuencia hay una gran cantidad de modelos en la pantalla en un momento dado. A menudo, los programadores deben utilizar varios modelos con distintos niveles de detalle para representar el mismo objeto con el fin de reducir la cantidad de polígonos que se representan.
La principal ventaja de los polígonos es que son más rápidos que otras representaciones. Mientras que una tarjeta gráfica moderna puede mostrar una escena muy detallada a una velocidad de 60 fotogramas por segundo o superior, los modeladores de superficies , la principal forma de mostrar modelos no poligonales, son incapaces de lograr una velocidad de fotogramas interactiva (10 fotogramas por segundo o superior) con una cantidad similar de detalle. Con los sprites , otra alternativa a los polígonos, cada pose requerida debe crearse individualmente, mientras que un único modelo poligonal puede realizar cualquier movimiento si se aplican los datos de movimiento adecuados, y puede verse desde cualquier ángulo. [4]
Hay una variedad de formatos disponibles para almacenar datos de polígonos 3D. Los más populares son: