Requires LightWave 6.0 or later.

SPD (Standard Procedural Databases) is a collection of scenes designed to test the performance and correctness of raytracing programs and rendering hardware. It was written by Eric Haines, who wrote an article about it that appeared in the November 1987 IEEE CG&A (the SPD sphereflake, second from the left in the images below, was on the cover). In its original form, SPD is a set of command line programs distributed as C source code. For more information about it, see Eric's SPD page and the original CG&A article.

My plug-in version creates the geometry in Modeler and optionally saves a LightWave scene file to store the light, camera, and background color settings.


You probably won't want to crank up the Complexity and Tesselation settings before experimenting carefully with their effects. Raising the complexity of the sphereflake from 2 to 4, for example, generates over half a million polygons. But in most cases you will want to allow the plug-in to merge points, since SPD generates the equivalent of an unwelded mesh.

The scene file generated by the plug-in doesn't contain the object. You'll need to add that yourself after loading the scene.

The scene file turns on raytracing of shadows and reflection, since most of the objects were designed to test those operations. A few, e.g. Mountain, were also designed to test refraction (the mountain is viewed through transparent spheres), but you'll need to turn on raytraced refraction by hand for those.


Although the plug-in was written to preserve as much as possible of SPD's original functionality, the plug-in differs from the original SPD in several significant ways.

Command Line

The plug-in can be invoked, with arguments, by other Modeler plug-ins using the CMDSEQ command. The command string (the second argument to CMDSEQ) is of the following form:

   objectName complexity tesselation mergeFlag [sceneFile]

The objectName is the name of the SPD object as it appears in the dropdown list on the plug-in's user interface, and the complexity and tesselation are the integers you'd enter there. The mergeFlag should be 1 (true) if you want Merge Points to be called, or 0 (false) if not. And the optional sceneFile is the name of a LightWave scene file where the plug-in will write the object's scene settings. If no scene filename is specified, the scene file isn't created. For example,

   Sphereflake 2 3 1 Scenes\SPD\sphereflake.lws

creates a sphereflake of complexity 2 and tesselation level 3. Merge Points is applied, and the scene data is stored in sphereflake.lws. The scene filename is optional. If it's omitted, no scene is stored.