240 likes | 735 Views
Volume Rendering. Volume Modeling Volume Rendering. 20 Apr. 2000. Volume Modeling & Rendering. Some data is more naturally modeled as a volume, not a surface You could always convert the volume to a surface, but that’s not always best Volume rendering: render the volume directly.
E N D
Volume Rendering Volume Modeling Volume Rendering 20 Apr. 2000
Volume Modeling & Rendering • Some data is more naturally modeled as a volume, not a surface • You could always convert the volume to a surface, but that’s not always best • Volume rendering: render the volume directly Ray-traced isosurface f(x,y,z)=c Same data, rendered as a volume
Why Bother with Volume Rendering? • Isn’t surface modeling & rendering easier? • Show all your data • more informative • less misleading (the isosurface of noisy data is unpredictable) • Constructive Solid Geometry (CSG) is natural • Simpler and more efficient than converting a very complex data volume (like the inside of someone’s head) to polygons and then rendering them
Surface Rendering Surface rendering is the "usual" type of rendering. Data is converted to geometrical primitives (e.g. triangles), which are then drawn. Everything you see is a 2D surface, embedded in a 3D space. The conversion to geometrical primitives may lose or disguise some data. Good for opaque objects, objects with smooth surface. Volume Rendering Data consists of one or more (supposedly continuous) fields in 3D. A Transfer Function maps the data into a volume of RGBA values. This volume is rendered directly, like a blob of colored jello. Data is seen more directly; less likely to be hidden. Works well for complex surfaces. Contrasts
Applications • medical • Computed Tomography (CT) • Magnetic Resonance Imaging (MRI) • Ultrasound • engineering & science • Computational Fluid Dynamics (CFD) – aerodynamic simulations • meteorology – weather prediction • astrophysics – simulate galaxies • Computer Graphics • Participating media • Texels
Brief History of Volume Visualization • 1970’s modeling & rendering with 3-D grids and octrees • 1984 ray casting volume models • 1986 3-D scan conversion of lines, polygons into 3-D grid • 1987 marching cubes algorithm (convert volume model to surface model) • 1988 direct volume rendering with painter’s algorithm • 1989 splatting • 1990’s volume rendering hardware
Volume Rendering Pipeline • Data volumes come in all types: tissue density (CT), relaxation time of certain molecules (MRI), windspeed, pressure, temperature, value of implicit function. • Data volumes are used as input to a transfer function, which produces a sample volume of colors and opacities as output. • Typical might be a 256x256x64 CT scan • That volume is rendered to produce a final image. transfer function sample volume rendering final image data volumes
Transfer Functions • The transfer function takes (multiple) scalar data values as input, and outputs RGBA • It gets applied to every voxel in the volume “model” • It can be very simple (a color lookup table) or very complicated (implementing CSG, voxel texturing, etc.)
Rendering • Usually one just integrates color through the volume (ray casting) • Recursive ray tracing is also possible • But it gets confusing pretty quickly (shadows, filtered light, reflections, etc) • For lighting we need surfaces! • We can use the magnitude of the local gradient to check for surfaces (for example, bone is denser than fat on CT scans) • And we can use the (negative of the) gradient direction as a lighting normal! • Some, all, or none of the voxels will have surface lighting. • And we need material properties! • Either assume all the data is one material type, • Or use a separate set of segmentation data to identify voxel materials.
Some Details • Regular x-y-z data grids are easiest and fastest to handle, but algorithms exist for handling irregular grids like finite element models, where the voxels (volume elements) are not all parallelepipeds. • Resample it • or just deal with it • Finite element data, ultrasound data • Geometrical primitives can be handled by "rasterizing" them into data grids. This model was rasterized and rendered with VolVis
Accumulating Opacity • By convention, opacity (alpha) ranges from 0.0 to 1.0, 1.0 being completely opaque. • Multiple layers of material are composited according to their opacity. • An ideal, continuous material takes the limit of this process as it goes to an infinite number of infinitely thin layers (exponentials). • The local gradient of opacity can be used to detect surfaces, and as the normal for the lighting equation.
Ray Casting Volumes • Just integrate color and opacity along the ray • Simplest scheme just takes equal steps along ray, sampling opacity and color • Grids make it easiest to find the next cell • It’s simple to include volumes as primitives in a ray tracer • clouds, fog, smoke, fire done this way
Trilinear Interpolation • How do you compute RGBA values which are not at sample points? • Nearest neighbor (point sampling) yields blocky images • Trilinear interpolation is better, but slower • Just like texture mapping • You can even mipmap in 3D Nearest Neighbor Trilinear Interpolation
Splatting • Wonderfully simple • Working back-to-front (or front-to-back), draw a “splat” for each chunk of data • Easy to implement, but not as accurate as ray casting • works reasonably for non-gridded data closeup of a splat
Other Techniques • Shear-Warp (Lacroute and Levoy) • requires a grid • sort of like Bresenham for volumes • very fast with no hardware acceleration, but implementation is tricky • Polygons + 3D texture • Build a 3D texture, including opacity • Draw a stack of polygons from back to front, with that texture • Very efficient on machines with hardware acceleration that supports opacity 3D RGBA Texture Viewpoint Draw polygons back to front
head CSG is Easy • The transfer function can be used to mask a volume or merge volumes • You are still confined to the grid, of course not and or
Another CSG example (VolVis again)
Acceleration Techniques • Limit yourself to what you can do in cache... • …and do multiple blocks if necessary • Octrees • Quit integration early- that last bit is slowest • Error measures • Parallelism
Pictures colliding galaxies