Direct Volume Rendering Joe Michael Kniss Scientific Computing and Imaging Institute University of Utah
Outline 1. What is Volume Rendering? 2. Shading models 3. Current hardware methods 4.Visualization 2001 presentation
Volume Rendering Volume Rendering is a visualization/graphics technique which directly renders data using a reasonable approximation to a physical light transport model. What?
Overview Data acquisition Reconstruction Sample & interpolate Transfer function Lighting Blend/integrate Volume Rendering Spiral CT Filtered back-projection Tri-linear Interp. 3D T.F. Light & shadow Back to Front
Overview Volume Rendering Acquisition typeReconstruction CT (X-ray) MRI Simulation Inverse Radon Inverse Fourier None? Others: PET, SPECT, EEG, MEG, Geological, Atmospheric
Interpolation Overview Sampled Function How do we recover a function that is at least C 0 continuous?? Real Function ?
Interpolation Estimate values between samples Reconstruct continuous function Overview box linear sinc Catmul- Rom C0C0 C0C0 C1C1 C 00
Interpolation Estimate values between samples Reconstruct continuous function Overview box linear sinc Catmul- Rom Bad OKGood Best Quality
Interpolation Estimate values between samples Reconstruct continuous function Overview box linear sinc Catmul- Rom Easiest EasyOK Hard Use
Interpolation Overview Sampled Function Laura Bush
Interpolation Overview Box What is the value here?
Interpolation Overview Box What is the value here?
Interpolation Overview Box What is the value here?
Interpolation Overview Box == Nearest Neighbor Reconstructed function
Interpolation Overview Linear What is the value here?
Interpolation Overview Linear What is the value here?
Interpolation Overview Linear What is the value here?
Interpolation Overview Linear == Connect the dots Reconstructed function
Interpolation Overview Catmull-Rom == Rolling Hills Reconstructed function
Interpolation Overview Sinc == Roller Coaster Reconstructed function But what about the ringing??
Interpolation Overview
Interpolation Overview box linear sinc Catmul- Rom Bad OKBetter Hmm… Quality In reality:
Interpolation Bi-linear Tri-linear What is the value here?
Bi-linear = 3 linear interpolations, 2 axes Tri-linear = 7 linear interpolations, 3 axes Interpolation 1 st along x 2 nd along y 1 st along x
Bi-linear = 3 linear interpolations, 2 axes Tri-linear = 7 linear interpolations, 3 axes Interpolation 1 st along x 2 nd along y 1 st along x 2 nd along y
Bi-linear = 3 linear interpolations, 2 axes Tri-linear = 7 linear interpolations, 3 axes Interpolation 1 st along x 2 nd along y 1 st along x 2 nd along y 3 rd along z
Transfer Function Assign optical properties to data –Color –Opacity Transfer function
Transfer Function Assign optical properties to data –Color –Opacity Transfer function x
Transfer Function Assign optical properties to data –Color –Opacity Transfer function T(x)
Rendering Overview Volume Data Eye Image plane Projection
Rendering Overview Volume Data Eye Image plane Ray Casting But how do we get the final color?? r0r0 r1r1
Rendering Overview Solution: Integrate r0r0 r1r1 r0r0 r1r1 T(x)
Rendering Overview Solution: Sum (Riemann) r0r0 r1r1 r0r0 r1r1
Rendering Overview r0r0 r1r1 Emissive What about occlusion??
Rendering Overview r0r0 r1r1 Absorption Use alpha channel for opacity Values should approach ZERO Exponential -1 curve
Rendering Overview r0r0 r1r1
Rendering Overview r0r0 r1r1 Emission & Absorption
Rendering Overview Emission & Absorption r0r0 r1r1
Rendering Overview Emission & Absorption r0r0 r1r1 c out = c i + a i *c in =
Rendering Overview Emission & Absorption r0r0 r1r1 c out = c i + a i *c i-1 Where did the light come from??
Lighting Overview Eye Image plane r0r0 r1r1 Light
Lighting Overview Light Sample r i The volume occludes some of the light
Lighting Overview Sample r i (s) First scattering/ shadows l0l0
Lighting Overview It still doesn’t look like a surface. Standard shading models need a surface normal
Lighting Overview Solution: use the gradient as the normal linear linear derivative
Lighting Overview Solution: use the gradient as the normal linear linear derivative dx = 3-10 = -7 dy = 5-14 = -9
Lighting Overview Solution: use the gradient as the normal normal light eye reflection
Lighting Overview Diffuse n l Color = C*(n l) C = object color
Lighting Overview Diffuse + specular n l e r Color = C*(n l) + LC*(r l) P LC = light color P = specular power
Lighting Overview Diffuse + specular & shadow Color = [C*(n l) + LC*(r l) P ] * S S = shadow amount
Lighting Overview Diffuse + specular & shadow + Ambient Color = [C*(n l) + LC*(r l) P ] * S + C*A A = Ambient contribution
Rendering Overview Volume Data Eye Image plane Ray Casting r0r0 r1r1 Cast a ray through each pixel Intersect with volume Numerically integrate & return color
Rendering Hardware Volume Data Eye Image plane Graphics Hardware Polygons – Proxy geometry Textures – Data & interpolation Blending operations – Numerical integration Slices
Hardware Slices View direction 1 slice 5 slices 20 slices 45 slices 85 slices 170 slices
Hardware Data texture Grad texture Shadow texture T.F. texture Shade texture Texture combiner Color & opacity Data texture Polygon slicing through texture
Hardware Slices Frame buffer Blend each slice with previously rendered Projection
References Nelson Max, Optical Models for Direct Volume Rendering, IEEE Visualization and Computer Graphics (v1 #2 June 1995) Mark Levoy, Display of Surfaces from Volume Data, IEEE Computer Graphics and Applications (v8 #3 May 1988) Kenneth R. Castleman, Digital Image Processing, Prentice Hall (c1996 ISBN: )