Should I always be checking every neighbor when building voxel meshes?
Posted
by
Raven Dreamer
on Game Development
See other posts from Game Development
or by Raven Dreamer
Published on 2012-10-17T04:03:04Z
Indexed on
2012/10/17
5:26 UTC
Read the original article
Hit count: 324
voxels
I've been playing around with Unity3d, seeing if I can make a voxel-based engine out of it (a la Castle Story, or Minecraft).
I've dynamically built a mesh from a volume of cubes, and now I'm looking into reducing the number of vertices built into each mesh, as right now, I'm "rendering" vertices and triangles for cubes that are fully hidden within the larger voxel volume.
The simple solution is to check each of the 6 directions for each cube, and only add the face to the mesh if the neighboring voxel in that direction is "empty". Parsing a voxel volume is BigO(N^3), and checking the 6 neighbors keeps it BigO(7*N^3)->BigO(N^3).
The one thing this results in is a lot of redundant calls, as the same voxel will be polled up to 7 times, just to build the mesh.
My question, then, is:
Is there a way to parse a cubic volume (and find which faces have neighbors) with fewer redundant calls? And perhaps more importantly, does it matter (as BigO complexity is the same in both cases)?
© Game Development or respective owner