The little download counter on my super secret world domination dashboard indicates that my thesis code implementations of rendering suggestive contours on 3d meshes has been downloaded over a hundred times. Which tickles my curiosity.
If you’re doing anything fun, serious, silly (or can’t get the damn thing to work at all) with any of my implementations, don’t hesitate to drop me a line. After shedding tears, sweat, blood and probably various other bodily fluids over those implementations during the last year, it would be great to see them ending up in something awesome.
I’ve bundled my thesis implementations and put them up for download on the thesis code page. The thesis text (and a small overview) can be downloaded from the thesis page itself.
I’d like to thank my promotor, suprvisors and readers for all their efforts, and hope my work and code will be useful for other NPR enthousiasts.
I’ve implemented the pick-some-random-faces-algorithm (the algorithm formerly known as the Markosian algorithm, from this paper) for suggestive contours too now. Results are a bit better when it comes to framerate, with the big gains of course in models with more faces. For example, of the 40000 faces of the skull, only testing 400 for contours and 400 for suggestive contours gives the following (you can see my nifty FPS counter there too).
I’ve been implementing an alternative CPU algorithm to draw contours last week. It was pitched by Markosian et. al, and I based my implementation on this Siggraph 2008 class by D. Decarlo.
Instead of testing all faces of a mesh for contours, I only test a configurable amount of random faces. When a contour is found, it is followed as far as possible. The algorithm in its pure form would only deliver good results at large sets of selected faces.
What’s interesting is to keep the seeds (the faces where you found the start of a contour line) of the previous frame. Using this in the next frame render, a high consistency can be achieved, and nearly all contour lines are found in the next frames.
In the second semester of this year, I’ll have to apply the suggestive contours algorithm I’ve implemented in an interesting way, in order to have some experimental results upon which I can base my thesis. A report on what I found out behind the cut. Continue reading »
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.
A new implementation of regular contours got rid of the noise I had in certain models with sharp edges (Stanford Dragon).
Further optimization made it possible to record this demo:
Now, I’m trying to find out why the suggestive contours ‘flicker’ in nearby viewpoints.
After my first meeting about my thesis, I got the assignment to read a few papers (most of them from SIGGRAPH talks) about various topics in Non-Photorealistic Rendering. It was a good opportunity to put down the (otherwise excellent) Accelerated C++ and dive into the wonderful world of research papers.