Volume Rendering - Introduction Markus Hadwiger Visual Computing Center King Abdullah University of Science and Technology
Volume Visualization 2D visualization: slice images (or multi-planar reformation: MPR) Indirect 3D visualization: isosurfaces (or surface-shaded display: SSD) Direct 3D visualization: direct volume rendering: DVR
Motivation
Motivation
Motivation
Direct Volume Rendering
Ray-Casting Image order approach: Image Plane Data Set Eye For each pixel { calculate color of the pixel }
Decrease Increase Physical Model of Radiative Transfer true emission in-scattering true absorption out-scattering
Volume Rendering Integral How do we determine the radiant energy along the ray? Physical model: emission and absorption, no scattering Initial intensity at s 0 Absorption along the ray segment s 0 - s viewing ray Optical depth τ Absorption к Without absorption all the initial radiant energy would reach the point s.
Volume Rendering Integral How do we determine the radiant energy along the ray? Physical model: emission and absorption, no scattering viewing ray Every One point along the the viewing ray emits additional radiant energy. Active emission at point s ~ Absorption along the distance s - ~ s
Numerical Solution
Numerical Solution can be computed recursively Radiant energy observed at position i Radiant energy emitted at position i Absorption at position i Radiant energy observed at position i 1
Numerical Solution back-to-front compositing Early Ray Termination: Stop the calculation when iterate from i=0 (back) to i=max (front): i increases can be computed recursively front-to-back compositing (used in ray-casting) iterate from i=max (front) to i=0 (back): i decreases
Ray-Casting: Implementation Ray setup Loop over ray Resample scalar value Classification Shading Compositing
Ray-Casting: Implementation Ray setup Loop over ray Resample scalar value Classification Shading Compositing
Rasterization-Based Ray Setup Pixel/fragment == ray Need ray start position and direction vector Rasterize bounding box - = Identical for orthogonal and perspective projection!
Object-Order Empty Space Skipping Modify initial rasterization step rasterize bounding box rasterize tight" bounding geometry
Ray-Casting: Implementation Ray setup Loop over ray Resample scalar value Classification Shading Compositing
Classification: Transfer Functions Assign optical properties: define the look of the data Which parts are transparent? Which parts have what color?
1D Transfer Functions texture = scalar field scalar value S resampling T(S) transferfunction texture = [Emission RGB, Absorption A] S RGBA
1D Transfer Functions
Pre-Classification / Post-Classification Pre-interpolative vs. post-interpolative classification pre-classification post-classification same TF, same resolution, same sampling rate
Pre-Classification / Post-Classification Pre-interpolative vs. post-interpolative classification pre-classification post-classification same TF, same resolution, same sampling rate
Pre-Integrated Classification front scalar back scalar pre-integrate all possible combinations in the TF s f s b store integral into table d constant sampling distance d for pre-integration of RGB, A s f s b s b s f
Pre-Integrated Classification
2D Transfer Functions 1D transfer function Horizontal axis: scalar value Vertical axis: number of voxels 1D Histogram 2D transfer function Horizontal axis: scalar value Vertical axis: gradient magnitude 2D Scatterplot [Kniss et al. 2002]
2D Transfer Functions 1D transfer function Horizontal axis: scalar value Vertical axis: number of voxels 2D transfer function Horizontal axis: scalar value Vertical axis: gradient magnitude [Kniss et al. 2002]
Ray-Casting: Implementation Ray setup Loop over ray Resample scalar value Classification Shading Compositing
Volume Shading Local illumination vs. global illumination Gradient-based or gradient-less Shadows, (multiple) scattering,
Ray-Casting: Implementation Ray setup Loop over ray Resample scalar value Classification Shading Compositing
Compositing
Compositing
Large Volumes: Bricking Subdivide volume into bricks Octrees, page tables, fixed grid, Combine memory management and empty space skipping Memory management: large bricks Empty space skipping: small bricks Cull using min-max of bricks Only store needed bricks in cache texture: swap in/out on demand
Thank You! Thank you: Christof Rezk-Salama, Klaus Engel, Johanna Beyer, Henning Scharsach, Stefan Wolfsberger, Christian Sigg, Katja Bühler, Joe Kniss http://vcc.kaust.edu.sa