Technical Explanation of New Round Voxel Planet Mapping Scheme in SoA

I was thinking more about what I was trying to say. It seems that these cubic-voxel based games are great when the game takes place on an infinite plane, but fall apart on non-planar worlds (spheres). The reason cubic-voxel games don't work well with spherical worlds (as the article discovers) is the related to the inverse problem of mapping a globe into a map. (Consider all the distortions of projections like Mercator, Winkel-Tripel, etc.)

It seemed to me that these games are trying for a couple of aesthetics:

  1. Open-ended editing (creation and destruction) based on a simple set of placement/destruction rules; and,

  2. A relatively large, atomic, and discrete unit of editing.

Cubes are a great fit for this aesthetic, and cubes happen to work great in the simple, planar case.

However, cubic voxels have unfortunate geometric properties that preclude non-flat worlds.

Instead, imagine we just filled the planet with points (I would propose the Poisson distribution). Then, we could attempt to build non-cubic 'voxels' that contained all of the points. A Voronoi tessellation will handle all of the interior cases for building the non-cubic voxels—we then need to describe how to 'cap' any exterior voxels. My thought was to use the ray extending from the centroid of the set of points (of the planet) to each exterior voxel (the voxel-centroid ray); this ray would then be used to describe a surface normal for every voxel whose Voronoi partition "extended to infinity", rather than being enclosed. There are a few ways to do the capping, off the top of my head:

  1. A cap that is 'flush'; this makes the center of the Voronoi partition lie on the 'capped' surface; or,

  2. A cap that is offset from the center of the Voronoi partition; this will make (what I'd consider ugly) 'mushrooms'.

Instead, I'd propose extruding the edge (polygon) that contains the the points that are 'open' into an end-cap, such that the center of the Voronoi partition is well-interior, rather than lying on one of the surfaces. This would create little multifaceted prisms that stick out. I'm not certain which method would be best—perhaps a combination of them?

The game-mechanic of placing cubic voxels would have to be replaced with a game mechanic for placing ... Voronic voxels? In that case, it seems we'd want to add a constraint where the volume of the voxel is maintained.

/r/gamedev Thread Parent