Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 3 : Direct Volume Rendering Bong-Soo Sohn School of Computer Science and Engineering Chung-Ang University Acknowledgement : Han-Wei Shen Lecture.

Similar presentations


Presentation on theme: "Lecture 3 : Direct Volume Rendering Bong-Soo Sohn School of Computer Science and Engineering Chung-Ang University Acknowledgement : Han-Wei Shen Lecture."— Presentation transcript:

1 Lecture 3 : Direct Volume Rendering Bong-Soo Sohn School of Computer Science and Engineering Chung-Ang University Acknowledgement : Han-Wei Shen Lecture Notes 사용

2 Direct Volume Rendering Direct : no conversion to surface geometry Four methods –Ray-Casting –Splatting –3D Texture-Based Method –CUDA

3 Data Representation 3D volume data are represented by a finite number of cross sectional slices (hence a 3D raster) On each volume element (voxel), stores a data value (if it uses only a single bit, then it is a binary data set. Normally, we see a gray value of 8 to 16 bits on each voxel.) N x 2D arraies = 3D array

4 Data Representation What is a Voxel? – Two definitions A voxel is a cubic cell, which has a single value cover the entire cubic region A voxel is a data point at a corner of the cubic cell The value of a point inside the cell is determined by interpolation

5 Basic Idea Based on the idea of ray tracing Trace from eat each pixel as a ray into object space Compute color value along the ray Assign the value to the pixel

6 Transfer Function Maps voxel data values to optical properties Color/opacity map Emphasize or classify features of interest in the data Piecewise linear functions, Look-up tables, 1D, 2D GPU – simple shader functions, texture lookup tables Voxel Data Density Temperature Optical Properties Color Opacity

7 Viewing Ray Casting Where to position the volume and image plane What is a ‘ray’ How to march a ray

8 Viewing y (0,0,0)x z u v E S E0u0 v0 + S0 B B = [0,0,0] S0 = [0,0,-D] u0 = [1,0,0] v0 = [0,1,0] Now, R: the rotation matrix S = B – D x g U = [1,0,0] x R V = [0,1,0] x R

9 Ray Casting Stepping through the volume: a ray is cast into the volume, sampling the volume at certain intervals The sampling intervals are usually equi-distant, but don’t have to be (e.g. importance sampling) At each sampling location, a sample is interpolated / reconstructed from the grid voxels popular filters are: nearest neighbor (box), trilinear (tent), Gaussian, cubic spline Along the ray - what are we looking for?

10 Basic Idea of Ray-casting Pipeline - Data are defined at the corners of each cell (voxel) - The data value inside the voxel is determined using interpolation (e.g. tri-linear) - Composite colors and opacities along the ray path - Can use other ray-traversal schemes as well c1 c2 c3

11 Ray Traversal Schemes Depth Intensity Max Average Accumulate First

12 Ray Traversal - First Depth Intensity First First: extracts iso-surfaces (again!) done by Tuy&Tuy ’84

13 Ray Traversal - Average Depth Intensity Average Average: produces basically an X-ray picture

14 Ray Traversal - MIP Depth Intensity Max Max: Maximum Intensity Projection used for Magnetic Resonance Angiogram

15 Ray Traversal - Accumulate Depth Intensity Accumulate Accumulate opacity while compositing colors: make transparent layers visible! Levoy ‘88

16 Raycasting color opacity 1.0 volumetric compositing object (color, opacity)

17 Raycasting color opacity Interpolation kernel 1.0 object (color, opacity) volumetric compositing

18 Raycasting color c = c s  s (1 -  ) + c opacity  =  s (1 -  ) +  1.0 object (color, opacity) volumetric compositing Interpolation kernel

19 Raycasting color opacity 1.0 object (color, opacity) volumetric compositing

20 Raycasting color opacity 1.0 object (color, opacity) volumetric compositing

21 Raycasting color opacity 1.0 object (color, opacity) volumetric compositing

22 Raycasting color opacity 1.0 object (color, opacity) volumetric compositing

23 Raycasting color opacity object (color, opacity) volumetric compositing

24 Volume Ray Marching 1.Raycast – once per pixel 2.Sample – uniform intervals along ray 3.Interpolate – trilinear interpolate, apply transfer function 4.Accumulate – integrate optical properties

25 Shading and Classification - Shading: compute a color(lighting) for each data point in the volume - Classification: Compute color and opacity for each data point in the volume -Done by table lookup (transfer function) f(xi) C(xi), a(xi)

26 Shading (Local Illumination) Blinn-Phong Shading Model Requires surface normal vector –What’s the normal vector of a voxel? Gradient –Central differences between neighboring voxels Resulting = Ambient + Diffuse + Specular

27 Shading (Local Illumination) Compute on-the-fly within fragment shader –Requires 6 texture fetches per calculation Precalculate on host and store in voxel data –Requires 4x texture memory –Pack into 3D RGBA texture to send to GPU Voxel Data X Gradient Y Gradient Z Gradient Value 3D Texture R G B A

28 Shading (Local Illumination) Improve perception of depth Amplify surface structure

29 Composition (alpha blending)

30 Texture Based Volume Rendering

31 3D Texture Based Volume Rendering Best known practical volume rendering method for rectlinear grid datasets Realtime Rendering is possible

32 Interpolation of Samples Volume stored as 3D texture Viewport-aligned slices Blended back-to-front Trilinear interpolation by hardware

33 Classification Density values from texture map Classification via lookup table Takes place in texture mapping stage

34 Shading is possible Principle –Precompute Gradient plus density in texture –Shade first  intensity (keep density!) –Classification via 2D pixel texture

35 Texture Mapping 2D image2D polygon + Textured-mapped polygon

36 Texture Mapping for Volume Rendering Consider ray casting … x y z (top view)

37 Texture based volume rendering x z y Render every xz slice in the volume as a texture-mapped polygon The proxy polygon will sample the volume data Per-fragment RGBA (color and opacity) as classification results The polygons are blended from back to front Use pProxy geometry for sampling

38 Texture based volume rendering

39 Changing Viewing Direction What if we change the viewing position? That is okay, we just change the eye position (or rotate the polygons and re-render), Until … x y

40 Solution Use Image-space axis-aligned slicing plane: the slicing planes are always parallel to the view plane

41 3D Texture Based Volume Rendering

42 Shading Use per-fragment shader –Store the pre-computed gradient into a RGBA texture –Light 1 direction as constant color 0 –Light 1 color as primary color –Light 2 direction as constant color 1 –Light 2 color as secondary color

43 CUDA Volume Rendering Utilize massively parallel computing resources Assign each CUDA thread deal with a single ray CUDA –Suitable for computing lots of independent work (e.g. processing pixels or voxels)

44

45


Download ppt "Lecture 3 : Direct Volume Rendering Bong-Soo Sohn School of Computer Science and Engineering Chung-Ang University Acknowledgement : Han-Wei Shen Lecture."

Similar presentations


Ads by Google