Having finished the basic implementation of contours and suggestive contours, I’m now implementing features like fading and suggestive highlights. I thought it would also be interesting to test my current implementation (and the effect of suggestive contours themselves) on some interesting test objects. Findings behind the cut.
Haven’t mentioned it in the previous blog posts: this is all rendered in real time, at an average framerate (9 to 15 fps, depending on object complexity) on my netbook’s (rather crappy) Intel GMA Graphics chip. I want to build an interactive application of my thesis work during the next semester, so performance is an important factor for me.
Suggestive contours add very little to objects which already have a lot of regular contours due to edges where faces bend away from the camera. As you can see, the information given by the bones’ regular contours are well enough to convey the shape. The suggestive contours only add a bit of curvature information to the upper part of the bone, but we could do perfectly well without them.
On the other hand, objects with a lot of faces turned to the camera and only bending slightly away (so the normal is still turned in the camera direction) profit a lot from drawing suggestive contours: Details around the teeth, cheeckbones and eye area of this skull would have been unrecognizable without the drawing of suggestive contours.
Also, objects with a lot of curvature (like the following molecule Hemoglobin) profit from suggestive contour drawing, especially for the hills and bumps turned to the camera. Note that this is a fairly complicated object, and some more suggestive contour filtering might be required to get rid of the ‘mini-contours’. The suggestive contours also add to the depth perception, lengthening the existing regular contours so one can estimate which bump is in front of which.
As expected, a perfect sphere does not depict any suggestive contours. This is a good test to find irregularities in my algorithm.