
En gráficos 3D por computadora , el modelado poligonal es un método para modelar objetos mediante la representación o aproximación de sus superficies utilizando mallas poligonales . El modelado poligonal es ideal para la renderización por escaneo y, por lo tanto, es el método preferido para gráficos por computadora en tiempo real . Otros métodos para representar objetos 3D incluyen superficies NURBS , superficies de subdivisión y representaciones basadas en ecuaciones (superficies implícitas) utilizadas en trazadores de rayos .
Teoría geométrica y polígonos
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 forman 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, se denomina generalmente elemento . Cada uno de los polígonos que componen un elemento se denomina cara .
En geometría euclidiana , tres puntos no colineales cualesquiera determinan un plano . Por esta razón, los triángulos siempre se encuentran en un solo plano. Sin embargo, esto no es necesariamente cierto para polígonos más complejos. La naturaleza plana de los triángulos simplifica la determinación de 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, aunque a costa de un mayor procesamiento. Cabe destacar que cada triángulo tiene dos normales de cara, que apuntan en direcciones opuestas. En muchos sistemas, solo una de estas normales se considera válida; la otra cara del polígono se denomina cara posterior y puede hacerse visible o invisible según las necesidades del programador.
Muchos programas de modelado no se ciñen estrictamente a la teoría geométrica; por ejemplo, es posible que dos vértices tengan dos aristas distintas que los conecten, ocupando exactamente la misma ubicación espacial. También es posible que dos vértices o dos caras se encuentren en las mismas coordenadas espaciales. Estas situaciones no suelen ser deseables, y muchos programas incluyen una función de limpieza automática. Sin embargo, si no se dispone de esta función, los vértices deben eliminarse manualmente.
Un grupo de polígonos conectados por vértices comunes se denomina malla . Para que una malla tenga una apariencia atractiva al renderizarse , es deseable que no se autointerseque , es decir, que ningún borde atraviese un polígono. Dicho de otro modo, la malla no puede perforarse a sí misma. También es deseable que la malla no contenga errores como vértices, bordes o caras duplicados. Para ciertos fines, es importante que la malla sea una variedad , es decir, que no contenga agujeros ni singularidades (puntos donde dos secciones distintas de la malla están conectadas por un solo vértice).
Construcción de mallas poligonales
Si bien es posible construir una malla especificando manualmente los vértices y las caras, es mucho más común crearlas utilizando diversas herramientas. Existe una amplia variedad de programas de gráficos 3D disponibles para 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 sencillas:
- La herramienta de subdivisión divide las caras y aristas en piezas más pequeñas añadiendo nuevos vértices. Por ejemplo, un cuadrado se subdividiría añadiendo un vértice en el centro y uno en cada arista, creando así cuatro cuadrados más pequeños.
- La herramienta de extrusión se aplica a una cara o a un grupo de caras. Crea una nueva cara del mismo tamaño y forma, conectada a cada una de las aristas existentes mediante una cara. Por lo tanto, al realizar la operación de extrusión en una cara cuadrada, se creará un cubo conectado a la superficie en la ubicación de la cara.
Un segundo método de modelado común se conoce a veces como 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 ] A continuación, el usuario utiliza una segunda imagen del sujeto desde un ángulo diferente y extruye la forma 2D en 3D, siguiendo de nuevo el contorno de la forma. Este método es especialmente común para crear rostros y cabezas. Generalmente, el artista modelará la mitad de la cabeza y luego duplicará los vértices, invertirá su posición relativa a algún plano y unirá las dos piezas. Esto garantiza que el modelo sea simétrico.
Otro método común para crear una malla poligonal consiste en conectar varias primitivas , que son mallas poligonales predefinidas creadas por el entorno de modelado. Algunas primitivas comunes son:
- Cubos
- Pirámides
- Cilindros
- Primitivas 2D, como cuadrados, triángulos y discos.
- Objetos primitivos especializados o esotéricos, como la tetera de Utah o Suzanne, la mascota mono de Blender .
- Esferas - Las esferas se representan comúnmente de dos maneras:
- Las icosferas son icosaedros que poseen un número suficiente de triángulos para asemejarse a una esfera.
- Las esferas UV están compuestas de cuadriláteros y se asemejan a la cuadrícula que se observa en algunos globos terráqueos: los cuadriláteros son más grandes cerca del "ecuador" de la esfera y más pequeños cerca de los "polos", terminando finalmente en un único vértice.
Finalmente, existen algunos métodos especializados para construir mallas con diferentes niveles de detalle. El modelado basado en bocetos ofrece una interfaz intuitiva para crear rápidamente modelos con poco detalle, mientras que los escáneres 3D permiten crear mallas de alta resolución a partir de objetos reales de forma casi automática. Estos dispositivos son muy costosos y, por lo general, solo los utilizan investigadores y profesionales de la industria, pero pueden generar representaciones digitales submilimétricas de alta precisión.
Operaciones
Existe un gran número de operaciones que se pueden realizar en mallas poligonales. Algunas de ellas se corresponden aproximadamente con manipulaciones de objetos 3D del mundo real, mientras que otras no. Las operaciones con mallas poligonales incluyen:
- Creaciones: crea nueva geometría a partir de algún otro objeto matemático.
- Loft : Genera una malla creando una forma a lo largo de dos o más curvas de perfil.
- Extruir: crea una superficie mediante el barrido de una curva de perfil o una superficie poligonal a lo largo de una línea recta o lineal.
- Revolución: Genera una malla haciendo girar (rotar) una forma alrededor de un eje.
- Marching cubes - Algoritmo para construir una malla a partir de una función implícita
- Creaciones binarias: crea una nueva malla a partir de una operación binaria de otras dos mallas.
- Agregar: suma booleana de dos o más mallas
- Restar - Resta booleana de dos o más mallas
- Intersección - Intersección booleana
- Unión: unión booleana de dos o más mallas.
- Unir: Unir una malla a otra (eliminando las superficies interiores).
- Chaflán: crea una superficie biselada que conecta suavemente dos superficies.
- Deformaciones: mueve solo los vértices de una malla.
- Deformar: Mover sistemáticamente los vértices (según ciertas funciones o reglas).
- Deformación ponderada: mueve los vértices en función de pesos localizados por vértice.
- Morfología: mueve los vértices suavemente entre una malla de origen y una de destino.
- Doblar: Mueve los vértices para "doblar" el objeto.
- Giro: Mueve los vértices para "girar" el objeto.
- Manipulaciones: modifican la geometría de la malla, pero no necesariamente la topología.
- Desplazar: introduce geometría adicional basada en un "mapa de desplazamiento" de la superficie.
- Simplificar: Eliminar sistemáticamente y promediar los vértices.
- Subdividir : Introduce nuevos vértices en una malla subdividiendo cada cara. En el caso de, por ejemplo, Catmull-Clark , la subdivisión también puede tener un efecto de suavizado en las mallas a las que se aplica.
- Envolvente convexa : genera una malla convexa que encierra mínimamente una malla dada.
- Cortar - Crear un agujero en una superficie de malla
- Puntada: cierra un agujero en una superficie de malla.
- Mediciones: Calcular algún valor de la malla
- Volumen : Calcula el volumen 3D de una malla (integral volumétrica discreta).
- Área de superficie : Calcula el área de superficie de una malla (integral de superficie discreta).
- Detección de colisiones: determina si dos mallas complejas en movimiento han colisionado.
- Ajuste: Construya una superficie paramétrica (NURBS, spline bicúbica) ajustándola a una malla dada.
- Distancia punto-superficie: calcula la distancia desde un punto a la malla.
- Distancia línea-superficie: calcula la distancia desde una línea hasta la malla.
- Intersección línea-superficie: Calcula la intersección de la línea y la malla.
- Sección transversal: calcula las curvas creadas por una sección transversal de un plano a través de una malla.
- Centroide : calcula el centroide, centro geométrico, de la malla.
- Centro de masas: calcula el centro de masas, punto de equilibrio, de la malla.
- Circuncentro : calcula el centro de un círculo o esfera que encierra un elemento de la malla.
- Incenter : calcula el centro de un círculo o esfera encerrada por un elemento de la malla.
Extensiones
Una vez construida una malla poligonal, se deben seguir pasos adicionales antes de que pueda utilizarse en juegos, animaciones, etc. El modelo debe texturizarse para añadir color y textura a la superficie, y se le debe asignar un esqueleto para la animación. También se pueden asignar pesos y centros de gravedad a las mallas para su uso en simulaciones físicas .
Para visualizar un modelo en la pantalla de un ordenador fuera del entorno de modelado, es necesario guardarlo en uno de los formatos de archivo que se indican a continuación y, a continuación, utilizar o escribir un programa capaz de cargarlo desde dicho formato. Los dos métodos principales para visualizar modelos poligonales 3D son OpenGL y Direct3D . Ambos métodos pueden utilizarse con o sin tarjeta gráfica con aceleración 3D .
Ventajas y desventajas
Representar un objeto mediante polígonos presenta numerosas desventajas. Los polígonos no permiten representar con precisión superficies curvas, por lo que se requiere un gran número de ellos para aproximar las curvas de forma visualmente atractiva. El uso de modelos complejos reduce la velocidad de renderizado. 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 un gran número de modelos en pantalla simultáneamente. A menudo, los programadores deben utilizar varios modelos con diferentes niveles de detalle para representar el mismo objeto y así reducir la cantidad de polígonos renderizados.
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 alcanzar una velocidad de fotogramas interactiva (10 fotogramas/s o superior) con un nivel de detalle similar. 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 ]
Formatos de archivo
Existen diversos formatos para almacenar datos de polígonos 3D. Los más populares son:
- .3ds, .max, que está asociado con 3D Studio Max
- .blend, que está asociado con Blender
- Archivo .c4d asociado con Cinema 4D
- .dae ( COLLADA )
- .dxf , .dwg, .dwf, asociados con AutoCAD
- .fbx (anteriormente Autodesk. Kaydara Filmbox)
- .gltf y .glb, que están asociados con Khronos glTF ; y ahora son un estándar ISO .
- .jt fue desarrollado originalmente por Siemens Digital Industries Software ; ahora es un estándar ISO .
- .lwo, que está asociado con Lightwave
- .lxo, que está asociado con MODO
- .mb y .ma, que están asociados con Maya
- .md2 , .md3 , asociados con la serie de juegos Quake
- Archivo .mdl utilizado con el motor Source de Valve
- .nif ( NetImmerse / gamebryo )
- .obj (Visualizador avanzado de Wavefront)
- El archivo .ply se utiliza para almacenar datos de escáneres 3D.
- .rwx (Renderware)
- Archivos .stl utilizados en la creación rápida de prototipos.
- .u3d ( Universal 3D )
- .wrl (VRML 2.0)
Véase también
Referencias
- ↑ "Primitive - OpenGL Wiki" . www.opengl.org .
- ↑ "Uso de un efecto básico con texturizado" . msdn.microsoft.com . Archivado del original el 16 de diciembre de 2014. Consultado el 5 de noviembre de 2014 .
- ↑ "Método de modelado poligonal" . Archivado del original el 21/04/2022 . Consultado el 19/04/2022 .
- ↑ Rybicki, Joe (diciembre de 1996). "Cómo se hizo NBA Live 97". Electronic Gaming Monthly . N.° 89. Ziff Davis . pág. 301.
Bibliografía
- OpenGL SuperBible (3.ª ed.), por Richard S. Wright y Benjamin Lipchak ISBN 0-672-32601-9
- Guía de programación de OpenGL: La guía oficial para aprender OpenGL, versión 1.4, cuarta edición, por OpenGL Architecture Review Board ISBN 0-321-17348-1
- Manual de referencia de OpenGL(R) : Documento de referencia oficial de OpenGL, versión 1.4 (4.ª edición) por OpenGL Architecture Review Board ISBN 0-321-17383-X
- Documentación de Blender: https://web.archive.org/web/20051212074804/http://blender.org/cms/Documentation.628.0.html
- Documentación de Maya: incluida con Alias Maya, http://www.alias.com/eng/index.shtml
- Gráficos por computadora en 3D