Advanced Topics in Computer Graphics

Suggestive Contours


The purpose of this exercise is to implement the non-photorealistic rendering (NPR) technique called Suggestive Contours (see references below). With this technique, the shape of complex 3D objects is conveyed to the observer using regular contours (silhouettes) and the so-called suggestive contours, which are special view-dependent lines on the object related to the curvature of the surface.

Your application should read an input 3D model (triangular mesh), and you should provide the functionality to render it in the above NPR style.
You should write your own code for suggestive contours.



You can use the following code as a quick start for rendering 3D meshes. It’s a Visual C++ 6.0 project.

The project uses the GLUI library for GUI and GLUT for handling windows. If you don’t have these libraries, download from here:

The application allows to load a triangle mesh from a VRML 2.0 file or PLY2 file and to render it in different modes (solid, wireframe,
solid with edges, draw vertices as small balls, etc...). To choose specific rendering options, work with the Rendering Modes menu.

Navigation: to rotate the mesh, hold down the left mouse button and move the cursor. To zoom in/out, also hold down the Ctrl key.
To move the mesh, hold down the Shift key.
Colors: you can change the color of the mesh by choosing a colored light, or by changing the material color. To do the latter, click in the mesh viewport area and then press + or -. This will scroll the palette down/up.

The main class is called TexturedMesh (the name might be misleading - you don't need to load textures).

You can of course use another renderer and/or write your own application if you like. The provided application is by no means guaranteed
to be bug-free or particularly efficient.

Input models:

You can find some input here.