Geometría sólida constructiva
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, generando potencialmente objetos visualmente complejos al combinar algunos primitivos.
En gráficos por computadora 3D y CAD, CSG se usa a menudo en modelado de procedimientos. CSG también se puede realizar en mallas poligonales y puede o no ser procesal y/o paramétrico.
Compare CSG con el modelado de malla poligonal y el modelado de cajas.
Funcionamiento
Los objetos sólidos más simples utilizados para la representación se denominan primitivas geométricas. Normalmente se trata de objetos de forma simple: cuboides, cilindros, prismas, pirámides, esferas, conos. 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 son típicamente operaciones booleanas sobre conjuntos: unión, intersección y diferencia, así como transformaciones geométricas de aquellas. conjuntos.
Una primitiva normalmente puede describirse mediante un procedimiento que acepta una cierta cantidad de parámetros; por ejemplo, una esfera puede describirse mediante las coordenadas de su punto central, junto con un valor de radio. Estas primitivas se pueden combinar en objetos compuestos usando operaciones como estas:
Unión
Merger of two objects into oneDiferencia
Sutracción de un objeto de otroIntersección
Porción común a ambos objetos
Combinando estas operaciones elementales, es posible construir objetos de alta complejidad a partir de objetos simples.
Trazado de rayos
La renderización de geometría sólida constructiva es particularmente sencilla cuando se utiliza el trazado de rayos. Los trazadores de rayos intersectan un rayo con ambas primitivas que se están operando, aplican el operador a los intervalos de intersección a lo largo del rayo 1D y luego toman el punto más cercano a la cámara a lo largo del rayo como resultado.
Aplicaciones
La geometría sólida constructiva tiene varios usos prácticos. Se utiliza en casos donde se desean objetos geométricos simples o donde la precisión matemática es importante. Casi todos los paquetes de CAD de ingeniería utilizan CSG (donde puede resultar ú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 del motor fuente nativo) y Torque Game Engine/Torque Game Engine Advanced. CSG es popular porque un modelador puede utilizar un conjunto de objetos relativamente simples para crear una geometría muy complicada. 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 hermético si todas las formas primitivas son estancas. Esto puede ser importante para algunas aplicaciones informáticas de fabricación o ingeniería. En comparación, al crear geometría basada en representaciones de límites, se requieren datos topológicos adicionales o se deben realizar comprobaciones de coherencia para garantizar que la descripción de límites dada especifique un objeto sólido válido.
Una propiedad conveniente de las formas CSG es que es fácil clasificar puntos arbitrarios como dentro o fuera de la forma creada por CSG. El punto simplemente se clasifica frente a todas las primitivas subyacentes y se evalúa la expresión booleana resultante. Esta es una cualidad deseable para algunas aplicaciones como el trazado de rayos.
Conversión de mallas a CSG
Dado que los modelos CSG están parametrizados por construcción, a menudo son más favorables que las mallas habituales cuando se trata de aplicaciones donde el objetivo es fabricar modelos personalizados. Para este tipo de aplicaciones puede resultar interesante convertir mallas ya existentes en árboles CSG. Este problema de convertir automáticamente mallas en árboles CSG se llama CSG inverso.
Se requiere que un árbol CSG resultante ocupe el mismo volumen en el espacio 3D que la malla de entrada y al mismo tiempo tenga una cantidad mínima de nodos. Se prefieren soluciones simples para garantizar que el modelo resultante sea fácil de editar. Resolver este problema es un desafío debido al gran espacio de búsqueda que hay que explorar. 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 construyendo un conjunto de semiespacios que describen el interior de la geometría. Estos medios espacios se utilizan para describir primitivas que se pueden combinar para obtener el modelo final.
Otro enfoque desacopla la detección de formas primitivas y el cálculo del árbol CSG que define el modelo final. Este enfoque explota la capacidad de las herramientas modernas de síntesis de programas para encontrar un árbol CSG con una complejidad mínima.
También existen enfoques que utilizan algoritmos genéticos para optimizar de forma iterativa una forma inicial hacia la forma de la malla deseada.
Aplicaciones destacadas con soporte CSG
Lenguajes y software de modelado genéricos
- HyperFun
- PLaSM
Trazado de rayos y transporte de partículas
- PhotoRealistic RenderMan
- POV-Ray
Diseño asistido por ordenador
- AutoCAD
- Autodesk Inventor
- Autodesk Fusion 360
- BRL-CAD
- CATIA
- FreeCAD
- NX CAD
- SolveSpace
- Onshape
- OpenSCAD
- PTC Creo Parametric (antes conocido como Pro/Engineer)
- Realsoft 3D
- Rhino
- SelfCAD
- Solid Edge
- SolidWorks
- Tinkercad
- Vectorworks
Juegos
- Sueños
- Godot
- GtkRadiant
- Unidad, vía plug-ins gratuitos o pagados de la tienda Unity Asset.
- UnrealEd
- Valve Hammer Editor
- Roblox
Otros
- 3Delight
- Aqsis (como versión 0.6.0)
- Blender – principalmente un editor de malla superficial, pero capaz de CSG simple utilizando objetos meta y utilizando el modificador booleano en objetos de malla.
- Clara.io
- Geant4
- MCNP
- SketchUp
Contenido relacionado
Mantenimiento
Identificador
Pared de larry