For my university final year project I developed a voxel engine, researched methods of voxel visualisation and invented my own algorithm for detecting individual volumes in a field of voxels.
Voxel engines have become very familiar in recent years due to the popularity of the video game: Minecraft. In general voxels are the individual cubes that make up the world, these cubes can be simplified to a 3D field of values. Each point in this field must contain some useful data, in Minecraft this is the material of the block placed at a position. For my voxel engine I used density instead of material, a technique similar to this is often used in medical imaging software.
Computing the mesh of a voxel engine is an expensive task and ultimately proved to be one of the most challenging aspects of my project. The visualisation algorithm that I used to generate the 3D mesh of the voxel field used SurfaceNets. To the left we can see a volume that has been visualised using the SurfaceNets approach.
Establishing the definition of a volume was also useful for the last part of my project, during which I investigated methods of detecting separated volumes in a voxel field.