Applying Suggestive Contours to …

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.

SC+Games?

Since I’m quite fond of games and the related technology, I thought it would be a nice idea to apply the techniques I learned in a gaming environment. I found these related projects:

  • NPRQuake: Based on GLQuake, these guys extracted some of the rendering functions in the original source and overrided them in seperate dll’s. I fear, however, that the original Quake (1) engine’s rather simple geometry wouldn’t be able demonstrate the interesting features of suggestive contours. Also, this project smells of (fun, nevertheless) dirty hacking into GLQuake code, and the page hasn’t been updated in a while. Also it’s Windows-only, where my current SC implementation is developed on Linux systems.
  • NPRQuake + implementation
  • HijackGL: This project captures low-level graphics calls and somehow manages to redefine drawing styles without hooking into the program features itself. It is demonstrated with the Q3 engine. At that time, this was not under GPL. Interesting, but no source code available, and clearly not the easiest/cleanest way to achieve the effect.

Sadly enough, google queries for “Suggestive Contours Games” bounce back to this blog, so I’m fairly sure no one has ever attempted to implement these techniques into a game-related environment. Which leaves me a bit on the dark on how to work this idea out.

Trying to look at it from the other side, I tried to find some existing games which implemented some kind of NPR. Not a lot of options there, too. Some games (Recently: XIII, Team Fortress 2, Borderlands) use toon shading and pencil-drawn textures to create a comic-book effect, but I’ve yet to find a game which actually depends on using contours and outlines for its visual style.

SC+3d Engine?

Scraping all my courage together, I could perhaps implement the techniques in an existing 3d engine?

  • Quake 3 is now released under GPL. I could do the same thing as the NPRQuake guys did and trying to strip the source from its rendering functions and override them.
  • Irrlicht is an engine which can output to OpenGL. It is fairly documented, and active.

Then again, what would implementing the algorithm in yet another language/framework contribute to my thesis?

SC+Hardware Implementation?

Another option I’ve considered is implementing the suggestive contour algorithms on graphics hardware, using vertex/fragment shaders. This would preferably be done in CG / HLSL, since they seem to be the de facto standard. I already found an interesing implementation on Xiaofeng Mi’s page, which also uses the same Suggestive Contours paper as a basis for his shaders.