Octree Data Structures

After some days of tweaking my SVO renderer’s performance, it became clear that I needed a more cache-coherent and space-efficient way of storing/accessing the octree data. I decided to start a seperate C++ project that efficiently converts a .binvox Voxel Grid into a Sparse Voxel Octree.

Some discussions with my colleague Ares Lagae led to the Z-order Curve (Also known as Morton Code). I think I can employ this to store my voxel leafs in the correct order in a linear 1D array, so all the upper levels are just a 8-bit OR of the lower levels. Then you could use this data to efficiently build a tree.

Implementing this will be a lot of bit trickery again, but I’m confident that this way of parsing a voxel grid will prove very useful in the future.