env 200613.1 envisioning information lecture 13 – scientific visualization scalar 3d data:...
TRANSCRIPT
![Page 1: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/1.jpg)
ENV 2006 13.1
Envisioning Information
Lecture 13 – Scientific Visualization
Scalar 3D Data: Isosurfacing
![Page 2: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/2.jpg)
ENV 2006 13.2
• This is often called:
Volume Visualization
because data is defined in a volume.
• Major applications include:– Medical imaging– Environmental science– Engineering – computational fluid dynamics
• Main approaches are:– Slicing and Surface extraction (this morning)– Volume rendering (this afternoon)
Scalar 3D Visualization
![Page 3: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/3.jpg)
ENV 2006 13.3
• SLICING– Take a slice through the 3D volume (often orthogonal to one of the
axes), reducing it to a 2D problem
– See IRIS Explorer Slice module
• ISOSURFACING– Extract a surface of constant value through the volume
– See IRIS Explorer IsosurfaceLat module
Note analogous techniques in 2D visualization:1D cross-sections, and contours (=isolines)
Slicing and Surface Extraction
![Page 4: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/4.jpg)
ENV 2006 13.4
Isosurface Examples
![Page 5: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/5.jpg)
ENV 2006 13.5
Interpolation for Scalar 3D Visualization
![Page 6: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/6.jpg)
ENV 2006 13.6
f000
f001
f100
f101
f111
Volume of data
voxel
vertex
Each voxel transformedto unit cube
f011
f110f010
Notation
![Page 7: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/7.jpg)
ENV 2006 13.7
f000
f001
f100
f101
f111f011
f110f010
Value at any interior pointtaken as value at nearestvertex
FastDiscontinuous
Data Enrichment – Nearest Neighbour Interpolation
![Page 8: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/8.jpg)
ENV 2006 13.8
The value at
is found by:(i) 4 1D interpolationsin x
(ii) 2 1D interpolationsin y
(iii) 1 1D interpolationin z
f101
f000
f001
f100
f111f011
f110f010
Data Enricment – Trilinear Interpolation
![Page 9: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/9.jpg)
ENV 2006 13.9
Isosurfacing
![Page 10: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/10.jpg)
ENV 2006 13.10
Lobster – Increasing the Threshold Level
From University of Bonn
![Page 11: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/11.jpg)
ENV 2006 13.11
Accurate Isosurface of Trilinear Interpolant
True isosurface of atrilinear interpolantis a curved surface
cf contouringwhere contours are hyperbola
Because the surface is socomplex we approximateby the triangles shown
![Page 12: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/12.jpg)
ENV 2006 13.12
• For simplicity, we shall work with zero level isosurface, and denote
positive vertices as
There are EIGHT vertices, each can be positive
or negative - so there are 28 = 256 different cases!
Isosurface Construction
![Page 13: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/13.jpg)
ENV 2006 13.13
There is no portion of the isosurface inside the cube!
These two are easy…
![Page 14: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/14.jpg)
ENV 2006 13.14
Intersections with edges found by inverse linear interpolation
(as in contouring)
Isosurface Construction – One Positive Vertex
![Page 15: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/15.jpg)
ENV 2006 13.15
Joining edge intersections across faces forms a triangleas part of the isosurface
Isosurface Construction – One Positive Vertex
![Page 16: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/16.jpg)
ENV 2006 13.16
Isosurface Construction - Positive Vertices at Opposite Corners
![Page 17: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/17.jpg)
ENV 2006 13.17
• One can work through all 256 cases in this way - although it quickly becomes apparent that many cases are similar.
• For example:– 2 cases where all are positive, or all negative, give no isosurface
– 16 cases where one vertex has opposite sign from all the rest
• In fact, there are only 15 topologically distinct configurations
Isosurface Construction
![Page 18: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/18.jpg)
ENV 2006 13.18
Canonical Cases for Isosurfacing
The 256 possible configurationscan be grouped into these 15 canonical cases onthe basis of complementarity (swapping positive and negative)and rotational symmetry
The advantage of doing this isfor ease of implementation - wejust need to code 15 cases not256
![Page 19: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/19.jpg)
ENV 2006 13.19
Isosurface Construction
• In some configurations, just one triangle forms the isosurface• In other configurations ...
– ...there can be several triangles
– …or a polygon with 4, 5 or 6 points which can be triangulated
• A software implementation will have separate code for each configuration
• The classic algorithm is called Marching Cubes – find isosurface in one cube, then next and so on, marching from cube to cube
![Page 20: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/20.jpg)
ENV 2006 13.20
• Advantages– isosurfaces good for extracting boundary layers
– surface defined as triangles in 3D - well-known rendering techniques available for lighting, shading and viewing ... with hardware support
• Disadvantages– shows only a slice of data
– ambiguities?
Isosurfacing by Marching Cubes Algorithm
![Page 21: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/21.jpg)
ENV 2006 13.21
• Marching cubes suffers from exactly the same problems that we saw in contouring
Case 3: Triangles are chosen toslice off the positive vertices - but couldthey have been drawn another way?
Ambiguities
![Page 22: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/22.jpg)
ENV 2006 13.22
• As in contouring, another solution is to divide into simpler shapes - here they are tetrahedra
24 tetrahedra in all
Value at centre =average of vertexvalues
Marching Tetrahedra
As in 2D case, thisremoves ambiguities…
Cost is greater numberof triangles whichincreases renderingtime
![Page 23: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/23.jpg)
ENV 2006 13.23
A Rough Guide to Rendering
![Page 24: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/24.jpg)
ENV 2006 13.24
• Surface views for 2D scalar visualization, and isosurfaces for 3D scalar visualization both generate a triangular mesh surface
• Techniques for rendering these meshes rely on :– an understanding of how light is reflected from surfaces - to
define the colour of points within each triangle– generating a 2D image representation of the 3D scene
• Just a simplified view here...
Rendering of Triangles
![Page 25: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/25.jpg)
ENV 2006 13.25
Reflection Model
• There are two major components to consider in modelling reflection of light from a surface
– diffuse reflection: this gives a dull effect; light is scattered evenly and gives the colour of the surface
– specular reflection: this gives shininess of surface; light is reflected at angle of perfect reflection and has colour of incoming light
– total effect is sum of both (plus ambient light)
![Page 26: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/26.jpg)
ENV 2006 13.26
* intensity of reflected lightdepends on angle of light to surface
lightsourceN
L
I* = Intensity of light sourceN = Surface normalL = Direction of light sourceKd = Diffuse-reflectioncoefficient (gives colour)I = Reflected intensity
surface
I = Kd (cos ) I*
* equal reflection in all directions
I, I*, Kd have R, G, B components
Reflection Model – Diffuse Reflection
![Page 27: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/27.jpg)
ENV 2006 13.27
I* = Intensity of light sourceV = View directionR = Direction of perfect
reflected lightKs = Specular-reflection
coefficientI = Reflected intensity
I = Ks( cos )n I*
n varies with materiallarge n : shinysmall n : dull
Intensity depends on angle between eye and reflected light ray - and type of material
V
lightsourceN
LR
eye
surface
Reflection Model – Specular Reflection
![Page 28: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/28.jpg)
ENV 2006 13.28
Effect of Diffuse ReflectionSlide from Alan Watt, University of Sheffield
![Page 29: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/29.jpg)
ENV 2006 13.29
Effect of Diffuse plus Specular ReflectionSlide from Alan Watt, University of Sheffield
![Page 30: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/30.jpg)
ENV 2006 13.30
• To render a scene composed of a number of surfaces (here triangles)…
• ..project the surfaces on to a viewing plane, determining which are visible to the eye, and assigning the colour as given by the lighting model
Rendering
![Page 31: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/31.jpg)
ENV 2006 13.31
view plane
eye point
Perspective Projection
![Page 32: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/32.jpg)
ENV 2006 13.32
view plane
direction ofprojection
Parallel Projection
![Page 33: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/33.jpg)
ENV 2006 13.33
• Thus, by projecting the triangle vertices, we get position of triangle in image - how can we get the colour of pixels within the triangle?
• There are two techniques of increasing complexity - and increasing realism:
– Flat shading
– Gouraud shading
Triangle Rendering
![Page 34: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/34.jpg)
ENV 2006 13.34
• Each point in a triangle given the same intensity
N1N2
N3
N4
Fast and simple- but intensitydiscontinuities at edges
Calculate intensityfor each trianglefrom reflection modelequations
Flat Shading of Triangular Mesh
![Page 35: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/35.jpg)
ENV 2006 13.35
• Aim is to shade mesh as though it were curved surface
Step 1: Approximate normal at each vertex in some way -
one possibility is to average the normals of surrounding triangles
Gouraud Shading of Triangular Mesh
![Page 36: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/36.jpg)
ENV 2006 13.36
Step 2: Calculate the intensityat each vertex using the lightingmodel
I1
I2
I3
I1
I2
I3
Step 3: Calculate the intensityat any interior point by linearinterpolation in triangle
Gouraud Shading of Triangular Mesh
![Page 37: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/37.jpg)
ENV 2006 13.37
• Flat shading:– fast and simple, 1 lighting calc’n done per triangle, all pixels given
same intensity
– discontinuity in intensity across edges
• Gouraud shading– relatively fast, 1 lighting calc’n per vertex, intensity linearly
interpolated from vertex intensities - giving smooth appearance – now industry standard
Comparison of Techniques
![Page 38: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/38.jpg)
ENV 2006 13.38
Constant or Flat Shading -Each Polygon has Constant Shade
![Page 39: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/39.jpg)
ENV 2006 13.39
Gouraud Shading
![Page 40: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/40.jpg)
ENV 2006 13.40
Flat and Gouraud ShadingSlides from Alan Watt, University of Sheffield
![Page 41: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/41.jpg)
ENV 2006 13.41
• Isosurface algorithms generate triangular meshes which can be rendered as just described
• Key is the estimation of vertex normals for Gouraud shading• One possibility is to construct the entire surface, then assign
vertex normals as average of normals of surrounding triangles
Rendering of Isosurfaces
![Page 42: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/42.jpg)
ENV 2006 13.42
• An alternative - generally preferred - is based on fact that surface normal is equal to the gradient vector of f
At (xi,yj,zk), df/dx = 0.5*(f i+1,j,k - f i-1,j,k) df/dy = 0.5*(f i,j+1,k - f i,j-1,k) df/dz = 0.5*(f i,j,k+1 - f i,j,k-1)
This gives us normals at all grid points,and then trilinear interpolation will givenormals at the triangle vertices
Rendering of Isosurfaces
![Page 43: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/43.jpg)
ENV 2006 13.43
Example – brain visualization
http://www.csit.fsu.edu/~futch/iso/Note illumination of isosurface
![Page 44: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/44.jpg)
ENV 2006 13.44
Example – mechanical engineering
• Isosurfacing can be applied to rendering of objects… here an engine
Computer Science, UC Davis
![Page 45: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/45.jpg)
ENV 2006 13.45
Example – medical application
• Vertebrae…
• .. Also from UC Davis
![Page 46: ENV 200613.1 Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie kwb@comp.leeds.ac.uk](https://reader035.vdocuments.site/reader035/viewer/2022062417/5515f49c550346d46f8b558d/html5/thumbnails/46.jpg)
ENV 2006 13.46
References
• Classic paper:
• W.E. Lorensen and H.E. Cline, Marching Cubes : A High Resolution 3D Surface Reconstruction Algorithm. Computer Graphics, vol21, 4, pp163—169, 1987
• Recent paper:
• A. Lopes and K. Brodlie, Improving the Robustness and Accuracy of the Marching Cubes Algorithm for Isosurfacing, IEEE Transactions on Visualization and Computer Graphics, Volume 9, Number 1, pp 16-29, 2003