Hank Childs, University of Oregon Volume Rendering, Part 3.
-
Upload
regina-price -
Category
Documents
-
view
215 -
download
1
Transcript of Hank Childs, University of Oregon Volume Rendering, Part 3.
![Page 1: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/1.jpg)
Hank Childs, University of Oregon
Volume Rendering, Part 3
![Page 2: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/2.jpg)
Announcements
• VisIt lecture: posted!• Grading: will happen soon• Projects:
– ~30 hours– Aim for something worthy of your resume
• Pre-defined project: posted!• Piazza:
![Page 3: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/3.jpg)
Review
![Page 4: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/4.jpg)
Volume rendering
• Important visualization technique for 3D data• Use combination of color and transparency to
see entire 3D data set at one time.
There are multiple ways to do volume rendering. I will describe one way today (raycasting).
That will help explain the technique.I will describe alternate ways on Friday.
![Page 5: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/5.jpg)
Volume rendering overview
Camera
Pixels on the screen
3D data
Ray casting game plan:For every pixel on the screen,
Find ray for that pixelIntersect volume with rayCalculate color from
intersectionAssign color to pixel
![Page 6: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/6.jpg)
Outline
• Find Ray For That Pixel• Intersect Volume With Ray• Calculate Color From Intersection• Assign Color To Pixel
![Page 7: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/7.jpg)
Outline
• Find Ray For That Pixel• Intersect Volume With Ray• Calculate Color From Intersection• Assign Color To Pixel
![Page 8: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/8.jpg)
How do we specify a camera?
The “viewing pyramid” or“view frustum”.
Frustum: In geometry, a frustum (plural: frusta or frustums) is the portion of a solid (normally a cone or pyramid) that lies between two parallel planes cutting it.
![Page 9: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/9.jpg)
From: Zhang, CSUSM, Introduction to Ray Tracing
From Pixels to Rayslook up
ulook up
look uv
look u
2 tan( / 2)
2 tan( / 2)
x
y
fovx u
Wfov
y vH
(2 1 ) (2 1 )( , )
2 2
look i W j Hd i j x y
look
This answers the “find ray for this pixel” question
![Page 10: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/10.jpg)
Outline
• Find Ray For That Pixel• Intersect Volume With Ray• Calculate Color From Intersection• Assign Color To Pixel
![Page 11: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/11.jpg)
Intersect Volume With Ray
Camera
Pixels on the screen
3D data
What is the result of the ray-volume intersection?
}
![Page 12: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/12.jpg)
Ray-Volume Intersection
How would you calculate this intersection?
![Page 13: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/13.jpg)
Ray-Volume Intersection: sampling
Camera
Pixels on the screen
3D data
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Sampling is the most common method for “ray-casting” volume rendering
Do we know how to do this sampling?
![Page 14: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/14.jpg)
How to sample quickly
• Multiple strategies.• For now, similar as before:
– Find first cell intersected• Intersection is at a face
– Find where ray exits that cell• Are there samples within the cell? Then sample them?
– Go to next cell (which shares a face) and repeat– Keep going until you exit the volume, one cell at a
time, and see what samples it covers
Approximately how many samples will we calculate?
![Page 15: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/15.jpg)
Outline
• Find Ray For That Pixel• Intersect Volume With Ray• Calculate Color From Intersection• Assign Color To Pixel
![Page 16: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/16.jpg)
Transfer Function
![Page 17: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/17.jpg)
“Alpha Channel”
• Represents opacity– 1.0 or 255: fully opaque– 0: fully transparent
• Stored alongside RGB– Referred to as RGBA
• Floating point (1.0) vs byte (255):– Precision vs uniformity with RGB & performance
![Page 18: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/18.jpg)
Applying a transfer function
Sample Scalar Value
0 5.8
1 4.7
2 5.8
3 3.5
4 1.1
R G B A
255 0 0 1.0
255 255 0 0.75
255 0 0 1.0
0 255 0 0.5
0 0 255 0
Quiz: calculate the results from transfer function for each sample
![Page 19: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/19.jpg)
Transparency
• Quiz: If you have a red square that is 50% opaque in front of a black background, what color would you see?– Represent your answer in terms of (R, G, B)
Answer: (128, 0, 0)
![Page 20: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/20.jpg)
Formula For Transparency
• Front = (Fr,Fg,Fb,Fa)– a = alpha, transparency factor
• Sometimes percent• Typically 0-255, with 255 = 100%, 0 = 0%
• Back = (Br,Bg,Bb,Ba)• Equation = (Fa*Fr+(1-Fa)*Ba*Br,
Fa*Fg+(1-Fa)*Ba*Bg,
Fa*Fb+(1-Fa)*Ba*Bb, Fa+(1-Fa)*Ba)
Alpha component is important! Any observations?
![Page 21: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/21.jpg)
Outline
• Find Ray For That Pixel• Intersect Volume With Ray• Calculate Color From Intersection• Assign Color To Pixel
![Page 22: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/22.jpg)
Assign Color To Pixel
• Allocate a buffer for storing RGB values– Buffer should have one RGB for every pixel on the
screen.• As you calculate color for a ray, assign that
color to its corresponding buffer entry• When you have all of the colors, put that
image up on the screen, as if you had rendered it using graphics cards.
![Page 23: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/23.jpg)
Ray-Volume Intersection: sampling
Camera
Pixels on the screen
3D data
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
What happens when we change the sampling rate?
Imagine if we had half or twice as many transparent squares…
x x x x x x x x x x x x x x x
Should the picture change if we change the sampling rate?
![Page 24: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/24.jpg)
Opacity Correction
http://http.developer.nvidia.com/GPUGems/gpugems_ch39.html
![Page 25: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/25.jpg)
New Material: Volume Rendering
![Page 26: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/26.jpg)
Different Types of Volume Rendering
• Image Order: iterate over pixels• Object Order: iterate over data
![Page 27: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/27.jpg)
Object Order: Splatting
• Turn every point into a disk (aligned to the camera)– Color and transparency vary
• Render the splats from back to front using graphics hardware.
![Page 28: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/28.jpg)
Object Order: Transparent Planes• Strategy:
– Slice the volume by many planes (200-1000)– Apply transfer function to each vertex on the
plane• Result: plane with variation in color and transparency
– Render the planes from back to front
These can be quickly rendered using “2D textures”
or “3D textures”. Image from VTK book
![Page 29: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/29.jpg)
Volume Rendering: A Framework For Rendering
• Compositing: use combination of color and transparency to enable visualization of entire 3D data
• Alternate ideas:– maximum value along ray– average value along ray– distance to key value along ray
![Page 30: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/30.jpg)
Ray functions: compositing
Image from VTK book
![Page 31: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/31.jpg)
Ray functions: maximum
Image from VTK book
![Page 32: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/32.jpg)
Ray functions: average value
Image from VTK book
![Page 33: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/33.jpg)
Ray functions: distance to value
Image from VTK book
![Page 34: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/34.jpg)
Volume rendering
• More on volume rendering– Shading– Multi-variate volume rendering– Optimizations– Combinations with surfaces
![Page 35: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/35.jpg)
Shading surfaces
This is done by calculating surface normal and then calculating light reflection (or lack
of light reflection from light source)
![Page 36: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/36.jpg)
Shading volumesWant to do all the same lighting
equations, but we need a surface normal … for a volume. What to do?
Answer: use gradient of field for “surface” normal
![Page 37: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/37.jpg)
Volume rendering
• More on volume rendering– Shading– Multi-variate volume rendering– Optimizations– Combinations with surfaces
![Page 38: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/38.jpg)
Multi-variate volume rendering
• Simplest form
temperaturedensity
32F 212F122F 167F77F
![Page 39: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/39.jpg)
Multi-variate transfer functionsFrom cs.utah.edu/~jmk
![Page 40: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/40.jpg)
Multi-variate transfer functionsFrom cs.utah.edu/~jmk
![Page 41: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/41.jpg)
Volume rendering
• More on volume rendering– Shading– Multi-variate volume rendering– Optimizations– Combinations with surfaces
![Page 42: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/42.jpg)
Optimizing Volume Rendering
• Big topic:– How to find samples quickly?– How to use advanced HW (GPUs) efficiently?
• Early ray termination– Just stop going when opacity gets greater than
some threshold.• You do this for pre-defined project
![Page 43: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/43.jpg)
Volume rendering
• More on volume rendering– Shading– Multi-variate volume rendering– Optimizations– Combinations with surfaces
![Page 44: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/44.jpg)
Surface Rendering + Volume Rendering
How was this picture made?
![Page 45: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/45.jpg)
Unstructured Meshes
![Page 46: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/46.jpg)
An example mesh
Why do you think the triangles change size?
![Page 47: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/47.jpg)
Types of Meshes
Curvilinear Adaptive Mesh Refinement
Unstructured
![Page 48: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/48.jpg)
Curvilinear Mesh
• Logically rectilinear– Each cell has an (i, j)– Always left, right,
bottom, top neighbor (unless on boundary)
• Points can be anywhere … as long as the cells don’t overlap
VTK calls this “vtkStructuredGrid”
![Page 49: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/49.jpg)
Curvilinear Mesh
• A curvilinear mesh has 5x5 cells and a cell-centered variable stored.
• Quiz: how many bytes to store this data set if all data is in single precision floating point?
2 ints + 6x6 floats (points) + 5x5 floats (variable)= 2*4+36*4+25*4 = 63*4 = 272 bytes
![Page 50: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/50.jpg)
Example unstructured mesh
• Meshes contain:– Cells– Points
• This mesh contains 3 cells and 13 vertices
• Pseudonyms:• Cell == Element ==
Zone• Point == Vertex ==
Node
![Page 51: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/51.jpg)
Example unstructured mesh
• Cell 0:– { (0, 0, 0), // 10 (1, 0, 0), // 11 (1, 1, 0), // 8 (0, 1, 0), // 7 (0, 0, 1), // 4 (1, 0, 1), // 5 (1, 1, 1), // 2 (0, 1, 1) } // 1If we stored each cell like this,
how many bytes would it take?(assume single precision)
A: 1 int (# cells), 3 ints (# pts per cell), 24+24+15 floats = 268 bytes
Let’s call this the “explicit” scheme
![Page 52: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/52.jpg)
Example unstructured mesh• Pts:
– {(0, 1, 1), (1, 1, 1), (2,1,1), (0,0,1), (1,0,1), (2,0,1), (0,1,0), (1,1,0), (2,1,0), (0,0,0), (1,0,0), (2,0,0), (2.5, 0.5, 0.5)}
• Cells: – 3 cells
• 1st cell: hexahedron– (10,11,8,7,4,5,2,1)
• 2nd cell: hexahedron– (11,12,9,8,5,6,3,2)
• 3rd cell: prism– (13,3,6,12,9)
If we stored each cell like this, how many bytes would it take?
(assume single precision)
A: 1 int (# pts), 1 int (# cells), 3 ints (# cell type), 13*3 floats (pts), 8+8+5 ints = 260 bytes
Let’s call this the “connectivity” scheme
![Page 53: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/53.jpg)
Comparing unstructured mesh storage schemes
• Hexahedral meshes: each internal point incident to 8 cells– Explicit scheme:
• represent that point 8 times: 24 floats for storage
– Connectivity scheme: • represent that point once in point list, 8 times in
connectivity list: 3 floats + 8 ints
• (takeaway: connectivity wins!)
Further benefit to connectivity scheme is in finding exterior faces.
![Page 54: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/54.jpg)
Finding external faces: motivation
• Interval volume, clip:– Take data set (rectilinear, unstructured, or other)
and produce unstructured mesh– When rendering, only want to render the faces on
the outside (the inside aren’t visible)
Question: what proportion of faces are exterior?
Question: how to find exterior faces?
![Page 55: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/55.jpg)
Finding external faces: algorithm
• For each face, count how many cells are incident.– If “1”, then external– If “2”, then interior
Question: why does this work?
![Page 56: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/56.jpg)
Finding exterior faces: algorithm
• Estimate # of faces (ncells * 6 / 2)• Double that number• Create a hash table of that size• For each cell C
– For each face F of C• Create hash index for F based on connectivity indices• Search hash table
– If F already there, remove F from hash– If face not there, add F to hash
• All faces in hash are exterior
![Page 57: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/57.jpg)
Interpolation for arbitrary cells: tetrahedrons
• Assume tetrahedron T, point P in T• Goal: calculate F(P)
P0
P1
P2P3
P
![Page 58: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/58.jpg)
Interpolation for arbitrary cells: tetrahedrons
• Assume tetrahedron T, point P in T• Goal: calculate F(P)
P0
P1
P2P3
P
Set up parametric coordinate system
R
S
T
![Page 59: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/59.jpg)
Interpolation for arbitrary cells: tetrahedrons
• Assume tetrahedron T, point P in T• Goal: calculate F(P)
P0
P1
P2P3
P
Calculate parametric coordinates (a,b,c)
R
S
T P = P0+aR+bS+cT
This is a 3x3 matrix solve. This matrix is invertible since
R,S,T form a basis
![Page 60: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/60.jpg)
Interpolation for arbitrary cells: tetrahedrons
• Assume tetrahedron T, point P in T• Goal: calculate F(P)
P0
P1
P2P3
P
Calculate F(P) as weighted sum of vertices
R
S
T
P = P0+aR+bS+cTF(P) = sum(Wi*F(Pi))
W0 = 1-a-b-cW1 = aW2 = bW3 = c
![Page 61: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/61.jpg)
General idea
• Set up parametric coordinate system• Calculate parametric coordinates for P• Calculate F(P) as Sum(Wi*F(Pi))
– Weights Wi can get pretty tricky.
VTK book has weights & good description in Ch. 8.2.
![Page 62: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/62.jpg)
How to do contouring
• Basically the same:– Iterate over cells– Identify case– Lookup case in table– Create resulting geometry
• Difference:– New tables for each cell type
![Page 63: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/63.jpg)
How to do ray casting
• Basically the same:– Cast rays for every pixel on the screen– Sample along rays– Apply transfer function– Composite front to back– Assign color to image
• Differences:– Sampling gets hard!
• Which cell contains a sample point?– Need smart data structures ….– …. Or a way to transform data to make it easy
![Page 64: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/64.jpg)
How to do particle advection
• Basically the same:– Start with a seed location– Evaluate velocity– Displace particle– Repeat until termination criteria reached
• Differences:– Evaluating velocity different x2:
• Now a harder proposition: which cell contains particle?• Now more math: how to LERP velocity?
![Page 65: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/65.jpg)
Adaptive Mesh Refinement
• Put resolution where you want it…
• … but simpler than unstructured (indexing & interpolation) and cheaper (memory)
• Problems:– Everything great,
except at the boundaries….
![Page 66: Hank Childs, University of Oregon Volume Rendering, Part 3.](https://reader035.fdocuments.in/reader035/viewer/2022062519/5697bfd41a28abf838cad0a7/html5/thumbnails/66.jpg)
And now…
• You know everything I think you should know after having taken a sci-vis class.– Still need unstructured mesh lectures
• I am proud of this class.• Next few lectures should be fun.• Projects will hopefully be fun too.