October 17, 2007 - 23:12

This article was sent and accepted to the Workshop of Undergraduate Work of SIBGRAPI 2007.

Finding Surface Normals From Voxels explains the Tangent Plane 8.0 auto normals applied in Voxel Section Editor III 1.37, except that the Tangent Plane 8.0 had some serious implementation errors, fixed on recent alpha versions of the program.

The Brazilian Symposium on Computer Graphics and Image Processing is the most important brazilian symposium in the image processing area, covering 3D, animation, modeling, medical, mathematical morphology, among other topics on computer graphics. It counts with the participation of many international scientists as well, from many universities around the world, to share the latest news in computer graphics in Brazil.

All articles must be written and presented in english. Undergraduate articles could be written and presented in portuguese or english. The article was writen in english, so visitors of PPM would understand it. At the conference, I've explained it in portuguese, because the public who checked it was brazilian.

One of the challenges in this article is that the original motivation of the article was to make an auto normals for a voxel editor that edits voxels from 7, 8 years old games. From this perspective, my research looks useless for them. However, voxels are also being used on games for mobiles, since most of them lacks good 3D hardware. Now, with this excuse, we made the article an actual research and interesting for few people over there, since the 99% of the scientists over there are not interested on mobile games at all, neither Red Alert 2 and Tiberian Sun.

This article was written for newbies in the area, since voxel isn't something that attracts many people by being considered obsolette, by many. For starters, here's a vocabulary that may help:

-> Voxel: a pixel of a volume.

-> Volume: A 3D grid of colours. (Imagine a bitmap, but in 3D). Unlike the Bitmap, a volume can be viewed from many angles. For this reason, each voxel needs an orientation (where it faces to), which is the normal (the same normal vector from physics). Volumes may have transparent pixels as well, but in Tiberian Sun, Red Alert 2 and most of cell phone games, this isn't used or interesting at all.

-> 3D Flood and Fill: MS Paint has a little feature called Flood Fill. If you flood fill a pixel, every pixel with the original colour of the flood and filled pixel will get the same colour. In this article, we use this trick to find the voxels that are part of the object.

And the first formula is 1 / Distance. The others are just the derivative computated from it.


Volumetric rendering is a way to represent 3D models on devices with a low use of 3D resources. It allows the use of high poly models, quick collision detection and rasterization operations, making them interesting for the games that are being created for the current generation of mobiles and pocket pcs that cannot handle OpenGL operations with a fast frame rate. However, the lack of knowledge of the shape of the object has proven to be a problem to preprocess its lighting. This short paper presents an heuristic that finds an approximation of the direction of normal vector of a voxel without the previous knowledge of the mesh, vertexes, edges and surfaces of the volumetric model where it belongs.


-> Finding Surface Normals From Voxels (Article)

-> Finding Surface Normals From Voxels (Quick Poster)...