A 3D scanner, a game engine, and a physics simulator all need to store "a shape" — but they almost never agree on how. Before any neural network or renderer touches 3D data, someone has to decide: a cloud of points, a grid of occupied cells, or a surface built from triangles?
Same unit cube, three representations, side by side. The point cloud and the mesh don't care about the slider at all — they store 8 exact corners no matter what. The voxel grid is the odd one out: its cost is a knob you turn, and turning it up doesn't just cost more memory, it's the only way a voxel grid gets more precise.
A point cloud stores points as raw coordinates — cheap, exact, but with no notion of "surface" or "inside." A voxel grid instead quantizes space itself into a resolution array of occupied/empty cells — connectivity is free (neighboring cells are just array neighbors), but any point snaps to its cell's center:
A mesh pays for both: exact vertex coordinates and a triangle list describing how they connect into a surface —
- — number of points or vertices; — number of triangles.
- — voxel grid resolution (cells per axis); — the shape's side length.
- — bytes per stored float coordinate and per stored triangle index (4 each, float32/uint32).
- — the worst-case distance a true position can be from the cell center it got quantized to.
- Point cloud: 8 corners, no connectivity
bytes. Exact positions, but no way to tell "inside" from "outside" the cube, or which points are neighbors on the surface.
- Voxel grid at resolution 8
bytes — already more than the point cloud, for a less precise cube (every corner snaps to the nearest cell center, error ).
- Mesh: 8 vertices + 12 triangles
bytes. Exact and connected — the extra 144 bytes buy back everything the voxel grid gave up.
Watch the crossover: past a certain resolution, the "simple" occupancy grid costs more bytes than the exact mesh it's approximating — and it's still only approximate. That tradeoff is exactly why later chapters reach for neither: a neural field or a pile of Gaussians stores shape as continuous function parameters instead of a discretized grid.
The same cube, two more resolutions:
- Resolution 4 — coarse
bytes, error — cheaper than the point cloud, but a corner could be misplaced by an eighth of the cube's side.
- Resolution 16 — fine
bytes, error — over 40x the point cloud's cost, for a cube whose exact corners take only 96 bytes to store outright.
Drag the resolution slider until the voxel grid's worst-case positional error drops to ≈ 0.0625.
Three representations, three different bets: a point cloud bets that raw coordinates are enough, a voxel grid bets that quantized occupancy is worth its resolution cost, a mesh bets that explicit connectivity is worth storing on top of exact vertices. Every one of them assumes you already know where the camera is and how it turns 3D points into pixels — which is exactly what the next chapter builds before the rest of this Part replaces grids and meshes with something stranger: a scene stored as the weights of a tiny neural network.