The download comes with two example programs.

The Small Example

The small example coming with the download shows how to use a subset of the API programmatically.

The source code can be found here.

The Big Example

The big example coming with the download uses all of the API, and features a graphical user interface.

At the bottom, you can set general parameters and enable/disable individual algorithms, while at the top, you can find settings for the respective algorithms.

To enter Strings or values in a field, click on the field to see the cursor blinking. If a feature is not enabled, the field is drawn in gray and will not react.

The menu can be shown and hidden by pressing Ctrl-m.

At the very bottom to the left, you can load a model from a file. The ending .obj is added automtically. To the right, you can find a zoom slider for scaling the model.

Above that, you can set the fill colour and alpha value for your model, and adjust the line colour for line drawings. The colour for valleys and the respective hidden lines can be set separately, so that ridges can be drawn in black and valleys in white, or front-facing lines in black and hidden lines in gray, for example.

The two lines above that permit you to enable individual algorithms for shading, shadows and line drawings.

For line drawings, you can select between three basic methods: Wireframe Contours or Offset Contours, or Sobel Edge Detection.

These can be combined with Ridges and Valleys, Apparent Ridges or Suggestive Contours. For Ridges and Valleys, you can select between Creases for boxy models, or Ridges and Valleys for smooth models. You can also check whether only ridges or valleys, or both, should be drawn.

The line at the very top is for shading. To the left, you can load a look-up table from a file. There are three predefined look-up tables: gradient.lut, which is equivalent to using no look-up table at all, lightgradient.lut, which simulates an ambient light, and cel.lut, which turns the shader into a cel, or "toon" shader. The ending .lut is added automatically.
To the right, you can find an interactive look-up table for shading. For instructions on how to use it, see here.

At the line below, you can find settings for shadows. Note that for now, only brightness has an effect.

The three lines below contain settings for the various line detection algorithms. In the third line to the left, you can set the line width for all algorithms, and the line width for hidden lines in case of object space algorithms. Next, you find the parameters for Sobel Edge Detection. You can choose between 3x3, 5x5, or no Gaussian filter. For the effect this has, see the documentation for Sobel Edge Detection. Next, you can enable Smoothstep Interpolation and set start and end values for it.

The line below lets you set parameters for Ridges and Valleys. You can specify whether weaker lines should be drawn faded, and you can set the respective thresholds for ridges and valleys individually. Higher thresholds result in fewer lines. You can also check whether hidden lines should be drawn, and, in the case of Creases, whether hidden lines should be stippled.

The last line lets you set the threshold Apparent Ridges and contains settings for Suggestive Contours. Setting the radius to a higher value results in thicker lines, but also slows down you program. Next, you can enable Smoothstep Interpolation and set start and end values for it. The last checkbox enables Median filtering.