En gráficos por computadora en 3D , el modelado poligonal es un enfoque para modelar objetos representando o aproximando sus superficies mediante mallas poligonales . El modelado poligonal se adapta bien a la representación de líneas de escaneo y, por lo tanto, es el método elegido para gráficos por computadora en tiempo real . Los métodos alternativos para representar objetos 3D incluyen superficies NURBS , superficies de subdivisión y representaciones basadas en ecuaciones (superficies implícitas) 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 del espacio euclidiano . Se pueden crear polígonos más complejos a partir de varios triángulos o como un solo objeto con más de 3 vértices. Los polígonos de cuatro lados (generalmente denominados cuadrángulos) [1] [2] y los triángulos son las formas más comunes utilizadas en el modelado poligonal. Generalmente se hace referencia como elemento a un grupo de polígonos, conectados entre sí por vértices compartidos . A cada uno de los polígonos que componen un elemento se le llama cara .
En la geometría euclidiana , tres puntos cualesquiera no colineales determinan un plano . Por esta razón, los triángulos siempre habitan en un solo 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 superficie normal , 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 más atractivo a costa de más procesamiento. Tenga en cuenta que cada triángulo tiene dos caras normales, que apuntan en direcciones opuestas entre sí. En muchos sistemas, sólo una de estas normales se considera válida: el otro lado del polígono se denomina cara posterior y puede hacerse 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 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 generalmente no son deseadas y muchos paquetes admiten una función de limpieza automática. Sin embargo, si la limpieza automática no está presente, se deben eliminar 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 interseque a sí misma , lo que significa que ningún borde pasa a través de un polígono. Otra forma de verlo es que la malla no puede perforarse por sí sola. También es deseable que la malla no contenga errores como vértices, aristas o caras duplicados. Para algunos propósitos, es importante que la malla sea múltiple , es decir, que no contenga agujeros ni singularidades (lugares 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. Hay disponible una amplia variedad de paquetes de software de gráficos 3D para usar 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 a veces se denomina modelado de inflación o modelado de 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 utiliza una segunda imagen del sujeto desde un ángulo diferente y extruye la forma 2D en 3D, siguiendo nuevamente 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 con respecto a algún plano y conectará las dos piezas. Esto asegura que el modelo será 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:
Finalmente, 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 rápidamente modelos con poco detalle, mientras que los escáneres 3D se pueden usar para crear mallas con alto detalle basadas en objetos existentes del mundo real de una manera casi automática. Estos dispositivos son muy caros y generalmente sólo los utilizan investigadores y profesionales de la industria, pero pueden generar representaciones digitales submilimétricas de alta precisión.
Hay una gran cantidad de operaciones que se pueden realizar en mallas poligonales. Algunos de ellos corresponden aproximadamente a manipulaciones de objetos 3D en el mundo real, mientras que otros no. Las operaciones de malla poligonal incluyen:
Una vez que se ha construido una malla poligonal, se deben tomar más pasos antes de que sea útil para juegos, animación, etc. Se debe asignar textura al modelo para agregar colores y textura a la superficie y se le debe proporcionar un esqueleto para la animación. A las mallas también se les pueden asignar pesos y centros de gravedad para su uso en simulación física .
Para mostrar un modelo en la pantalla de una computadora fuera del entorno de modelado, es necesario almacenar ese modelo en uno de los formatos de archivo que se enumeran a continuación y luego usar o escribir un programa capaz de cargar desde ese formato. Los dos métodos principales para mostrar modelos poligonales 3D son OpenGL y Direct3D . Ambos métodos se pueden utilizar con o sin una tarjeta gráfica acelerada 3D .
Existen muchas desventajas al representar un objeto utilizando polígonos. Los polígonos son incapaces 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 un coste en menor velocidad. En la conversión de líneas de exploración , 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 usar múltiples modelos con diferentes 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 fotogramas de 60 fotogramas por segundo o más, los modeladores de superficies , la forma principal de mostrar modelos no poligonales, son incapaces de lograr una velocidad de fotogramas interactiva (10 fotogramas por segundo o más). superior) con una cantidad similar de detalles. 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 se puede ver desde cualquier ángulo. [4]
Hay una variedad de formatos disponibles para almacenar datos de polígonos 3D. Los más populares son: