Constructive solid geometry

CSG objects can be represented by binary trees, where leaves represent primitives, and nodes represent operations. In this figure, the nodes are labeled \cap for intersection, \cup for union, and -\! for difference.

Constructive solid geometry (CSG) (formerly called computational binary solid geometry) is a technique used in solid modeling. Constructive solid geometry allows a modeler to create a complex surface or object by using Boolean operators to combine objects.[1] Often CSG presents a model or surface that appears visually complex, but is actually little more than cleverly combined or decombined objects.[2]

In 3D computer graphics and CAD CSG is often used in procedural modeling. CSG can also be performed on polygonal meshes, and may or may not be procedural and/or parametric.

Contrast CSG with Surface mesh modeling and box modeling

Workings of CSG

The simplest solid objects used for the representation are called primitives. Typically they are the objects of simple shape: cuboids, cylinders, prisms, pyramids, spheres, cones.[1] The set of allowable primitives is limited by each software package. Some software packages allow CSG on curved objects while other packages do not.

It is said that an object is constructed from primitives by means of allowable operations, which are typically Boolean operations on sets: union, intersection and difference, as well as geometric transformations of those sets.[1]

A primitive can typically be described by a procedure which accepts some number of parameters; for example, a sphere may be described by the coordinates of its center point, along with a radius value. These primitives can be combined into compound objects using operations like these:

Union
Merger of two objects into one
Difference
Subtraction of one object from another
Intersection
Portion common to both objects

Combining these elementary operations, it is possible to build up objects with high complexity starting from simple ones.

Applications of CSG

Constructive solid geometry has a number of practical uses. It is used in cases where simple geometric objects are desired, or where mathematical accuracy is important.[3] The Quake engine and Unreal engine both use this system, as does Hammer (the native Source engine level editor), and Torque Game Engine/Torque Game Engine Advanced. Nearly all engineering CAD packages use CSG. CSG is popular because a modeler can use a set of relatively simple objects to create very complicated geometry.[2] When CSG is procedural or parametric, the user can revise their complex geometry by changing the position of objects or by changing the Boolean operation used to combine those objects.

One of the advantages of CSG is that it can easily assure that objects are "solid" or water-tight if all of the primitive shapes are water-tight.[4] This can be important for some manufacturing or engineering computation applications. By comparison, when creating geometry based upon boundary representations, additional topological data is required, or consistency checks must be performed to assure that the given boundary description specifies a valid solid object.[1]

A convenient property of CSG shapes is that it is easy to classify arbitrary points as being either inside or outside the shape created by CSG. The point is simply classified against all the underlying primitives and the resulting boolean expression is evaluated.[5] This is a desirable quality for some applications such as ray tracing.[5]

Applications with CSG support

Generic modelling languages and software

Ray-tracing and particle transport

CAD

Gaming

Others

References

  1. 1.0 1.1 1.2 1.3 Foley, James D. (1996), "12.7 Constructive Solid Geometry", Computer Graphics: Principles and Practice, Addison-Wesley Professional, pp. 557–558, ISBN 9780201848403.
  2. 2.0 2.1 Bloomenthal, Jules; Bajaj, Chandrajit (1997), "5.2.5 Intersection with CSG Trees", Introduction to Implicit Surfaces, Morgan Kaufmann, pp. 178–180, ISBN 9781558602335.
  3. Foley (1996), p. 559.
  4. van Rossen, Sander; Baranowski, Matthew (2011), "Real-time constructive solid geometry", in Ansari, Marwan, Game Development Tools, CRC Press, pp. 79–96, ISBN 9781439867723.
  5. 5.0 5.1 Glassner, Andrew S. (1989), An Introduction to Ray Tracing, Morgan Kaufmann, p. 80, ISBN 9780122861604.

External links