homegraphicsliteraturecareertechnologytravel
csg csg
graphics : arise
Arise's support for Constructive Solid Geometry is comprehensive. All primitive objects can participate in CSG operations, including compound and other CSG objects themselves. As with compounds, textures can be inherited. The three primitive CSG operations are supported: union, intersection, and difference.
CSG - with apologies to Haines (and Hofstadter)
CSG - with apologies to Haines (and Hofstadter)
These are more than binary operations - any number of objects can take part. For intersection this means that the resulting object is contained by all participating objects - for differences the result is the first object minus all the subsequent objects.

This allows richer modelling without many additional CSG layers. For example, the CSG image above was originally modelled using Rayshade's binary CSG operations, requiring five difference and seven union operations (by Eric Haines). In Arise it was modelled using only four differences and five unions.

dice
dice
As Octrees are also compound objects, they can be used in CSG operations. Arise's octree speed-up allows these operations at minimal additional cost. In the case below, the octree alone takes about 82 seconds to render - with the CSG operation, the image renders in 791 seconds - not bad when you consider the additional intersection testing required by CSG classification techniques.
difference with a difference; the octree containing the 
sphere-flake (made from 7381 spheres) has had a large green sphere subtracted 
from it.
difference with a difference; the octree containing the sphere-flake (made from 7381 spheres) has had a large green sphere subtracted from it.
Triangles can also be used with CSG although as the rim of the teapot shows, closed meshes work best.
half a teapot - won't hold half the tea, tho'
half a teapot - won't hold half the tea, tho'
 
© 2001 - 2006 sam thompson