Suggestive contours are feature edges that are not exactly but almost contours from nearby viewpoints. They convey a lot of shape information that genuine contours tend to fail to deliver. Freestyle in Blender is capable of computing suggestive contours from input 3D meshes. They are computed when a few input parameters of relevance are enabled. First, the Face Smoothness switch in the Freestyle panel of the Render Layers property window needs to be turned on. In addition, the Suggestive Contour edge type is checked in the Freestyle Line Set panel.
Suggestive contours in Freestyle tend to be short and highly jagged. The quality of the feature edges can be improved by a couple of configuration parameters in the Advanced Options section of the Freestyle panel: the Sphere Radius and the Kr Derivative Epsilon (respectively set to 0.1 and zero by default). Setting the former to a smaller value (say 0.0001) than the default value gives finer suggestive contours. A larger value (e.g., 100) leads to a much longer computing time and hence not recommended. The Kr derivative epsilon can redefine what suggestive contours are, and setting it to zero is the most reasonable choice. It is also interesting to set it equal to a small negative number such as -0.00001, which will result in quite different feature lines.
In the rest of this blog post, we address a question of interest from the perspective of Blender artists: how much is Freestyle in Blender capable of computing quality suggestive contours when compared to other pieces of computer graphics software? To our knowledge, this aspect has been reported very little so far. The present reality check is also important from developers’ view point in order to validate the Freestyle implementation of suggestive contours. As a reference implementation, we chose rtsc (version 1.5) developed by the authors of the SIGGRAPH 2003 paper Suggestive Contours for Conveying Shape. Benchmark cases were selected from their image gallery acknowledging the availability of test models.
Six test models were taken from the rtsc image gallery in the .ply file format. The models were fed as input to both test programs without extra geometry manipulations except for scaling and rotation. Pairs of renders generated by Freestyle and rtsc are compared without image retouching (except for image scaling and trimming). Blue lines are suggestive contours, while silhouettes (occluding contours) are shown in green. Additional parameters for the tested programs are highlighted below:
- rtsc: Fade lines = disabled, Draw in color = enabled, Trim SC = enabled, SC thresh = 0.
- Freestyle: The sphere radius, as well as the minimum 2D length for eliminating micro edges, were tuned on a case-by-case basis to make individual renders similar to the rtsc results. Actual parameter values are reported below. The Kr derivative epsilon was set to zero throughout the tests.
Model: armadillo.ply, left: Freestyle (sphere radius = 0.000001; minimum 2D length = 5), right: rtsc.
Model: brain2.ply, left: Freestyle (sphere radius = 0.001; minimum 2D length = 5), right: rtsc.
Model: bunny2.ply, left: Freestyle (sphere radius = 0.0001; minimum 2D length = 10), right: rtsc.
Model: golfball.ply, left: Freestyle (sphere radius = 0.001; minimum 2D length = 5), right: rtsc.
Model: horse2.ply, left: Freestyle (sphere radius = 0.0001; minimum 2D length = 5), right: rtsc.
Model: lucy.ply, left: Freestyle (sphere radius = 0.00001; minimum 2D length = 5), right: rtsc.
Model: lucy.ply, left: Freestyle (sphere radius = 0.001; minimum 2D length = 10), right: rtsc.
- Overall, the Freestyle implementation of suggestive contours was capable of capturing a majority of the feature edges detected by the reference implementation (rtsc). This clearly confirms the Freestyle implementation of suggestive contours works fine in general.
- Freestyle suggestive contours tended to be short (i.e., broken into pieces) and jagged even after the tuning of the input parameters, whereas the rtsc results gave more consistent lines. This kind of difference deserves code checking and opens additional benchmark analyses on the Freestyle side.
- There was a minimum sphere radius value that led to visual differences (the reported values might not be the minimum). Further decreasing the sphere radius didn’t change the computed suggestive contours.
Ridges and valleys in Freestyle
The reference program also helped find out that ridges and valleys in Freestyle are something different from what these feature edges are supposed to be. For example, the second test case using lucy.ply as input gave the following render by Freestyle when ridges and valleys were drawn (in red) in addition to suggestive contours and silhouettes.
The following renders by rtsc show ridges (left), valleys (center), and so-called “zeros of mean curvature (H = 0)” (right) in addition to suggestive contours.
Freestyle ridges and valleys most look like the zeros of mean curvature. This finding also opens further investigation.