Fact-checked by Grok 2 weeks ago

Constructive solid geometry

Constructive solid geometry (CSG) is a representational scheme for in which complex three-dimensional objects are constructed from simple primitive solids, such as blocks, cylinders, spheres, cones, and tori, combined using regularized set operations including , , and . These primitives can be transformed through rigid motions like , , and scaling before combination, allowing for the creation of intricate shapes via a hierarchical known as a CSG tree, where leaves represent primitives and internal nodes denote operations. The resulting model is mathematically precise, ensuring unambiguous boundary representations suitable for . CSG emerged in the late 1970s as part of the broader development of techniques, pioneered by researchers at the University of Rochester's Production Automation Project, including Aristides A. G. Requicha and Herbert B. Voelcker. Their foundational work formalized CSG within and volumetric modeling paradigms, emphasizing exact mathematical descriptions of solids to support applications in and . By the early 1980s, CSG had become a standard method, integrated into systems like PADL (Part and Assembly Description Language), which demonstrated its utility for hierarchical object decomposition. In practice, CSG representations are compact and intuitive for designers, facilitating of mechanical parts, such as brackets with holes or assemblies with interlocking components, by iteratively applying operations to build from basic forms. While CSG excels in maintaining topological integrity and supporting evaluations, rendering often requires conversion to polygonal meshes or ray-tracing algorithms to handle intersections efficiently. Initially developed for and (CAD/CAM), CSG has expanded to for ray-traced rendering and visualization. It has also found use in for , anatomical simulations in , and open-source libraries like for in and as of 2025.

Introduction

Definition and Principles

Constructive solid geometry (CSG) is a technique for defining complex three-dimensional solids by combining simple geometric primitives through operations—such as , , and —and applying rigid transformations, including , , and . This approach enables the of intricate models in a hierarchical manner, where primitives serve as building blocks and operations define their spatial relationships. In CSG, solids are represented implicitly as subsets of three-space (\mathbb{R}^3), focusing on the volume enclosed by the solid rather than an explicit description of its surfaces. A principle is the point scheme, which determines for any point in space whether it lies inside the solid, outside it, or on its ; this ensures precise, unambiguous representations that avoid gaps, overlaps, or inconsistencies in the model. Primitives in CSG are parametric geometric objects, such as a specified by its coordinates (x, y, z) and r. Mathematically, CSG solids are treated as regular sets in , forming a closed under regularized operations: (A \cup^* B), (A \cap^* B), and (A -* B).

History

The origins of constructive solid geometry (CSG) trace back to the and , when early efforts in emerged as part of advancements in (CAD). Ivan Sutherland's system, developed in 1963 as part of his thesis at , introduced interactive and influenced subsequent (B-rep) techniques, laying groundwork for volumetric modeling approaches that CSG would later build upon. By the , researchers at the University of 's Production Automation Project (PAP) began exploring set-theoretic methods for representing solid objects, drawing from and to enable precise, unambiguous descriptions of three-dimensional shapes. A key milestone came in 1977 with the formalization of CSG in a technical memorandum by Aristides A. G. Requicha, which defined CSG as a scheme for composing solids using operations on primitive volumes, implemented within the PAP's BUILD modeling environment. This was further elaborated in Requicha and Herbert B. Voelcker's paper, which provided a historical assessment of systems, including the BUILD group of modelers, and established CSG as a standard for exact representation in engineering applications. In the 1980s, CSG gained adoption in CAD systems such as PADL-1 (1979) and PADL-2 (1980), both developed at , which used CSG for defining and displaying solid objects via a specialized language. These systems also facilitated integration with B-rep methods in hybrid approaches, enhancing flexibility for and tasks. During the , CSG expanded into , particularly through ray tracing techniques that efficiently handled operations on implicit solids for rendering complex scenes in and games. Pixar's RenderMan software, introduced in 1988 and widely used by the , incorporated CSG support for modeling and shading, contributing to productions like (1995). In the 2000s and 2010s, CSG saw a revival in open-source tools and game engines; for instance, added native CSG support in 2018 to aid level prototyping through primitive combinations. Ongoing research from the 2020s has explored AI-assisted CSG generation, using to automate the creation of procedural models from sketches or specifications, building on foundational set-theoretic principles.

Fundamentals

Primitive Solids

In constructive solid geometry (CSG), primitive solids serve as the fundamental building blocks from which more complex models are assembled. These primitives are typically simple, parameterized geometric objects that can be precisely defined and manipulated to represent basic shapes in . Common primitive types include cuboids, cylinders, spheres, cones, and tori, each defined by a set of geometric parameters that specify their position, size, and orientation. A is typically parameterized by minimum and maximum coordinates along each , forming a rectangular box aligned with the . Cylinders are defined by an , , and , allowing representation of circular prisms. Spheres require only a center point and , providing isotropic shapes. Cones are specified by an point, base , and , while tori use major and minor to define their ring-like structure. These primitives enable the modeling of a wide range of mechanical and architectural forms through their inherent symmetry and simplicity. Infinite , such as half-spaces and , extend the capabilities of CSG by allowing unbounded regions in models. A half-space is defined by a bounding , with all points on one side of the plane considered interior; this is useful for clipping or defining infinite extents in assemblies. Infinite cylinders or wedges can also serve as primitives, providing directional unbounded volumes that facilitate the of open or semi-infinite structures. Each primitive is mathematically parameterized as a f(\mathbf{p}), where \mathbf{p} is a point in space, and the evaluates whether \mathbf{p} is inside, outside, or on the of the solid. For example, for a centered at \mathbf{c} with r, the condition is \|\mathbf{p} - \mathbf{c}\| \leq r for points inside or on the . This implicit supports efficient point , essential for subsequent geometric evaluations. In CSG, primitives act as the leaf nodes in a hierarchical construction tree, forming the base level from which complex solids are built through combinations. This structure allows for , where primitives can be instanced and transformed to create intricate assemblies without redundant definitions. Advanced CSG systems incorporate extensions such as swept primitives, which generate solids by extruding two-dimensional profiles along paths, and user-defined primitives tailored to specific applications. Swept primitives, for instance, include translational extrusions of polygons or rotational sweeps around an , enhancing the expressiveness for manufacturing-oriented models. User-defined primitives allow integration of custom shapes, often derived from curves or surfaces, in specialized software environments.

Boolean Operations

In constructive solid geometry (CSG), Boolean operations provide the foundational mechanisms for combining solid primitives to form complex models, drawing directly from applied to the volumes occupied by these primitives. The three primary operations—union, , and —enable the construction of new solids by manipulating the point sets that define the interiors of the operands, ensuring the resulting models maintain well-defined boundaries and volumes. The operation, denoted A \cup B, combines two solids A and B to include all points belonging to either solid, effectively merging their volumes while preserving any overlapping regions without alteration. Geometrically, this operation increases the overall volume and can simplify topologies by connecting separate components into a single cohesive shape, such as fusing two adjacent spheres into an hourglass-like form. In contrast, the operation, A \cap B, retains only the points common to both solids, yielding the overlapping volume and potentially reducing complexity by extracting shared regions, for example, carving a lens-shaped solid from two intersecting cylinders. The difference operation, A \setminus B, includes points in A that are not in B, subtracting the volume of B from A to create cutouts or concavities, such as hollowing a tunnel through a block. These operations alter the topology of the resulting solid: union expands connectivity and volume, intersection isolates overlaps to form bounded intersections, and difference introduces voids or indentations that can increase surface genus. Union and intersection exhibit both commutativity (A \cup B = B \cup A and A \cap B = B \cap A) and associativity ((A \cup B) \cup C = A \cup (B \cup C) and (A \cap B) \cap C = A \cap (B \cap C)), allowing the order and grouping of operands to be rearranged without changing the outcome. Difference, however, is neither commutative (A \setminus B \neq B \setminus A) nor associative ((A \setminus B) \setminus C \neq A \setminus (B \setminus C)), requiring careful specification of operand order in constructions. Due to the associativity of union and intersection, these operations extend naturally to n-ary forms in CSG representations, where multiple primitives can be combined in a single expression within hierarchical trees, facilitating scalable model building.

Representation and Computation

CSG Trees and Data Structures

Constructive solid geometry (CSG) models are typically represented as ordered binary trees, where leaf nodes contain primitive solids and internal nodes specify regularized operations such as , , or , enabling a recursive hierarchical construction of complex objects from simpler components. This tree structure ensures that the model defines unambiguous regular sets (r-sets), particularly when using bounded , by applying operators to subtrees in a well-defined order. Each node in the CSG tree stores the operator type for internal nodes—along with pointers to child subtrees—or the geometric parameters defining the primitive for leaf nodes, often including transformation matrices to account for rigid body motions like translations or rotations applied to subtrees. These transformations allow for instancing and positioning of primitives without duplicating data, maintaining compactness in the representation. To evaluate a CSG tree, such as for point classification, a depth-first traversal is employed, starting from the root and recursively propagating the inside/outside status of a point through the subtrees by applying the operators at each internal until reaching the leaves, where primitive membership tests determine the initial status. For efficient computation, CSG trees are often augmented with hierarchies (BVHs), where each maintains a enclosing the solid represented by its subtree, enabling quick rejection of queries (e.g., intersections) that miss these volumes and accelerating traversal in models. These BVHs are constructed recursively, with parent volumes derived from the union of child volumes transformed appropriately, providing tight enclosures especially in cyclic variants. Serialization of CSG models for interchange between systems is supported by formats implemented in libraries like OpenCSG, which represent trees as vectors of with associated flags and , facilitating rendering and without full . A variant of the binary tree representation is the (DAG), which generalizes trees by allowing multiple parents for nodes to share subtrees, thereby reducing redundancy and memory usage in models with repeated or structures, such as those generated procedurally. This sharing preserves the hierarchical while enabling more compact storage for intricate designs.

Point Classification Algorithms

Point classification in constructive solid geometry (CSG) determines whether a given point lies inside, outside, or on the of a solid defined by a CSG tree. This operation is fundamental for tasks such as rendering, , and solid evaluation, as it enables point-wise assessment without computing the full . The standard approach involves recursively traversing the CSG tree, classifying the point against primitive solids at leaf nodes, and propagating results upward using Boolean operator rules. The recursive classification algorithm begins at the root of the CSG tree and evaluates the point's status by descending through nodes. For primitive solids, classification relies on geometric tests specific to the primitive type. For example, in a primitive with center \mathbf{c} and r, the point \mathbf{p} is inside if \|\mathbf{p} - \mathbf{c}\| < r, outside if \|\mathbf{p} - \mathbf{c}\| > r, and on the if \|\mathbf{p} - \mathbf{c}\| = r. Similar tests apply to other primitives like cylinders or boxes, often using distance metrics or halfspace inequalities. At operator nodes, the classifications from child subtrees are combined according to the operator, following regularized : for , the point is inside if inside at least one child (including on the of one and inside the other), outside if outside both, and on the if on the of exactly one and outside the other (on both boundaries is typically on the ); for , inside if inside both, outside if outside at least one, and on the if on the of one and inside the other (or on both); for (A \ B), inside if inside A and outside B (or on A and outside B), outside otherwise, with on A and on B typically outside, and on B and inside A typically inside (adjusted for regularization). These rules ensure compliance with regularized to handle topological consistency. Pseudocode for the algorithm can be expressed as follows, returning an enumeration {inside, outside, boundary}:
function classify(node, point):
    if node is primitive:
        return classify_primitive(node, point)  // e.g., sphere distance test
    elif node is boolean_operator:
        left_status = classify(node.left, point)
        right_status = classify(node.right, point)
        return combine(left_status, right_status, node.operator)
    // Handle transformations if present by applying inverse to point
The combine function implements operator-specific logic, such as logical OR for interiors. This post-order traversal ensures all subtrees are evaluated before combining results. is critical due to floating-point precision errors, particularly near . An , often called a "fuzz factor," is introduced in tests: a point is considered inside if the distance metric is less than r - \epsilon, outside if greater than r + \epsilon, and on the otherwise. This prevents misclassification from round-off errors, with \epsilon typically set to a small fraction of the primitive's scale, such as $10^{-6}. For cases involving multiple overlapping surfaces (e.g., "on/on" ambiguities), neighborhood information—such as surface normals—may be computed to resolve status by perturbing the point slightly or using topological rules. To optimize traversal, bounding volumes like axis-aligned bounding boxes (AABBs) are associated with each , computed conservatively from child bounds. Before recursing into a subtree, the point is checked against the node's AABB: if outside, the subtree can be skipped (early termination), as the point cannot be inside that sub-solid. This reduces evaluations in sparse trees, especially for deep hierarchies, though worst-case performance remains unchanged. The of point classification is O(n), where n is the number of nodes in the CSG tree, as each node is visited at most once in the traversal, with constant-time operations per node assuming fixed primitive complexity. This efficiency holds independent of the overall model complexity for individual point queries, making it suitable for repeated evaluations in applications like ray tracing.

Rendering and Implementation

Ray Tracing Techniques

In ray tracing for constructive solid geometry (CSG), rays are cast from the viewpoint through each to determine and by computing intersections with the solid's boundary defined by the CSG tree. The process begins by parameterizing the ray as \mathbf{P}(t) = \mathbf{O} + t \mathbf{D}, where \mathbf{O} is the origin, \mathbf{D} is the direction, and t > 0 is the parameter. For each primitive solid in the CSG tree (such as spheres, cylinders, or cones), the ray-primitive intersections are solved analytically to find entry and exit points, yielding intervals [t_{\min}, t_{\max}] along the ray where it penetrates the solid. This approach was pioneered by Roth in 1982, who introduced as a method to model and render CSG solids by treating rays as probes that intersect primitive surfaces. Boolean operations are applied recursively to these intervals as the ray traverses the CSG tree from leaves to root. For a union, the resulting interval is the union of overlapping or adjacent child intervals; for an intersection, it is the overlap of child intervals; and for a difference, the second child's interval is subtracted from the first. The final set of intervals represents the segments of the ray inside the composite solid, enabling accurate determination of entry and exit points for the entire object. Interval arithmetic enhances robustness by bounding potential intersection ranges and avoiding numerical issues in root-finding for higher-degree polynomials from combined primitives. This interval-based technique for CSG rendering was further refined by Duff in 1982 using recursive subdivision and interval evaluation for implicit surfaces. To find the surface hit for shading, the closest intersection is selected as the minimal t > 0 from the final intervals, with point classification determining whether it is a front-facing (entry) or back-facing (exit) surface based on the direction and surface . Acceleration structures are essential for efficiency, particularly for complex trees; bounding volume hierarchies (BVHs) enclose subtrees with simple volumes (e.g., spheres or boxes), allowing rays to prune non-intersecting branches early via cheap ray-bounding volume tests before descending into . Hybrid methods combine with spatial partitioning, such as k-d trees, to further reduce computations in large scenes. These techniques, building on early space subdivision heuristics, enable practical rendering of CSG models. CSG ray tracing emerged in the as a method for rendering non-polygonal scenes, providing exact intersections for high-fidelity effects like shadows and reflections without , as demonstrated in Roth's foundational work on for .

Boolean Operation Algorithms

Boolean operation algorithms in constructive solid geometry (CSG) compute the explicit of the resulting solid from applying , , or operations to two or more , enabling conversion from the implicit CSG tree to a tangible surface model. These algorithms typically begin with constructive evaluation, where the solids are decomposed into their boundary polygons—such as the faces of polyhedral —and intersections are computed by clipping these polygons against the supporting of the opposing solid. For instance, the Sutherland-Hodgman clipping , originally for polygons, is adapted to by successively clipping polyhedral faces against each of the other solid's boundaries, generating intersection curves that form the new edges of the result. This process ensures that only portions of the boundaries contributing to the final solid are retained, with clipping rules determining whether vertices lie inside, outside, or on the to build the clipped . In the 1980s, seminal implementations like the PADL-2 system developed evaluation techniques that classify the edges and vertices of one solid's relative to the other solid using set membership tests against its half-spaces. This classification identifies active elements—those that survive the —and computes their intersections via plane-plane or edge-plane intersections, followed by reconstruction of the resulting through neighborhood manipulations that connect valid faces, edges, and vertices while discarding invalid portions. The algorithm processes the CSG tree recursively, evaluating subtrees to merge boundaries at each operation node, ensuring topological consistency in the output. Modern methods advance these foundations by leveraging arrangements of surfaces, where the input boundaries are partitioned into cells defined by all intersecting planes or surfaces, followed by topological merging to select cells belonging to the resulting solid based on the Boolean operator. Libraries such as implement these using Nef polyhedra, a that represents polyhedral solids closed under operations with robust exact arithmetic to avoid floating-point errors in intersection computations and handle degenerate cases like coplanar faces. The output is typically a (B-rep) consisting of oriented faces, edges, and vertices, which may include non-manifold features such as shared edges between multiple faces when the operation produces complex topologies. The computational complexity of these algorithms is O(n²) in the worst case for n primitives, dominated by pairwise intersection tests between boundary elements, though optimizations like spatial hashing—via bounding volume hierarchies or voxel grids—reduce practical runtime by accelerating proximity queries and clipping operations.

Advantages and Limitations

Key Benefits

Constructive solid geometry (CSG) provides exact representations of solid objects by combining primitive solids through Boolean operations, ensuring watertight models without gaps, overlaps, or tessellation-induced errors that plague polygonal approximations. This precision arises from the mathematical foundation of regularized set operations, which define unambiguous interiors, boundaries, and exteriors for the resulting solids, making CSG particularly suitable for applications requiring tight manufacturing tolerances, such as CNC machining. Unlike boundary representations that may accumulate floating-point errors in edge intersections, CSG maintains fidelity to the original primitives throughout the modeling process. CSG enables compact storage of complex geometries via hierarchical trees composed of a limited number of and operations, significantly reducing data requirements compared to explicit representations. This efficiency scales well for models, as modifications to parameters update the entire structure without regenerating vast lists, facilitating storage and transmission in resource-constrained environments. The topological robustness of CSG stems from its reliance on point classification algorithms to determine inside/outside status relative to and subtrees, preventing cracks or inconsistencies in renders and simulations that often arise in -based models due to numerical instability. By syntactically guaranteeing the validity of solids constructed from bounded , CSG avoids invalid topologies like self-intersections or non-manifold edges, enabling reliable computations for , mass properties, and interference detection. This inherent structure supports automated design verification without extensive error-checking routines. Parametric flexibility in CSG allows changes to primitive dimensions or positions to propagate automatically through the Boolean tree, streamlining iterative design processes and supporting generative modeling where families of related objects are derived from adjustable parameters. For example, scaling a primitive in a CSG representation instantly recomputes the entire model's geometry via set operations, preserving exactness without manual adjustments to dependent features—a capability less intuitive in dense mesh formats that require remeshing. This adaptability enhances collaboration in engineering workflows, where design variations can be explored efficiently.

Challenges and Drawbacks

One major challenge in constructive solid geometry (CSG) is its high computational cost, stemming from the need to evaluate the CSG tree for each point or ray during rendering or intersection tests. In a balanced tree with n primitives, naive evaluation can reach O(n^2) time complexity due to repeated traversals and classifications across subtrees, rendering it inefficient for dense ray tracing or models with large n without specialized acceleration like bounding volume hierarchies. This overhead is exacerbated in voxel-based or octree implementations, where Boolean operations process objects element by element, significantly increasing demands on hardware resources. Editing CSG models presents further difficulties, as deep hierarchical trees obscure the underlying geometry and make modifications non-intuitive. The binary tree structure, with unevaluated Boolean operations, lacks direct access to individual surfaces or features, requiring users to navigate complex decompositions that may not reflect the original design intent, thus complicating iterative adjustments. Additionally, CSG representations are often hard for humans to interpret without converting to boundary representations, limiting practical usability in design workflows. Rendering CSG models imposes significant limitations, particularly for real-time applications, where computing exact intersections with the implicit tree is prohibitively expensive compared to rasterizing polygonal meshes. Interactive modifications further amplify this issue, as re-evaluating the tree for dynamic scenes strains graphics hardware, often necessitating approximations like polygonization to achieve viable frame rates. Numerical instability also arises from floating-point errors in boundary classification and intersection computations, which can produce leaks, spurious artifacts, or inconsistent results due to round-off inaccuracies in geometric predicates. Scalability issues limit CSG to relatively simple models, as explicit evaluation of deep trees can lead to exponential growth in computational demands with increasing hierarchy depth, making it impractical for highly complex assemblies without simplification or pruning techniques. This constraint is particularly evident in hardware-constrained environments, where direct CSG implementation becomes unfeasible for large-scale scenes. Recent advances, such as machine learning approaches for generating CSG trees (as of 2024), are helping to address editing and scalability challenges by automating complex model construction.

Applications

Computer-Aided Design

Constructive solid geometry (CSG) plays a pivotal role in modeling within (CAD) systems, enabling engineers to construct complex parts through feature-based operations on primitive solids. In software like , CSG serves as a foundational planning tool for determining the sequence and number of features required, such as extrusions, revolves, and combinations, to build models incrementally. Similarly, supports CSG techniques for , allowing users to create features like subtracting cylindrical holes from rectangular blocks to form components with precise cutouts. This approach facilitates parametric adjustments, where dimensions of primitives can be varied to regenerate the entire model while maintaining design intent. In manufacturing applications, CSG's exact representation of volumes supports the generation of precise toolpaths for by enabling accurate calculations between tools and solids. CSG models allow for of material removal processes, ensuring collision-free paths and optimal cutting strategies without approximations that could lead to errors in production. Furthermore, CSG integrates seamlessly with tolerance specifications in CAD, incorporating dimensional constraints on primitives and supporting detection through evaluations to verify assembly fits. A notable in involves modeling lightweight structural components as unions and differences of primitive solids like cylinders and swept surfaces to optimize weight while preserving strength. This method allows rapid iteration for , ensuring manufacturable geometries that meet stringent performance criteria. Today, modern (BIM) tools incorporate CSG for creating architectural solids, such as combining extruded walls and subtracted openings from data to reconstruct as-built environments efficiently.

Computer Graphics and Gaming

In , constructive solid geometry (CSG) has been instrumental in rendering complex scenes for films through ray tracing techniques, particularly in early productions. Pixar's RenderMan, introduced in the , supports CSG to assemble shapes like spheres and cylinders into forms, enabling efficient ray-object intersections for high-fidelity visuals in animations such as those in the movie (2006), where ray tracing extensions handled intricate lighting and shadows. This approach allowed artists to model detailed environments by combining and subtracting primitives without exhaustive manual meshing, prioritizing conceptual forms over polygon counts. CSG found early prominence in game engines for level design, exemplified by id Software's (1996), which employed CSG operations on "brushes"—basic polyhedral primitives—to subtract volumes and carve architectural spaces like corridors and rooms from solid blocks. This subtractive workflow streamlined the creation of interconnected indoor environments, with the engine's (BSP) tree compiling CSG results into efficient renderable geometry for real-time play. Quake's editor tools facilitated rapid iteration, influencing subsequent titles by balancing procedural flexibility with performance constraints of 1990s hardware. Contemporary game engines like Unreal and Unity integrate CSG as a hybrid with polygonal meshes to support procedural generation, converting CSG trees into optimized meshes for runtime efficiency. In Unreal Engine, CSG brushes enable boolean operations during level authoring, which are then baked into static meshes for dynamic worlds, as seen in procedural cave systems or urban layouts generated via the Procedural Content Generation (PCG) framework. Unity's runtime CSG plugins, such as those performing unions and intersections on primitives, hybridize with mesh combiners to produce deformable structures, allowing in-game modifications like destructible terrain without full voxel overhead. These approximations address real-time rendering challenges by limiting CSG depth and precomputing intersections where possible. Beyond static geometry, CSG defines complex collision volumes in physics engines for particle simulations, where boolean combinations of primitives create accurate bounding shapes for environmental interactions. In engines like Unity's integration, CSG-generated serve as compound colliders, enabling particles—such as debris or fluids—to respond realistically to subtracted voids or unioned obstacles during simulations of explosions or effects. This method ensures precise detection without over-simplifying shapes, though it requires mesh export for optimal performance in high-particle counts. Notable implementations highlight CSG's role in and . Godot Engine introduced CSG nodes in version 3.1 (2018), allowing developers to combine primitives via unions, intersections, and subtractions for quick level mockups, which can be exported as meshes for final integration. In voxel-based games, mods like mcthings leverage procedural CSG on grid-aligned blocks to sculpt terrain or structures, treating voxels as discrete primitives for operations in custom worlds. These tools emphasize CSG's accessibility for interactive graphics, fostering experimentation in both professional and community-driven projects.

Conversions and Extensions

Meshes to CSG

Converting polygonal to constructive solid geometry (CSG) representations enables the transformation of explicit surface models into implicit, editable structures composed of and operations. This process is particularly useful for simplifying complex geometries obtained from scanning or modeling, allowing subsequent modifications through adjustments. Techniques for this typically involve representations or optimization to approximate the mesh with a of solids, balancing and compactness. One common approach is voxelization, where the mesh is rasterized into a volumetric grid to identify occupied regions, followed by fitting geometric primitives to clusters of voxels via optimization algorithms. The mesh is first reconstructed into a watertight surface if necessary, then voxelized by casting rays or using space partitioning to classify grid cells as inside or outside the solid. Primitives such as boxes, cylinders, or spheres are then fitted to dense voxel clusters using least-squares optimization or region-growing methods, with the resulting set assembled into a CSG tree through greedy union and subtraction to minimize deviation from the original volume. This method excels for organic shapes but can introduce stair-step artifacts in fine details due to grid resolution limits. Another technique extracts half-spaces from the 's facets to reconstruct the , leveraging planar approximations of the . Supporting planes are identified from mesh triangles by clustering coplanar facets and computing their equations, distinguishing natural half-spaces (directly bounding the ) from separating ones (internal to the decomposition). These half-spaces form primitive solids, which are combined via operations to match the mesh topology, often using algorithms that enumerate fundamental products or optimize the tree for minimality. This approach is efficient for polyhedral meshes with flat faces but struggles with curved surfaces, requiring segmentation into quasi-planar patches. In the 2020s, AI-driven methods have advanced -to-CSG conversion, employing , genetic algorithms, and neural networks to generate compact trees. frames the problem as searching for a CSG expression that satisfies point-membership queries sampled from the mesh, using satisfiability solvers like to explore primitive combinations and operations. Genetic algorithms evolve CSG trees by mutating and operators, evaluating fitness against mesh samples via overlap metrics, with enhancements like deterministic filtering of input points improving convergence on noisy data. Neural approaches, such as those using models or graph neural networks, parse meshes into primitive detections and tree structures, achieving of hierarchical decompositions with reduced tree depth. For instance, hybrid genetic methods on meshes can yield more compact trees while preserving high volumetric accuracy, often outperforming manual approximations in efficiency. These techniques prioritize minimizing tree complexity for editability. More recent advancements as of 2024 include models that generate CSG trees directly from meshes, enhancing for complex mechanical designs. Tools like support mesh import via STL files, allowing users to approximate imported geometries with CSG primitives through manual hulling or Minkowski sums, though automatic conversion remains limited and often requires external preprocessing. Challenges persist in faithfully representing curved surfaces, as CSG primitives (e.g., spheres or cylinders) may necessitate deep trees or approximations that may introduce errors in fidelity. Such conversions find applications in scanned objects, where 3D scans of physical parts are processed into editable CSG models for design iteration or manufacturing. For example, voxelized scans of mechanical components can be decomposed into primitives matching original CAD intent, facilitating parametric modifications in tools like . This enables from legacy artifacts, with reported success in reconstructing assemblies from point clouds.

CSG to Boundary Representations

Converting a Constructive Solid Geometry (CSG) model to a (B-rep) involves evaluating the implicit solid defined by the CSG tree to produce an explicit description of its surface, typically as a polygonal or faceted model. This process, known as evaluation, is essential for applications requiring direct access to surface , such as rendering or , where CSG's hierarchical structure is inefficient. The conversion generates a manifold or non-manifold consisting of vertices, edges, and faces that enclose the solid volume without redundancy. Boundary evaluation begins by traversing the CSG tree to identify all surface fragments derived from the boundaries of solids, such as spheres, cylinders, or polyhedra. For each , an initial polygonal approximation of its surface is created. Interfering portions—where overlap due to operations—are subdivided iteratively to capture curves accurately. These fragments are then clipped against the half-spaces defined by neighboring in the tree, retaining only those portions that lie on the exterior or interior boundaries of the final solid as determined by the operators (, , ). This clipping ensures that only valid surface elements contribute to the output, eliminating internal or extraneous parts. The process handles complex topologies by propagating classifications (inside/outside) through the tree, often using or point inclusion tests at subdivision points. Following evaluation, polygonization assembles the clipped surface fragments into a coherent . This involves classifying edges based on their role in the —such as edges (free edges) or internal edges (shared by adjacent faces)—using direction flags to indicate relative to the solid's interior. snapping aligns from adjacent fragments to curves or shared points, preventing gaps or overlaps by projecting them to the nearest valid on the . Adjoining coplanar polygons are merged by removing common edges, resulting in a non-redundant with consistent . For non-manifold features, like edges shared by more than two faces, additional classification resolves ambiguities to maintain watertightness. Several algorithms facilitate this conversion, balancing accuracy and efficiency. The marching method adapts techniques like to CSG by classifying grid points within the solid's as inside or outside via , then generating triangles only in cells intersected by the boundary. Propagation-based variants traverse active cells efficiently, using Euler operators (e.g., make vertex-surface-face or make edge-vertex) to build oriented triangles incrementally, ensuring topological validity even for non-manifold cases like holes. Alternatively, direct B-rep construction computes the arrangement of primitive surfaces, where half-space clipping and intersection curves form a precise faceted representation without voxelization, suitable for exact polyhedral outputs. These methods handle non-convex results by enforcing proper face winding (e.g., counterclockwise for outward normals) to define oriented surfaces correctly. Common output formats include STL, which tessellates the B-rep into triangles for , preserving volume enclosure despite approximations. Such conversions enable key use cases, including preparation for finite element analysis (FEA), where the explicit B-rep provides boundary elements for meshing and load application, and GPU-accelerated rendering, where tessellated meshes leverage hardware rasterization more effectively than ray-traced CSG evaluation.

Notable Implementations

Software and Libraries

Commercial (CAD) software such as employs constructive solid geometry (CSG) principles within its feature-based modeling , where and operations form the foundation for constructing complex parts. Similarly, supports CSG-like through its 3D solids tools, enabling union, subtraction, and intersection operations on basic shapes for engineering design. Open-source libraries provide robust implementations for CSG tasks. OpenCSG is a C++ library specialized in image-based CSG rendering using , allowing efficient visualization of Boolean combinations without explicit . The Computational Geometry Algorithms Library () offers exact Boolean operations on Nef polyhedra in C++, supporting robust 3D CSG computations for applications requiring precision, such as research. Script-based modeling tools leverage CSG for programmatic design. is an open-source software that uses a to define models via CSG primitives and operations, ideal for parametric and reproducible designs in . , a popular open-source creation suite, supports CSG through its native Boolean modifier, which performs union, intersection, and difference operations on meshes. Add-ons like SD5 extend this with signed distance field-based modeling using libfive. Programming interfaces extend CSG accessibility in development environments. CadQuery, a Python library built on Open CASCADE Technology, enables parametric CSG operations including union, difference, and intersection, facilitating script-driven CAD model creation. FreeCAD's Part module, part of its open-source parametric modeler, supports CSG through the Open CASCADE kernel, allowing Boolean operations on solids in a Python-scriptable workbench. A notable recent open-source is Manifold, a C++ library providing fast and robust CSG operations on manifold meshes, ensuring topological correctness. It serves as a backend for tools like and Engine, supporting applications in and real-time graphics as of 2025. For interoperability in manufacturing, the (STEP) standard facilitates CSG data exchange by defining constructs for geometric and topological representations, including CSG trees and primitives in application protocols like AP203 and AP214.

Specific Tools and Examples

In game engines, the id Tech engine, powering the Quake series, employed constructive solid geometry (CSG) operations during level compilation to build binary space partitioning (BSP) trees from brush-based designs, enabling efficient rendering of complex indoor environments. Similarly, Godot Engine version 3.1 and later introduced CSG nodes that support union, intersection, and subtraction operations on 2D and 3D primitives, facilitating rapid prototyping of levels and assets directly in the editor. For ray tracing applications, POV-Ray utilizes CSG to combine primitive shapes—such as spheres, boxes, and cylinders—through , , , and merge operations, allowing offline rendering of intricate solid scenes without explicit surface meshing. NVIDIA's OptiX ray tracing engine accelerates CSG evaluations by constructing GPU-optimized acceleration structures for binary tree-based solids, achieving interactive rendering speeds for massive models in simulations. In particle transport simulations, the N-Particle (MCNP) code from relies on CSG representations to define complex geometries, including combinatorial assemblies of primitives for and tracking in applications. This approach supports layered CSG models that integrate with methods for accurate transport calculations in reactor designs. Niche applications include , where CSG techniques model organs such as the heart and lungs by combining primitive volumes to approximate anatomical structures from MRI or data, aiding in development for . In robotics, CSG volumes enable precise by evaluating set operations on solid hierarchies, identifying intersections between manipulator paths and environmental obstacles in real-time . A recent example is Unity's ProBuilder tool, integrated since version 2019.1, which provides in-editor CSG brushing via its experimental operations to subtract, , or intersect meshes, streamlining procedural level design for game development.

References

  1. [1]
    Constructive Solid Geometry
    Constructive Solid Geometry. Constructive Solid Geometry, or CSG for short, is yet another way of representing solids. A CSG solid is constructed from a few ...
  2. [2]
    Theory and Implementation
    CSG, short for Constructive Solid Geometry, adopts the building block approach to solid modeling in its pure form.
  3. [3]
    Solid Modeling: A Historical Summary and Contemporary Assessment
    RequichaJ. Rossignac. Computer Science, Mathematics. IEEE ... A simple system is described for computer aided design by constructive solid geometry (CSG).
  4. [4]
    PADL-2: A Technical Summary - Semantic Scholar
    Solid Modeling: A Historical Summary and Contemporary Assessment · RequichaVoelcker. Engineering, Computer Science. IEEE Computer Graphics and Applications.
  5. [5]
    Constructive Solid Geometry Methods
    Constructive Solid-Geometry Methods. Constructive models represent a solid as a combination of primitive solids. (CSG). Sweep Representation.
  6. [6]
    [PDF] Surface Reconstruction from Constructive Solid Geometry for ...
    CSG was first used to represent solid models for computer aided design and manufacturing, and has since found applications in computer graphics and other areas.
  7. [7]
    Representations for Rigid Solids: Theory, Methods, and Systems
    Representations for Rigid Solids: Theory, Methods, and Systems. Author: Aristides G. Requicha. Aristides G. Requicha. Production Automation Project.
  8. [8]
    CONSTRUCTIVE SOLID GEOMETRY - UR Research
    Feb 7, 2013 · The term "constructive solid geometry" denotes a class of schemes for describing solid ... Aristides A.G. Requicha - Author. Primary Item Type:.Missing: history | Show results with:history
  9. [9]
    The PADL-1.0/2 system for defining and displaying solid objects
    PADL (Part and Assembly Description Language) is a language for defining solid objects via constructive solid geometry.
  10. [10]
    [PDF] ( ~ ~ ' Computer Graphics, Volume 21, Number 4, July 1987
    These features include motion blur, depth of field, CSG (constructive solid geometry) [ 1, 33], shadows [32] and a variety of new types of models. The main ...Missing: early | Show results with:early
  11. [11]
    Godot gets CSG support
    Apr 28, 2018 · The aim of CSG in Godot is for it to be used in level prototyping. This technique allows to create simple versions of most common shapes by ...
  12. [12]
    [PDF] Representations for Rigid Solids: Theory, Methods, and Systems
    Representations of rigid solids are symbol structures modeling abstract solids, used in systems with input/output facilities to compute object properties.
  13. [13]
    [PDF] 56 SOLID MODELING - Purdue Computer Science
    Classical Constructive solid Geometry (CsG) represents a solid as a set ... This gives an opportunity for the algorithm to build inconsistent data structures and ...<|control11|><|separator|>
  14. [14]
    [PDF] CMSC 425: Lecture 14 Solid Modeling - UMD Computer Science
    1: Constructive Solid Geometry. This idea naturally leads to a tree representation of the object, where the leaves of the tree are certain primitive object ...
  15. [15]
    [PDF] Constructing 3D CSG Models from 3D Raw Point Clouds - Kai Xu
    These Boolean operators typically include union (S), intersection (T) and difference (−). The union operation is commutative and associative, and hence the ...
  16. [16]
    [PDF] Representation and Realistic Rendering of Natural Phenomena with ...
    An alternative data structure for the representation of CSG expressions is a directed acyclic graph. (DAG), where primitive objects are stored only once, a ...
  17. [17]
    [PDF] Calculation of Tight Bounding Volumes for Cyclic CSG- Graphs*
    In this paper we introduce an algorithm which calculates tight bounding volumes for the nodes of cyclic CSG graphs. This method can also be applied to CSG trees ...
  18. [18]
    [PDF] A Library for Image-Based CSG Rendering - OpenCSG
    We present the design and implementation of a real-time 3D graphics library for image-based Constructive Solid. Geometry (CSG). This major approach of 3D ...
  19. [19]
    Ray casting for modeling solids - ScienceDirect.com
    Ray casting for modeling solids☆. Author links open overlay panel. Scott D ... 10. S.D Roth. Stereo 3-D Perception for a Robot. (19th Edition), Ph.D ...
  20. [20]
    Interval arithmetic recursive subdivision for implicit functions and ...
    Interval arithmetic recursive subdivision for implicit functions and constructive solid geometry. Author: Tom DuffAuthors Info & Claims.Missing: original | Show results with:original
  21. [21]
    Heuristics for ray tracing using space subdivision
    Ray tracing requires testing of many rays to determine intersections with objects. A way of reducing the computation is to organize objects into hierarchic.
  22. [22]
    [PDF] Boolean operations in solid modeling: Boundary evaluation and merging algorithms | Semantic Scholar
    ### Summary of Abstract and Key Sections on Boundary Evaluation Algorithms for CSG Boolean Operations
  23. [23]
    CGAL 6.1 - 3D Boolean Operations on Nef Polyhedra: User Manual
    In solid modeling, two major representation schemes are used: constructive solid geometry (CSG) and boundary representations (B-rep). Both have inherent ...
  24. [24]
    [PDF] BOOLE: A Boundary Evaluation System for Boolean Combinations ...
    In order to compute the B-rep of the final solid, our algorithm computes the Boolean combination of the solids at the leaves of the CSG tree and propagates the ...
  25. [25]
    [PDF] Representations for 3D Geometry: Voxels, Point Clouds, Meshes ...
    May 2, 2018 · How should we represent geometry? Be derivable from sensor data. Support storage efficiency. Support editing: Modification, simplification,.<|control11|><|separator|>
  26. [26]
    [PDF] Near Real-Time CSG Rendering using Tree Normalization ... - DTIC
    Jan 11, 1988 · other primitives in the tree. For a tree with n primitives, this results in a time complexity of n(2(n - 1)) or O(n2). This is confirmed in ...
  27. [27]
    [PDF] Constructive Solid Geometry and Procedural Modeling
    Applications: Plant Modeling. • Algorithmic Botany @ the University of Calgary. – Covers many variants of L-Systems, formal derivations, and exhaustive ...
  28. [28]
    [PDF] A Flexible Pipeline for the Optimization of CSG Trees - WSCG
    Furthermore, automatic. CSG tree reconstruction methods [FP16, WXW18] might result in trees that are not optimal in size and hard to edit manually. Thus, our ...
  29. [29]
    [PDF] Boundary to Constructive Solid Geometry Mappings
    Each method has its advocates; each has its detractors; each has its strong points; each has its drawbacks. The need for both representations is becoming ...
  30. [30]
    [PDF] OpenCSG: A Library for Image-Based CSG Rendering - USENIX
    Rendering CSG shapes in real-time using and taking advantage of graphics hardware is difficult, in particu- lar if the CSG shape is modified interactively. Basi ...
  31. [31]
    [PDF] Constraints in Constructiw Solid Geometry OCTOBER 23-24,1986 93
    On the other hand, Constructive Solid Geometry (CSG) representations offer conveniences for editing and ar- chiving solid models, for defining always valid.
  32. [32]
    [PDF] A Learning Friendly CSG-Like Representation for Interpretable ...
    We optimize the problem by randomly sampling N = 1000 testing points inside the shape bounding box. To get rid of the influence of primitive detection and ...
  33. [33]
    [PDF] Constructive Solid Geometry in GLUGG - DiVA portal
    Jun 26, 2025 · Constructive. Solid Geometry (CSG) is a modeling method that structures different primitives using in- teractive design. To achieve this, ...<|control11|><|separator|>
  34. [34]
    [PDF] Chapter 3 - Constructive Solid Geometry Concepts
    In. SolidWorks, the CSG concept can be used as a planning tool to determine the number of features that are needed to construct the model. It is also a good ...
  35. [35]
    [PDF] CAD: SOLID MODELING - Molly H Goldstein
    Parametric solid- modeling software has the ability to reffect the way in which modern man- ufacturing companies develop their products. Owing to its object- ...
  36. [36]
    [PDF] An implementation of CSG modeling technique on Machining ...
    An application of CSG (Constructive Solid Geometry) modeling technique in Machining Simulation is introduced in this paper. The current CSG model is based ...
  37. [37]
    Constraints in constructive solid geometry - ACM Digital Library
    Systems based on a dual representation, which combines Constructive Solid Geometry (CSG) and Boundary representation (BRep), seem most suitable for modelling ...
  38. [38]
    Continuous Collision and Interference Detection for 3D Geometric ...
    Aug 7, 2025 · This paper describes a new approach to perform continuous collision and interference detection be-tween a pair of arbitrarily complex ...
  39. [39]
    A constructive solid geometry-based generative design method for ...
    This paper proposes a new generative design method with a manufacturing validation so that the designer's decision-making is more efficient.
  40. [40]
    [PDF] The Engineering Design Revolution CAD History - AWS
    Tektronix was the major vendor of graphics terminals in the 1970s and early 1980s. For several years it attempted to develop an end user CAD system business for ...
  41. [41]
    [PDF] Exploring Constructive Solid Geometry for Building Reconstruction ...
    This study explores the use of CSG representation for automatically reconstructing as-built BIM models from segmented point clouds of existing buildings. The ...
  42. [42]
    Introduction to RenderMan
    Constructive solid geometry may be used to assemble the primitives. Visual attributes and shading information is specified with a shading language. Modeling ...
  43. [43]
    [PDF] Ray Tracing for the Movie 'Cars' - Pixar Graphics Technologies
    This paper describes how we extended Pixar's RenderMan renderer with ray tracing abilities. In order to ray trace highly complex.
  44. [44]
    The Quake entity system: shell scripting for games - Justin Meiners
    Jul 20, 2022 · The first are solid entities which are represented by a union of brushes. Their shape can be edited right in the level editor, so they can take ...
  45. [45]
    Quake resources | The Level Design Book
    Sep 21, 2024 · The original 1996 sky system is a two panel texture parallaxed over itself. Newer Quake engines support a more standard cubemap-style skybox ...
  46. [46]
    Brush-based CSG vs static mesh - GameDev.net
    Feb 14, 2017 · I'm interested. Isn't brush-based CSG a relic of the quake era and BSP based levels? I think most modern games use static meshes.Missing: 1996 | Show results with:1996
  47. [47]
    Procedural Content Generation Overview | Unreal Engine 5.6 ...
    The Procedural Content Generation Framework (PCG) is a toolset for creating your own procedural content and tools inside Unreal Engine.
  48. [48]
    Procedural World Generation UE 4.27 - Unreal Engine Forums
    Sep 5, 2023 · I couldn't find a solid answer for it but I've seen people talk about CSG (Constructive Solid Geometry) was used to generate the levels.Introduction to Procedural Generation plugin in UE5.4 - Tutorial ...Procedural generation tutorials? - Unreal Engine ForumsMore results from forums.unrealengine.com
  49. [49]
    [PDF] Constructive Solid Geometry in Game or in Unity - Mesh Maker
    CSG allows you to create new meshes by performing Subtraction, Union and Intersection between objects. You can perform the operations in the Unity editor or ...
  50. [50]
    Constructive Solid Geometry (CSG) in unity - Community Showcases
    Mar 2, 2012 · I've started writing a solution that adds CSG to Unity. It does some simple boolean operations at the moment, you can modify UVs per plane, ...Missing: hybrid | Show results with:hybrid
  51. [51]
    Realtime CSG - Unity Discussions
    Jun 11, 2019 · It breaks when you want a lot of small details, or want to turn the object into a mesh for a physics object. Probuilder is better for organic ' ...
  52. [52]
    snikit/CSG---3d-boolean-operations-Unity - GitHub
    3d Boolean Operations(CSG) on Meshes in the editor or via script at runtime. Specially helpful in punching windows or holes during level design or in game.
  53. [53]
    Voxelers/mcthings: A Python framework for creating 3D ... - GitHub
    A Python programming framework for building a 3D World of Scenes in Minecraft (Procedural CSG). Scenes are compositions of Things (Python objects), created and ...
  54. [54]
    Prototyping levels with CSG - Godot Docs
    CSG, or Constructive Solid Geometry, is used in Godot for level prototyping by combining shapes. It's mainly for prototyping, not for UV mapping or editing 3D ...
  55. [55]
    A Survey of Methods for Converting Unstructured Data to CSG Models
    May 2, 2023 · The goal of this document is to survey existing methods for recovering CSG representations from unstructured data such as 3D point-clouds or polygon meshes.
  56. [56]
    [PDF] Robust creation of implicit surfaces from polygonal meshes
    4.1 Voxelization of a Polygonal Mesh. To convert a polygonal model into a volumetric representa- tion, we cast a grid of parallel rays through the mesh and.
  57. [57]
    Three-dimensional halfspace constructive solid geometry tree ...
    Sep 15, 2004 · This paper presents a new method to compute constructive solid geometry (CSG) tree representations of an object whose faces consist of ...Missing: half- mesh facets
  58. [58]
    [PDF] InverseCSG: Automatic Conversion of 3D Models to CSG Trees
    We will first discuss our method to detect all surface primitives, then describe how we can extract solid primitives from them. 4.1.1 Detecting Surface ...Missing: half- | Show results with:half-
  59. [59]
    [PDF] Optimizing Evolutionary CSG Tree Extraction - CMAP
    Jul 17, 2019 · To keep the time complexity low, they first apply a clustering ... tional complexity of an objective function evaluation to O(|E|). The.<|separator|>
  60. [60]
    OpenSCAD User Manual/STL Import and Export - Wikibooks
    CSG can be imported using include<> or loaded like an SCAD file; PNG can ... This requires enabling import-function feature in development build. If you ...
  61. [61]
    [PDF] Methods for Polygonalization of a Constructive Solid Geometry ...
    Feb 18, 2013 · Requicha. Solid modeling: A historical summary and contemporary assessment. IEEE COMP. GRAPHICS & APPLIC., 2(2):9–24, 1982. [19] A. Requicha and ...
  62. [62]
  63. [63]
    [PDF] Converting CSG models into Meshed B-Rep Models Using Euler ...
    Dec 13, 2006 · It is proposed in this work an algorithm for converting CSG models into triangulated solid models through a propagation based marching cubes ...
  64. [64]
  65. [65]
    Integration of solid modeling and finite element generation
    CSG results in a 'Boolean tree' definition of the object, combining geometry, topology and logic. To use this definition as a starting point for the generation ...
  66. [66]
    A design-through-analysis approach using the Finite Cell Method ...
    Sep 26, 2018 · To run a finite element simulation on a water-tight CSG model, two alternatives are possible: (i) it can either be converted to a B-Rep-model ...
  67. [67]
    [PDF] SOLIDWORKS 2023 and Engineering Graphics - SDC Publications
    In the 1980s, one of the main advancements in solid modeling was the development of the Constructive Solid Geometry (CSG) method. CSG describes the solid model ...
  68. [68]
    Help creating IGES files using CSG Sphere and Cylinder
    May 11, 2020 · I want to create IGES files that, inside the data, describe a shape as the union of solid spheres and solid cylinders by only specifying the center and radii ...
  69. [69]
    OpenCSG - The CSG rendering library
    OpenCSG is a library that does image-based CSG rendering using OpenGL. It is written in C++ and supports most modern graphics hardware using Microsoft Windows ...
  70. [70]
    OpenSCAD - The Programmers Solid 3D CAD Modeller
    OpenSCAD is software for creating solid 3D CAD objects. It is free and available for Linux/UNIX, MS Windows and Mac OS X.Downloads · Documentation · News · About
  71. [71]
    SD5 addon: CSG & SDF modeling using libfive - Blender Artists
    Dec 3, 2024 · SD5 is an addon that adds the libfive library to Blender. Libfive allows the user to create any geometry defined by math.
  72. [72]
    Introduction — CadQuery Documentation - Read the Docs
    CadQuery is an intuitive, easy-to-use Python library for building parametric 3D CAD models. It has several goals: Build models with scripts that are as close as ...
  73. [73]
    Traditional modeling, the CSG way · A FreeCAD manual
    CSG stands for Constructive Solid Geometry and describes the most basic way to work with solid 3D geometry, which is creating complex objects by adding and ...<|control11|><|separator|>
  74. [74]
    ISO 10303-42:2021(E) - STEP Tools
    A csg_select select type identifies the types of entity which may be selected as the root of a CSG tree including a single CSG primitive as a special case.
  75. [75]
    7DFPS – Day 1 – Constructive Solid Geometry - fruitfly
    Aug 10, 2013 · Using Binary-Space-Partition (BSP) and Constructive Solid Geometry (CSG) to create the game world and define solid and empty space of the world.
  76. [76]
    CSG — Godot Engine (3.1) documentation in English
    Every CSG node will first process its children nodes and their operations: union, intersection or subtraction, in tree order, and apply them to itself one after ...
  77. [77]
    2.4.6 Constructive Solid Geometry - Documentation - POV-Ray
    In addition to all of the primitive shapes POV-Ray supports, you can also combine multiple simple shapes into complex shapes using Constructive Solid Geometry ( ...
  78. [78]
    [PDF] CSG Ray Tracing Revisited: Interactive Rendering of Massive ...
    CSG Operations of Ar- bitrary Primitives with Interval Arithmetic and Real-. Time Ray Casting. In Scientific Visualization: Ad- vanced Concepts, pages 78–89.
  79. [79]
    [PDF] PDF - MCNP - Los Alamos National Laboratory
    This boundary representation is incompatible with the CSG requirements. (discussed in the previous section) of a code like MCNP and other Monte Carlo particle ...
  80. [80]
    [PDF] Layered CAD/CSG Geometry for Neutronics Modeling of Advanced ...
    Constructive solid geometry (CSG) has traditionally been sufficient for Monte Carlo (MC) neu- tron transport simulations of standard light-water reactors ...
  81. [81]
    An update on computational anthropomorphic anatomical models
    Jul 11, 2022 · This can be done either by using constructive solid geometry (CSG) or boundary representation (BREP) approaches.
  82. [82]
    A new collision detection method for CSG-represented objects in ...
    This paper proposes an efficient and precise collision detection algorithm for constructive solid geometry (CSG) represented objects in a virtual environment.