Articulo de referencia

Geometría sólida constructiva

Los objetos CSG se pueden representar mediante árboles binarios, donde las hojas representan primitivas y los nodos representan operaciones. En esta figura, los nodos están etiq...

Los objetos CSG se pueden representar mediante árboles binarios, donde las hojas representan primitivas y los nodos representan operaciones. En esta figura, los nodos están etiquetados con para intersección , para unión y para diferencia .

La geometría sólida constructiva ( CSG ; anteriormente llamada geometría sólida binaria computacional ) es una técnica utilizada en el modelado de sólidos . La geometría sólida constructiva permite al modelador crear una superficie u objeto complejo mediante el uso de operadores booleanos para combinar objetos más simples, [ 1 ] generando potencialmente objetos visualmente complejos mediante la combinación de algunos primitivos. [ 2 ] [ 3 ]

En gráficos 3D por computadora y CAD , CSG se usa frecuentemente en modelado procedimental . CSG también se puede realizar en mallas poligonales y puede ser o no procedimental y/o paramétrico.

CSG se puede contrastar con el modelado de malla poligonal , la representación de límites y el modelado de cajas .

Funcionamiento

Los objetos sólidos más simples utilizados para la representación se denominan primitivas geométricas . Típicamente, son objetos de forma simple: cuboides , cilindros , prismas , pirámides , esferas y conos . [ 1 ] El conjunto de primitivas permitidas está limitado por cada paquete de software. Algunos paquetes de software permiten CSG en objetos curvos, mientras que otros no.

Un objeto se construye a partir de primitivas mediante operaciones permitidas , que suelen ser operaciones booleanas sobre conjuntos : unión (OR), intersección (AND) y diferencia (NOT), así como transformaciones geométricas de dichos conjuntos. [ 1 ]

Una primitiva se puede describir típicamente mediante un procedimiento que acepta cierta cantidad de parámetros ; por ejemplo, una esfera se puede describir mediante las coordenadas de su punto central, junto con un valor de radio. Estas primitivas se pueden combinar en objetos compuestos utilizando operaciones como estas:

Combinando estas operaciones elementales, es posible construir objetos de alta complejidad a partir de otros más sencillos.

trazado de rayos

La representación de geometría sólida constructiva es particularmente sencilla con el trazado de rayos . Los trazadores de rayos intersecan un rayo con ambas primitivas sobre las que se está trabajando, aplican el operador a los intervalos de intersección a lo largo del rayo 1D y, a continuación, toman el punto más cercano a la cámara a lo largo del rayo como resultado.

Aplicaciones

Operaciones CSG aplicadas en el contexto de rayos en un trazador de rayos.

La geometría sólida constructiva tiene varias aplicaciones prácticas. Se utiliza en casos donde se desean objetos geométricos simples o donde la precisión matemática es importante. [ 4 ] Casi todos los paquetes de CAD de ingeniería utilizan CSG (donde puede ser útil para representar cortes de herramientas y características donde las piezas deben encajar).

El motor Quake y Unreal Engine utilizan este sistema, al igual que Hammer (el editor de niveles nativo del motor Source ) y Torque Game Engine / Torque Game Engine Advanced . CSG es popular porque un modelador puede usar un conjunto de objetos relativamente simples para crear geometría muy compleja. [ 3 ] Cuando CSG es procedimental o paramétrico, el usuario puede revisar su geometría compleja cambiando la posición de los objetos o cambiando la operación booleana utilizada para combinar esos objetos.

Una de las ventajas de CSG es que puede asegurar fácilmente que los objetos sean "sólidos" o estancos si todas las formas primitivas lo son. [ 5 ] Esto puede ser importante para algunas aplicaciones de computación en fabricación o ingeniería. En comparación, al crear geometría basada en representaciones de contorno , se requieren datos topológicos adicionales o se deben realizar comprobaciones de consistencia para asegurar que la descripción del contorno dada especifique un objeto sólido válido. [ 1 ]

Una propiedad conveniente de las formas CSG es que resulta fácil clasificar puntos arbitrarios como dentro o fuera de la forma creada por CSG. El punto simplemente se clasifica con respecto a todas las primitivas subyacentes y se evalúa la expresión booleana resultante. [ 6 ] Esta es una cualidad deseable para algunas aplicaciones, como el trazado de rayos . [ 6 ]

Conversión de mallas a CSG

Dado que los modelos CSG están parametrizados por construcción, suelen ser más ventajosos que las mallas convencionales en aplicaciones donde el objetivo es fabricar modelos personalizados. Para estas aplicaciones, puede resultar interesante convertir mallas ya existentes en árboles CSG. Este problema de conversión automática de mallas a árboles CSG se denomina CSG inverso .

El árbol CSG resultante debe ocupar el mismo volumen en el espacio 3D que la malla de entrada, con un número mínimo de nodos. Se prefieren soluciones sencillas para garantizar que el modelo resultante sea fácil de editar. Resolver este problema es un desafío debido al amplio espacio de búsqueda que debe explorarse. Combina parámetros continuos, como la dimensión y el tamaño de las formas primitivas, y parámetros discretos, como los operadores booleanos utilizados para construir el árbol CSG final.

Los métodos deductivos resuelven este problema mediante la construcción de un conjunto de semiespacios que describen el interior de la geometría. Estos semiespacios se utilizan para describir primitivas que pueden combinarse para obtener el modelo final. [ 7 ]

Otro enfoque desacopla la detección de formas primitivas y el cálculo del árbol CSG que define el modelo final. Este enfoque aprovecha la capacidad de las herramientas modernas de síntesis de programas para encontrar un árbol CSG con una complejidad mínima. [ 8 ]

También existen enfoques que utilizan algoritmos genéticos para optimizar iterativamente una forma inicial hacia la forma de la malla deseada. [ 9 ]

Aplicaciones destacadas con soporte de CSG

Lenguajes y software de modelado genérico

Trazado de rayos y transporte de partículas

Diseño asistido por ordenador

Juego de azar

Otros

  • 3Delight
  • Aqsis (a partir de la versión 0.6.0) [ 11 ]
  • Blender es principalmente un editor de mallas de superficie, pero es capaz de realizar CSG simples utilizando metaobjetos y el modificador booleano en objetos de malla.
  • CGAL : una biblioteca de algoritmos geométricos y estructuras de datos, en particular operaciones booleanas sobre mallas poligonales.
  • Clara.io
  • Geant4
  • Magica CSG [ 12 ]
  • MCNP
  • OpenMC - Código de transporte de fotones y neutrones de Monte Carlo
  • SketchUp
  • Womp [ 13 ]

Referencias

  1. 1 2 3 4 Foley, James D. (1996), "12.7 Geometría sólida constructiva", Gráficos por computadora: Principios y práctica , Addison-Wesley Professional, págs. 557–558 , ISBN  9780201848403,
  2. Roth, Scott (1982). "Ray Casting for Modeling Solids". Computer Graphics and Image Processing . 18 (2): 109– 144. doi : 10.1016/0146-664X(82)90169-1 .
  3. 1 2 Bloomenthal, Jules; Bajaj, Chandrajit (1997), "5.2.5 Intersección con árboles CSG", Introducción a las superficies implícitas , Morgan Kaufmann, págs. 178–180 , ISBN  9781558602335.
  4. Foley (1996) , pág. 559.
  5. van Rossen, Sander; Baranowski, Matthew (2011), "Geometría sólida constructiva en tiempo real", en Ansari, Marwan (ed.), Herramientas para el desarrollo de juegos , CRC Press, pp. 79–96 , ISBN  9781439867723.
  6. 1 2 Glassner, Andrew S. (1989), Introducción al trazado de rayos , Morgan Kaufmann, pág. 80, ISBN  9780122861604.
  7. Buchele, Suzanne F.; Crawford, Richard H. (2004). "Construcción de árboles de geometría sólida constructiva de semiespacios tridimensionales a partir de representaciones de límites implícitas". Computer-Aided Design . 36 (11): 1063– 1073. doi : 10.1016/j.cad.2004.01.006 .
  8. Du, Tao; Inala, Jeevana Priya; Pu, Yewen; Spielberg, Andrew; Schulz, Adriana; Rus, Daniela; Solar-Lezama, Armando; Matusik, Wojciech (2018). "InverseCSG: conversión automática de modelos 3D a árboles CSG" . ACM Trans. Graph . doi : 10.1145/3272127.3275006 .
  9. Fayolle, Pierre-Alain; Pasko, Alexander A. (2016). "Un enfoque evolutivo para la extracción de árboles de construcción de objetos a partir de nubes de puntos 3D" (PDF) . Computer-Aided Design . 74 : 1–17 . doi : 10.1016/j.cad.2016.01.001 .
  10. Godot Engine - Godot obtiene soporte para CSG
  11. Gregory, Paul (12 de febrero de 2002). "Lanzamiento importante" . Recuperado el 20 de mayo de 2020 a través de SourceForge.
  12. Sitio web de Magica CSG
  13. Sitio web de Womp