Tools
| Splatter, C++ (2002) | status: 100% |
Early in the summer of 2002, while I was still in the "True Dimensions" project. At that time we had just started rebuilding our game engine from scratch to better accommodate new technologies like vertex and pixel shaders. I was inspired to develop this tool by some early Doom3 videos where this technique was evident. It was referred to as RenderBump. Crytek's PolyBump was announced a month or so after I started researching on this subject. During my research I found some references that described this compression method that went all the way back to 1996 in a paper named "Fitting Smooth Surfaces to Dense Polygon Meshes" by Venkat Krishnamurthy and Marc Levoy. It described a method of replacing the polygonal meshes with a set of smooth B-spline patches, while preserving the detail using displacement maps or normal maps generated from the original model. Later I came across a paper from 1998 named "Appearance-Preserving Simplification" by Jonathan Cohen, Marc Olano, and Dinesh Manocha. This paper described a method of replacing the reference model with an automatically generated simplified version and preserving the detail using normal maps, again generated from the original model. I had, at this point, all I needed to develop this tool. I did some command-line tools before developing this visual tool. Splatter was developed in 15 days during a long "True Dimensions" meeting in Aveiro (Portugal) in August of 2002. It works with a proprietary 3d file format developed by myself while at "True Dimensions". It supports diffuse, gloss and height maps for extra bump detail. Also supports super-sampling anti-aliasing and a dilation filter. The AABB/Octree code was developed by Tiago Sousa, I used it to speed up the raytracing algorithm. I called the method "TrueBump", the True coming from "True Dimensions" of course. Here's a couple of screenshots: And, of course, the famous Stanford bunny: The high poly version of the bunny has 69664 triangles while the low polygon version has 643 triangles which makes it roughly about 1% of the original model. The 512x512 normal map for the bunny was generated in exactly 5.3 seconds. |
||||||||