In the last year I have written about a dozen different types of terrain system, including voxel cubes, smooth voxels and isosurfaces.
In then end I’ve come back to heightmap terrain as my option of choice. UE4, Unity and CryEngine 5 all still use heightmap based terrains, despite the fact they have active development teams and voxel terrain technology has been around for many many years.
The reasons? Heightmap terrains:
- perform pretty well
- are easy to store (just need 2d data not 3d)
- easy to LOD
- easy to load in and out in chunks
- easy to join together at the seams
- easy to texture and paint
- easy to generate collision data and physics
- easy to use in networked games
When you start using voxel terrains things get a lot more complicated. You can no longer simply use 2d splatmaps to texture the terrain, because the data is 3d, so you need some way to paint the underside of a cliff as well as the top etc. Its also really difficult to generate texture coordinates, so generally people use triplanar texturing, but then you can’t really paint the nice details in the way that you can with a splatmap.
Have you ever seen a voxel terrain that looks as good as a high-end heightmap terrain? Voxelfarm is probably the best voxel terrain out there, and even so I don’t think its terrains look as good as the AAA engines achieve with heightmaps.
Its also a lot more complicated for things like physics, networking and server-side collision detection, because now you have to worry about people being inside of or underneath the terrain as well as on top of it.
Overall though, the main reason is - I don’t think smooth voxels are actually all that fun. We all loved voxels in Minecraft and thought "Wow, what if we had smooth voxel terrains that could be sculpted in games with high-end graphics? That would be so awesome!"
The reality is though, carving spheres out of a smooth terrain to make tunnels just isn’t fun like it is with voxel cubes. You just end up with a mess of worm shaped holes. Caves in real life are complex, jagged, they have sharp overhangs, stalactites and stalagmites. The same with overhangs and cliffs - they aren’t just smooth drops or rounded columns, they have irregular shapes, sharp edges, bumps and details. Doing stuff like that with voxels is really, really hard -and its much better done with good old fashioned meshes and normal maps.