Usual 3D file formats describe a virtual world in terms of geometric primitives.
These may be cubes and spheres in a CSG tree, NURBS patches, a set of implicit functions, a triangle mesh, or just a cloud of points.
This makes it possible to create very complex objects from only a few high-level input parameters, such as for instance a style library.
As a "shape programming language," it is a true generalization of "flat" 3D file formats like OBJ, DXF, or VRML that contain just lists of geometric primitives.
GML permits a concise representation of parameterized 3D objects which can be evaluated on-the-fly at runtime, rendered with adaptive level-of-detail, and allows for the interactive manipulation of all parameters.
Variations were obtained by procedurally combining in ever changing ways a set of simple basic parameterized geometric operations.
Therefore, it is practically impossible to find two tracery windows in different buildings that follow an identical geometric construction.
Degrees of freedom (blue arrows) are the position and orientation of the projection screen cubicle, the opening angle of the projectors, and the position/orientation of the top mirror.