0
103 Jan 23, 2011 at 11:58

if i store my world in 256x256x256 chunks right, and have a paletized 8 bit colour, that means a single plane of voxels 65536x65536 would take 16 gigs to store.

with an 8 bit x position, 8 bit y position, and 8 bit z position, and 8 bit colour.

65536x65536 of these.

so, this is way too big.

I was just about to give up, when I just realized, hey, what if i just store the world in slats of voxels on disk, then just store the 8 bit colour, then i could get it to around a quarter of the size!

So, my idea is for every 256x256x256 chunk, to store a flat plane instead of storing every individual voxel, i store a start position and an x length, y length and z length, and use the x and z lengths to make the plane instead of using points for every single location.

that means cube like shapes store really easily, but angled shapes sorta store in slits.

Could anyone take the compression further than this?

I realize I probably could then runlength encode the colour data too, or maybe even use some kind of lossy compression.

#### 2 Replies

0
101 Jan 23, 2011 at 19:11

Your ideas seems pretty cool so far. If I’m understanding correctly, you would store a 256\^3 block as the volume of a plain intersecting a cube (assuming the block is solid and mostly planar?).

Here’s one thing that comes to mind (I’ve never actually worked with voxels before so take with grain of salt). This wouldn’t save you any disk space (is that your goal?), but would be useful cutting down on collision detections and rendering:

What about having level of detail substitutes for voxels, stored as a binary tree. You would have the level individual voxels, then you could calculate a 2x2x2 level represented as one bigger cube if sufficiently far from the camera. Then you would have the 4x4x4 level represented by one bigger cube if even farther from the camera. And so on. Then you could just load the parts of the world at the detail you would need as you need it.

Have you read GPU Gems 3. There’s a cool chapter in there that I believe uses voxels:
Chapter 1: Generating Complex Procedural Terrains Using the GPU
Ryan Geiss, NVIDIA Corporation

0
103 Jan 24, 2011 at 14:58