En los 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 mediante mallas poligonales . El modelado poligonal se adapta bien al renderizado 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 3D incluyen superficies NURBS , superficies de subdivisión y representaciones basadas en ecuaciones 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 se convierten en una arista . Tres vértices, conectados entre sí por tres bordes, 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 conocidos como cuadrículas) [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 llama cara .
En la geometría euclidiana , cualesquiera tres puntos 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 para polígonos más complejos. La naturaleza plana de los triángulos facilita la determinación de 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 de mejor apariencia 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, solo 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 bordes distintos que los conecten, ocupando 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 deseadas 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 interseque automáticamente , lo que significa que ningún borde pasa 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 errores como vértices, aristas o caras dobladas. Para algunos propósitos, es importante que la malla sea una variedad , es decir, que no contenga huecos o singularidades (ubicaciones donde dos secciones distintas de la malla están conectadas por un solo vértice).
Construcción de mallas poligonales
Aunque es posible construir una malla especificando manualmente vértices y caras, es mucho más común construir mallas usando una variedad de herramientas. Se encuentra disponible una amplia variedad de paquetes de software de gráficos 3D 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:
- La herramienta de subdivisión divide caras y aristas en partes más pequeñas agregando nuevos vértices. Por ejemplo, un cuadrado se subdividiría agregando un vértice en el centro y uno en cada borde, creando cuatro cuadrados más pequeños.
- La herramienta de extrusión se aplica a una cara o un grupo de caras. Crea una nueva cara del mismo tamaño y forma que está conectada a cada uno de los bordes existentes por una cara. Por lo tanto, realizar la operación de extrusión en una cara cuadrada crearía un cubo conectado a la superficie en la ubicación de la cara.
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. Luego, el usuario usa una segunda imagen del sujeto desde un ángulo diferente y extruye la forma 2D en 3D, de nuevo 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 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 conectando varias primitivas , que son mallas poligonales predefinidas creadas por el entorno de modelado. Las primitivas comunes incluyen:
- Cubos
- Pirámides
- Cilindros
- Primitivas 2D, como cuadrados, triángulos y discos
- Primitivas especializadas o esotéricas, como la Tetera Utah o Suzanne, la mascota del mono de Blender .
- Esferas: las esferas se suelen representar de dos formas:
- Las icósferas son icosaedros que poseen un número suficiente de triángulos para parecerse a una esfera.
- Las esferas ultravioleta están compuestas por cuadrículas y se asemejan a la cuadrícula que se ve en algunas esferas: las cuadrículas son más grandes cerca del "ecuador" de la esfera y más pequeñas cerca de los "polos", y eventualmente terminan en un solo vértice.
Finalmente, existen algunos métodos especializados para construir mallas de alto o bajo detalle. El modelado basado en bocetos es una interfaz fácil de usar para construir modelos de bajo detalle rápidamente, mientras que los escáneres 3D se pueden usar para crear mallas de alto detalle basadas en objetos del mundo real existentes de una manera casi automática. Estos dispositivos son muy costosos y generalmente 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. Algunos de estos corresponden aproximadamente a manipulaciones del mundo real de objetos 3D, mientras que otros no. Las operaciones de malla poligonal 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 barriendo una curva de perfil o una superficie poligonal a lo largo de una línea recta o lineal.
- Revolución: genera una malla girando (rotando) una forma alrededor de un eje.
- Marching cubes: algoritmo para construir una malla a partir de una función implícita
- Creaciones binarias: cree 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
- Intersect - intersección booleana
- Unión: unión booleana de dos o más mallas
- Adjuntar: adjuntar 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 vértices sistemáticamente (de acuerdo con ciertas funciones o reglas)
- Deformación ponderada: mueva los vértices según los pesos localizados por vértice
- Morph: mueva vértices suavemente entre una malla de origen y de destino
- Doblar: mueva los vértices para "doblar" el objeto.
- Girar: mueva los vértices para "girar" el objeto
- Manipulaciones: modifique 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 y promediar vértices sistemáticamente
- Subdividir: suavizar la malla de un curso subdividiendo la malla (Catmull-Clark, etc.)
- Casco convexo: genere otra malla que encierre mínimamente una malla determinada (piense en envoltura retráctil)
- Cortar: crea un agujero en una superficie de malla
- Puntada: cierra un agujero en una superficie de malla.
- Medidas: calcula 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: determine si dos mallas complejas en movimiento han chocado
- Ajuste: construya una superficie paramétrica (NURBS, spline bicúbica) ajustándola a una malla determinada
- Distancia punto-superficie: calcula la distancia desde un punto a la malla
- Distancia línea-superficie: calcula la distancia desde una línea a 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 masa: calcula el centro de masa, punto de equilibrio, de la malla
- Circuncentro: calcula el centro de un círculo o esfera que encierra un elemento de la malla
- Incentro: calcula el centro de un círculo o esfera encerrada por un elemento de la malla
Extensiones
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. El modelo debe tener una textura mapeada para agregar colores y textura a la superficie y debe recibir 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 una pantalla de 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 de polígonos 3D son OpenGL y Direct3D . Ambos métodos se pueden utilizar con o sin una tarjeta gráfica acelerada 3D .
Ventajas y desventajas
Existen muchas desventajas al representar un objeto mediante 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 curvas de una manera visualmente atractiva. El uso de modelos complejos tiene un costo en velocidad reducida. En la conversión de línea de exploración , cada polígono debe convertirse y mostrarse, independientemente del tamaño, y con frecuencia hay una gran cantidad de modelos en la pantalla en un momento dado. A menudo, los programadores deben usar varios modelos en diferentes niveles de detalle para representar el mismo objeto con el fin de reducir el número de polígonos que se están renderizando.
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 cuadro de 60 cuadros por segundo o más, los modeladores de superficie , la forma principal de mostrar modelos no poligonales, son incapaces de lograr una velocidad de cuadro interactiva (10 cuadros / so 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 solo modelo poligonal puede realizar cualquier movimiento si se aplican los datos de movimiento apropiados, y puede verse desde cualquier ángulo. [3]
Formatos de archivo
Hay una variedad de formatos disponibles 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
- .c4d asociado con Cinema 4D
- .dae ( COLLADA )
- . dxf , .dwg, .dwf, asociado con AutoCAD
- .fbx (anterior de Autodesk. Kaydara Filmbox)
- .jt desarrollado originalmente por Siemens PLM Software ; ahora 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 , asociado con la serie de juegos Quake
- .mdl utilizado con el motor de origen de Valve
- .nif ( NetImmerse / gamebryo )
- .obj ("El visualizador avanzado" de Wavefront)
- .ply utilizado para almacenar datos de escáneres 3D
- .rwx (Renderware)
- .stl utilizado en la creación rápida de prototipos
- .u3d ( 3D universal )
- .wrl (VRML 2.0)
Ver también
- Método de elementos finitos
- Generación de mallas
- Polígono (gráficos por computadora)
- Malla poligonal
- Gráficos vectoriales
- Procesamiento de geometría
- modelado 3D
Referencias
- ^ "Primitivo - Wiki OpenGL" . www.opengl.org .
- ^ "Uso de un efecto básico con texturizado" . msdn.microsoft.com .
- ^ Rybicki, Joe (diciembre de 1996). "La realización de NBA Live 97". Mensual de juegos electrónicos . No. 89. Ziff Davis . pag. 301.
- OpenGL SuperBible (3.a 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 de OpenGL Architecture Review Board ISBN 0-321-17348-1
- Manual de referencia de OpenGL (R): el documento de referencia oficial de OpenGL, versión 1.4 (cuarta edición) de 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: empaquetada con Alias Maya, http://www.alias.com/eng/index.shtml