ENV Envisioning Information Lecture 13 – Scientific Visualization Scalar 3D Data: Isosurfacing Ken Brodlie
ENV 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
ENV 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
ENV Isosurface Examples
ENV Interpolation for Scalar 3D Visualization
ENV f 000 f 001 f 100 f 101 f 111 Volume of data voxel vertex Each voxel transformed to unit cube f 011 f 110 f 010 Notation
ENV f 000 f 001 f 100 f 101 f 111 f 011 f 110 f 010 Value at any interior point taken as value at nearest vertex Fast Discontinuous Data Enrichment – Nearest Neighbour Interpolation
ENV The value at is found by: (i) 4 1D interpolations in x (ii) 2 1D interpolations in y (iii) 1 1D interpolation in z f 101 f 000 f 001 f 100 f 111 f 011 f 110 f 010 Data Enricment – Trilinear Interpolation
ENV Isosurfacing
ENV Lobster – Increasing the Threshold Level From University of Bonn
ENV Accurate Isosurface of Trilinear Interpolant True isosurface of a trilinear interpolant is a curved surface cf contouring where contours are hyperbola Because the surface is so complex we approximate by the triangles shown
ENV 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 2 8 = 256 different cases! Isosurface Construction
ENV There is no portion of the isosurface inside the cube! These two are easy…
ENV Intersections with edges found by inverse linear interpolation (as in contouring) Isosurface Construction – One Positive Vertex
ENV Joining edge intersections across faces forms a triangle as part of the isosurface Isosurface Construction – One Positive Vertex
ENV Isosurface Construction - Positive Vertices at Opposite Corners
ENV 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
ENV Canonical Cases for Isosurfacing The 256 possible configurations can be grouped into these 15 canonical cases on the basis of complementarity (swapping positive and negative) and rotational symmetry The advantage of doing this is for ease of implementation - we just need to code 15 cases not 256
ENV 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
ENV 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
ENV Marching cubes suffers from exactly the same problems that we saw in contouring Case 3: Triangles are chosen to slice off the positive vertices - but could they have been drawn another way? Ambiguities
ENV As in contouring, another solution is to divide into simpler shapes - here they are tetrahedra 24 tetrahedra in all Value at centre = average of vertex values Marching Tetrahedra As in 2D case, this removes ambiguities… Cost is greater number of triangles which increases rendering time
ENV A Rough Guide to Rendering
ENV 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
ENV 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)
ENV * intensity of reflected light depends on angle of light to surface light source N L I* = Intensity of light source N = Surface normal L = Direction of light source K d = Diffuse-reflection coefficient (gives colour) I = Reflected intensity surface I = K d (cos ) I* * equal reflection in all directions I, I*, K d have R, G, B components Reflection Model – Diffuse Reflection
ENV I* = Intensity of light source V = View direction R = Direction of perfect reflected light K s = Specular-reflection coefficient I = Reflected intensity I = K s ( cos ) n I* n varies with material large n : shiny small n : dull Intensity depends on angle between eye and reflected light ray - and type of material V light source N L R eye surface Reflection Model – Specular Reflection
ENV Effect of Diffuse Reflection Slide from Alan Watt, University of Sheffield
ENV Effect of Diffuse plus Specular Reflection Slide from Alan Watt, University of Sheffield
ENV 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
ENV view plane eye point Perspective Projection
ENV view plane direction of projection Parallel Projection
ENV 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
ENV Each point in a triangle given the same intensity N1 N2 N3 N4 Fast and simple - but intensity discontinuities at edges Calculate intensity for each triangle from reflection model equations Flat Shading of Triangular Mesh
ENV 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
ENV Step 2: Calculate the intensity at each vertex using the lighting model I1I1 I2I2 I3I3 I1I1 I2I2 I3I3 Step 3: Calculate the intensity at any interior point by linear interpolation in triangle Gouraud Shading of Triangular Mesh
ENV Flat shading: –fast and simple, 1 lighting calcn done per triangle, all pixels given same intensity –discontinuity in intensity across edges Gouraud shading –relatively fast, 1 lighting calcn per vertex, intensity linearly interpolated from vertex intensities - giving smooth appearance – now industry standard Comparison of Techniques
ENV Constant or Flat Shading - Each Polygon has Constant Shade
ENV Gouraud Shading
ENV Flat and Gouraud Shading Slides from Alan Watt, University of Sheffield
ENV 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
ENV An alternative - generally preferred - is based on fact that surface normal is equal to the gradient vector of f At (x i,y j,z k ), 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 give normals at the triangle vertices Rendering of Isosurfaces
ENV Example – brain visualization illumination of isosurface
ENV Example – mechanical engineering Isosurfacing can be applied to rendering of objects… here an engine Computer Science, UC Davis
ENV Example – medical application Vertebrae….. Also from UC Davis
ENV References Classic paper: W.E. Lorensen and H.E. Cline, Marching Cubes : A High Resolution 3D Surface Reconstruction Algorithm. Computer Graphics, vol21, 4, pp163169, 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