by Jon Miranda
Project Description
I want to create a non-photorealistic rendering system to convey shape using suggestive contours and highlights. Suggestive contours are lines that will most likely be contours if viewed at a different angle.
I use a library called trimesh2 which handled calculating the curvature of my obj meshes. To calculate suggestive contours: One algorithm uses the zero crossing of the radial curvature. The second algorithm defines the suggestive contour to be the set of minima of n · v in the direction of w where n is the normal, v is the view vector, and w is the view vector projected onto the tangent plane. I found a similar Final Project from the University of Utah (Dan Maljovec) which compliment/ filled in the gaps for the math found in the papers.
Given a mesh as input, my program will be able render the shape in a minimal way using contours, suggestive contours, highlights, as well as drawing the curvature. My program allows for toggling the options between on/off.
The input meshes I will work with will be obj files. I use open sourced and freely available meshes such as the Stanford Bunny and a person obj.
A user will interact with my program by specifying a mesh file on the command line (up to 2 obj meshes, just to demo that it works on multiple meshes at the same time).
Toon Shading, Suggestive Contours (Darkest Gray), Contours (Black), Highlights (Lightest Gray) | |
No Toon Shading |
Contours (Black), Suggestive Contours (Red), Highlights (Blue) |
Contours |
Highlights |
Suggestive Contours |
Suggestive Contours (Red), Highlights (Blue) |
And a video!
trimesh2: http://gfx.cs.princeton.edu/proj/trimesh2/
Suggestive Contours for Conveying Shape: http://gfx.cs.princeton.edu/pubs/DeCarlo_2003_SCF/DeCarlo2003.pdf
Highlight Lines for Conveying Shape: http://gfx.cs.princeton.edu/gfx/pubs/DeCarlo_2007_HLF/highlights_npar07.pdf
Dan Maljovec: http://www.cs.utah.edu/~maljovec/CS6610/
Suggestive Contours by Alyssa Daw: http://users.csc.calpoly.edu/~zwood/teaching/csc572/final10/acdaw/