Suggestive Contours
Alyssa Daw
Overview
Why Line Drawings?
Line drawings provide a minimal visual representation of a model. They focus our attention on critical areas and reproduce well over a broad range of scales and media. And it turns out that people interpret line drawn shapes about as well as they do a shaded image.
Line drawings are also used a lot to view and interpret medical data. A lot of pictures in medical texts look more like the line drawings than photographs. This is because we are often better at interpreting medical data in a more simplified form.
What are Contours and Suggestive Contours?
Contours are edges that join a polygon facing the viewer with one facing away. Drawing the
contours of a model is pretty simple, but gives you little more than a silhouette.
Suggestive contours are "almost contours" or edges that would become contours in relatively nearby viewpoints. They give much more meaningful information about a model's shape.
In the bunny on the right, contours are drawn in yellow, and suggestive contours in green. Another example of contours versus suggestive contours is below.
Contours on the left, and suggestive contours on the right. Taken from [2].
Implementation
This section provides a bit more detail about how contours and suggestive contours are calculated, and how the lines are drawn.
Contours and Suggestive Contours
To draw the contour lines, the first step is to calculate
n.v for every point on the mesh. The vector
n is the normal vector at the point, and
v is the view vector (see the figure at right - taken from [2]).
Contours are the places where n.v = 0.
Suggestive contours, mathematically, are the set of points on the surface at which:
-
The radial curvature Kr at the point is 0 (meaning there is a point of inflection along the curve)
-
DwKr > 0 (meaning that the curve switches from being convex - like a mountain - to concave - like a valley)
In the picture below (from [2]), the point p is part of the suggestive contour.
Note that you also need to cull the lines for contours and suggestive contours on the back of the mesh.
Beyond Suggestive Contours
Part of the project, beyond implementing suggestive contours, was trying to improve the visual information that a viewer can get from the line drawing without cluttering the image.
I tried a few ways of doing this. All of them are based upon data obtained by putting an imaginary light source on the scene.
By calculating n.L (where n is the normal vector at a point and L is the vector to the light source), I can calculate which suggestive contours are "shadowed" by the light (the normal is pointing away from the light), and which are "lit".
The three ways that I tried to add more visual information were:
-
Pen and Ink Shading: Often artists do pen and ink shading by drawing cross-hatching or parallel lines to indicate a shadowed region. I tried to imitate this.
-
Varied Line Thickness: I tried varying the line thickness depending upon how "lit" the line was (so the more in shadow, the thicker the line).
-
Varied Color: I tried to vary the shade of the line depending upon how lit the line was
Results
Some pictures of my results are below.
Contours and Suggestive Contours
These are some side-by-sides of the contours and suggestive contours of a couple models. Models from [3].
Pen and Ink Shading
This was an attempt to do shading like a pen-and-ink artist would. The shading is done on the lines that would be in "shadow" and the length of the shading lines are dependent upon how shadowed the line is (based on the dot product of the normal to the point and the light).
Varied Line Thickness
The next thing I tried was varying the thickness of the lines depending upon how shadowed they were. These are my results.
Varied Color
Finally, I varied the shade of the lines that I drew based on how shadowed the lines were.
Conclusions
Between the three additions I made to the suggestive contours algorithm, the pen and ink shading was voted the best by my peers. I think they each bring an interesting idea to the table. My classmates were able to pick out where the "light" was coming from with each of the additions.
Source
Please contact me (acdaw AT calpoly.edu) or Dr. Wood (zwood AT calpoly.edu) for a copy of the source code.
Doug DeCarlo's suggestive contour viewer can be downloaded form his
website along with some base code.