Marching Cubes isovalue
I'm trying to implement the Marchin Cubes algorithm, but I have some questions (which might be very trivial, but I can't seem to find an answer).
When Isovalue = 5, and I have a block like this:
0-------10
| |
| |
0-------5
Because 0 < 5, the left corners should both be marked "off". 10 should be marked "on" because 10 > 5. But what about the 5 in the bottomright corner? Should this be on or off?
And when I use lineair interpolation using the example from above (assuming the 5 is marked "on"), is this is where the intersection points should be? (marked with x)
----x----
| |
| |
--------x
And when I draw for this block, should it be basically a line between the both x's?
Thanks in advance!
The Isosurface is calculated along the lines, so you have an intersection of the isosurf and the cube edge which gives you a point.
If the iso goes exactly onto a corner, that is rare and to optimize marching cubes you can normally say any vales closer than 97 percent towards a corner ie 4.8 =5.0
That optimization will prevent you from having multiple small splinter vertices around that point, ie vertices of 0.2 width. It is a useful optimization.
I'll explain in 3d because that's what i did.
Once the cube has the intersection point along a line OR on a corner, it searches through a database of possible intersection patterns of the ISOsurf and the cube.
The corresponding pattern will give you the correct vertex to implement within that cube, cubes can have quads, triangles for example, it will just use the values of the iso to size the triangle.
So, there should be intersection of points and lines and corresponding triangle indices all working, and vertices intersection position based on the value of the isosurface position in the cube edges and corners.
链接地址: http://www.djcxy.com/p/6356.html上一篇: Scikit Image Marching Cubes
下一篇: 行进多维数据集isovalue