Real-Time Shape Editing using CSG
Constructive Solid Geometry (CSG) is a modelling method that is very important not only in the field of technical engineering. To create complex shapes, the user starts with a selection of simple volumetric objects (sphere, cylinder, cube etc.) and combines them using boolean expressions. These expressions operate on the volumetric sets defined by the geometric objects, i.e. the intersection of a sphere and a cube refers to the set of all points that are contained in the sphere's and the cube's volume. Analogously, union, negation etc. can be defined. These boolean expressions are usually grouped in a hierarchy, the so-called CSG tree. CSG provides very intuitive modelling means, since the user does not have to care about surfaces but can model with volumetric objects directly.
However, CSG has the problem of being computationally intense, and a precise (i.e. analytic) representation of the final object is not always possible. On the other hand an analytic representation is rarely needed, and consequently there exist approaches that represent the final model only with a "needed" precision. For visual prototyping the precision needed is exactly the pixel spacing, while for production usually on the order of 1/10 of a millimeter is needed. This observation allows to split the CSG process into two passes: An interactive prototyping pass that renders the object or parts of it only at the precision implied by the screen resolution, and an offline production quality pass that produces a precise description of the final object.
Following this paradigm, the attendee should implement an interactive application for the prototyping pass. Performing the CSG operations right away on the hardware seems a natural choice, since at first the user is only interested in the images. Consequently, moving all data and processing as close to the renderer as possible seems to be promising. This topic is open both as a SEP and a diploma / master's thesis. If assigned as a diploma / master's thesis, we'd also like to investigate possibilities on how to efficiently implement the second, production quality pass. Most likely this pass will only be GPU-assisted, still involving some traditional processing on the CPU.
- Sound knowledge of the C/C++ programming language
- Interest in computer graphics
- Knowledge of either OpenGL or Direct3D (programmable pipeline)
Student: Christoph Petzinger
Supervisors: J. Schneider