Sample images generated using ART

Art originally stood for Algebraic Ray Tracer, the biggest motivation for its original development being for the rendering of algebraic surfaces and their cross-sections. Cross-sectioning was done using Constructive Solid Geometry (CSG).

In any case, one thing lead to another, and in the quest for greater "realism" in generating visualisations, a number of other features were added to the rendering capabilites, including bicubic patches, blobbies, the ability to read some other geometry formats, an assortment of the standard texturing facilities, and a twenty-five bit rendering mode for when twenty-four did not quite seem enough!

The images on this page represent a sample of the results. Clicking on an image will bring up a higher resolution version, clicking on the name will display the scene file. All the scene files are included in the distribution.

planet.scn

Texturing

Texturing of objects is acheived by either modulating the surface colour or by modulating the surface normal. Changing of the surface colour is done via reference to a tile, or by using a 3D noise function which allows the production of textures such as wood, or marble. The surface normal can be modified in a similar fashion, although for ripple/wave effects the noise function is replaced by wave sources from which eminate sine waves, the intersection of these waves is then used to modify the surface normal.
bumpy.scn
tex.scn
waves.scn

Mathematical Surfaces.

Mathematical surfaces are described using the same format that such formula are described in latex. The interpreted formula abd the ray equation are then combined to create a polynomial in t, the distance along the ray to the surface. The real roots of the polynomial are then found using a Sturm Sequence and an isolated root is polished using modified regula-falsi.

One advantage of this method is that, as the Sturm Sequence allows isolating all the real roots of the polynomial, enough information can be gathered about how the ray intersects with a surface to allow most surfaces to be also intersected with other objects, enabling the production of images of areas of interest and cross sections.

The two surfaces shown here are a Hunt Surface (a sixth order surface) and a Kummer Surface (a fourth order). The final picture shows a Hunt Surface intersected with a cylinder.

kummer1.scn
hunt.scn
hunt2.scn
huntcsg.scn

Constructive Solid Geometry.

As its name implies, Constructive Solid Geometry (CSG), is a construction method for building complex surfaces out of simpler ones. The first image of a bracket (parta) demonstrates the result of adding two primitives, and subtracting some others. In partb, we can see the primitives that have been subracted to produce the bracket. The final image of a crank is an example of a more complex piece of geometry, again produced from primitives.
parta.scn
partb.scn
crank.scn