Robust Meshes from Multiple Range Maps: Slide 10 of 14.


Click slide for next, or goto previous, first, last slides or back to thumbnail layout.

Click slide for next, or goto previous, or back to thumbnail layout.

Once the octree has been created, we want to extract the boundary between the outside cubes and the rest. For the most part, the mesh extraction is quite easy. We just traverse the octree. In a cube labeled to be outside, we do nothing. If a cube has children we recurse to them. In a boundary cube at the deepest level we examine the volume next to the cube, and if that volume is empty, we create two triangles that cover the face. Inside cubes that are at the deepest level are handled in the same manner. However, if an inside cube is higher up in the hierarchy, and part of the volume around it is empty, we cover the part of the face that is shared by outside cubes using triangles that are of the same size as the ones used at the finest level. The result is the model with largest volume that is still consistent with the input data.

Most of the time connecting the triangles into a mesh is straightforward, triangles that share an edge become neighbors. However, if there are two boundary cubes sharing only an edge, there is a choice in the mesh connectivity. But recall that our cubes contain all of the object and some more, so the volumes of two cubes can only connect across faces, not just across edges or corners. Therefore we should separate the cubes as indicated. Notice that for most mesh representations this requires replicating the shared vertices.