Introduction
Expression is a free Object Oriented 3D toolkit. It is written in C++/STL. It has support for interactive 3D graphics using OpenGL and non-interactive sphere tracing.
Expression comes with a set of tools a sphere tracer and an interactive 'World editor'.
The tool kit started as a collection of program I wrote just for the full of it. During the mounths of development I factored more and more code out and created a few libraries. The tool kit is not completed yet, it will probably always remain 'under construction'. However the low level libraries (Base, Geo) are quite fundamental and will not change a lot.
Libraries
Base
The Base library contains very basic classes for multithreading and dynamic object instantiation. In addition it has a lexical scanner for rubust text reading and a refcount class.
Geo
The geometry library contains all the basic 3D classes, color classes and basic intersection code. Important classes: Vertex3, Vertex4, Matrix3, Matrix4, Quaterion, Ray and AABoundingBox.
Gfx
This library contains all the shared graphic classes, which are used for both interactive and non-interactive programs. It contains classes for reading/writing (uses libjpeg) images, modeling Cameras, Lights and Material properties.
Trace
The Trace library contains all the sphere tracing specific code. Here you will find classes like: CSG, SoftCGG, Bezier, HyperTexture, Taper, Twist etc.
UI
This library contains an OpenGL user interface widget set.
World
The library for interactive 3D graphics. It contains 3D engine code, although it is far from finished. It contains Sky, ParticleSystem, ParticleManager and PolygonalModel classes.
Stripe library
This library contains an implementation of the SGI triangle strip algorithm. It is a modified implemention of Stripe, I removed all extentions they made to the original SGI implementation and wrote a tiny C++ interface to it.
The Stripe library is not part of the expression tool kit!