Disambiguating the Marching cubes

We saw in the marching squares that there were two (complements of each other) ambiguous cases. In these cases the contour directions could be one of two ways. The 3D version suffers the same problem, and these ambiguities arise in how the surface within the current marching cube is defined. The ambiguity can occur in only 6 of the 15 topological cases. Those are the cases number 3, 6, 7, 10, 12 and 13.

An example of how an ambiguity arises, and the "hole" it creates in the surface is illustrated in the following figure:

The cases where the Marching Cubes can give rise to ambiguities are identical to those observed in 2D. That is, when the cube cell face has the same configuration as the ambiguous marching square. You will note that in the diagram above, the shared cube cell faces has this configuration.

Resolving the ambiguity I

Provided you are consistent with your choice, the resulting surface should contain no ambiguities. So in the above diagram, if the left cube is the first in the marching sequence, then as long as you store the edge intercepts you have chosen for case 6, the surface will be consistent. In the next march step, you do not recalculate the intercepts for the common face, they have been done. You then use the triangles that would be consistent with the edge intercepts given by the previous calculation. The complete surface would be given by

This is the plan of attack you can take for the project. The surface will complete though not necessarily correct. The degree of incorrectness is likely to be small, namely because these ambiguous cell faces do not arise often in medical visualization applications.

Resolving the ambiguity II

The above solution resulted from a consistent, though arbitrary choice (initially) of triangle faces. A better solution would involve a reasonable basis for the choice, and one way would be to make your choice based on the variation of the scalar function on the ambiguous face.

If the diagonal connecting the two outside vertices is crossed by the contour, then these two vertices will be separated, this is consistent with F varying as a trough perpendicular to the diagonal.

If the contour is parallel to the diagonal connecting the two outside vertices, then these are not separated and this is consistent with F varying as a peak joining the two outside vertices. If we sample the function F, somewhere in the middle of the face, we can determine whether is is a trough or a peak locally.

We can't sample F, but we can estimate it. On the vertices of the face we will have four values, B00, B01, B10 and B11 of a scalar function F. We are interested in an iso-surface given by F(x,y,z)=a. If we use parametric coordinates on the face, and employ bilinear interpolation, then the bilinear estimate B(s,t) of the scalar function F is given by,

Recall the interpolation formulae from Lecture 3. You can easily show that the contour curves using this estimate will be hyperbolae. That is the curves B(s,t)=a, will be hyperbolae which cut through the face, depending of the vertex values. Examples of contours given by the bilinear interpolant are;

If we are able to estimate the value of F at the intersection point of the hyperbolae, then the relationship of the value of F at that point, to the contour level "a" would give us whether the vertices are separated or not separated.

If we designate the point on the face where the hyperbolae intersect is [s(a), t(a)] then if ("a" is the contour level),

The point [s(a), t(a)] is given by,

Nielson and Hamann (Proceedings of Visualization '91, pp 83-91) analyse the frequency of occurrence for the ambiguous cases. They are infrequent, occurring some 2 orders of magnitude less often than the nine topological cases that do not have ambiguities. Even when the ambiguous topologies do arise, the results indicate that the triangulations defined by Lorenson originally are the most frequent.