Texture-based Volume Rendering Texture Mapping
Volume rendering by ray casting is time- Modern graphics hardware
consuming includes facility to draw a
textured polygon
one ray per pixel The texture is an image with
each ray involves tracking through volume red, green, blue and alpha
calculating samples, and then compositing components…
different for each viewpoint … so several overlapping
polygons can be composited
Alternative approach - using texture maps
- can exploit graphics hardware
5/12/2003 R. Crawfis, Ohio State Univ. 72 5/12/2003 R. Crawfis, Ohio State Univ. 73
Texture-based Volume Rendering Texture-based Volume Rendering
Draw from back-to-front a set of For a given viewing direction, volume
rectangles we would need to select slices
perpendicular to this direction
first rectangle drawn as an area of coloured This requires interpolation to
pixels, with associated opacity, as determined get the values on the slices
by transfer function and interpolation - and Only expensive 3D texture
merged with background in a compositing hardware can do this fast
image
operation (supported by hardware) enough… plane
successive rectangles drawn on top
3D texture mapping
5/12/2003 R. Crawfis, Ohio State Univ. 74 5/12/2003 R. Crawfis, Ohio State Univ. 75
Texture-based Volume Rendering Texture Mapping
Simpler solution - 2D texture mapping:
view volume as set of slices parallel to co-
ordinate planes
+
2D image 2D polygon Textured-mapped
polygon
choose the orientation best suited to viewing direction
5/12/2003 R. Crawfis, Ohio State Univ. 76 5/12/2003 R. Crawfis, Ohio State Univ. 77
1
Texture Mapping (2) Tex. Mapping for Volume Rendering
(0,1) (1,1) (0,0.5) (0.5,0.5) Remember ray casting …
(0,0) (0.5,0)
(0,0) (1,0)
y
assign the texture coordinates
Each texel has 2D
coordinates assigned
to each polygon to establish z
to it. the mapping
5/12/2003 R. Crawfis, Ohio State Univ. 78 5/12/2003 R. Crawfis, Ohio State Univ. 79
Texture based volume rendering Texture based volume rendering
z
y
• Render each xz slice in the volume as a texture-mapped polygon
• The texture contains RGBA (color and opacity)
• The polygons are drawn from back to front
5/12/2003 R. Crawfis, Ohio State Univ. 80 5/12/2003 R. Crawfis, Ohio State Univ. 81
Changing Viewing Direction Changing View Direction (2)
What if we change the viewing position?
Until … You are not going to see anything
this way …
y
y That is okay, we just
change the eye position x
x This is because the view direction now is
(or rotate the polygons
Parallel to the slice planes
and re-render),
What do we do?
Until …
5/12/2003 R. Crawfis, Ohio State Univ. 82 5/12/2003 R. Crawfis, Ohio State Univ. 83
2
Switch Slicing Planes Some Considerations… (5)
y When do we need to change the slicing orientation?
What do we do?
x y
• Change the orientation of slicing planes x
• Now the slice polygons are parallel to
YZ plane in the object space
When the major component of view vector changes from y to -x
5/12/2003 R. Crawfis, Ohio State Univ. 84 5/12/2003 R. Crawfis, Ohio State Univ. 85
Some Considerations… (6) Three copies of data needed
Major component of view vector? •We need to reorganize the input textures for diff. View directions.
• Reorganize the textures on the fly is too time consuming. We want
Given the view vector (x,y,z) -> get the maximal component to prepare the texture sets beforehand
If x: then the slicing planes are parallel to yz plane
If y: then the slicing planes are parallel to xz plane
If z: then the slicing planes are parallel to xy plane
z
-> This is called (object-space) axis-aligned method. y
x
xz slices yz slices xy slices
5/12/2003 R. Crawfis, Ohio State Univ. 86 5/12/2003 R. Crawfis, Ohio State Univ. 87
Texture based volume rendering Problem (1)
Algorithm: (using 2D texture mapping hardware)
Non-even sampling rate
Turn off the depth test; Enable blending
For (each slice from back to front) {
- Load the 2D slice of data into texture memory
- Create a polygon corresponding to the slice d d’ d’’
- Assign texture coordinates to four corners of
the polygon
- Render and blend the polygon (use OpenGL
alpha blending) to the frame buffer
}
d’’ > d’ > d Sampling artifact will become visible
5/12/2003 R. Crawfis, Ohio State Univ. 88 5/12/2003 R. Crawfis, Ohio State Univ. 89
3
Problem (2) Solution (1)
Object-space axis-aligned method can create artifacts:
Popping Effect Insert intermediate slides to maintain
y the sampling rate
x
d d’ d’’
There is a sudden change of slicing direction when the view vector
transitions from one major direction to another.
The change in the image intensity can be quite visible
5/12/2003 R. Crawfis, Ohio State Univ. 90 5/12/2003 R. Crawfis, Ohio State Univ. 91
3D Texture Based Volume Rendering
Solution (2)
Use Image-space axis-aligned slicing plane:
the slicing planes are always parallel to the view plane
5/12/2003 R. Crawfis, Ohio State Univ. 92 5/12/2003 R. Crawfis, Ohio State Univ. 93
Slice-Interpolated Volume
3D Texture Mapping Rendering
Arbitrary slicing through the volume and texture
mapping capabilities are needed color
opacity
- Arbitrary slicing polygon: this can be computed
using software in real time
This is basically polygon-volume
clipping
Similar to raycasting with
object (color, opacity) 1.0 simultaneous rays
5/12/2003 R. Crawfis, Ohio State Univ. 94 5/12/2003 R. Crawfis, Ohio State Univ. 95
4
3D Texture Mapping Solid (3D) Texture Mapping
Texture mapping to the arbitrary slices Now the input texture space is 3D
(0,1,1) (1,1,1)
Texture coordinates: (r,s,t)
This requires 3D texture mapping harware (0,1,0)
(1,1,0)
Input texture: volume (pre-classified and shaded) (r2,s2,t2) (r3,s3,t3)
essentially an (R,G,B,α) volume
Depending on the position of the polygon, (0,0,0) (1,0,0)
appropriate textures are resampled, constructed and
mapped to the polygon. (r0,s0,t0) (r1,s1,t1)
5/12/2003 R. Crawfis, Ohio State Univ. 96 5/12/2003 R. Crawfis, Ohio State Univ. 97
Slice Based Rendering Slice Based Rendering
Image plane
1 slice View
direction
Eye Slices Slices
Graphics Hardware 5 slices
Volume Data
•Polygons – Proxy geometry
•Textures – Data & interpolation
•Blending operations – Numerical integration
20 slices 45 slices 85 slices 170 slices
5/12/2003 R. Crawfis, Ohio State Univ. 98 5/12/2003 R. Crawfis, Ohio State Univ. 99
Slice Based Problems? Lighting and Shading
Does not perform correct 3D texture mapping with hardware tricks to achieve
Illumination lighting is becoming feasible.
Accumulation - but can get close
Can not easily add correct illumination and
shadowing
See the Van Gelder paper for their addition for
illumination
⌧Stored in LUT quantized normal vector directions
See Kniss papers (Utah) for use of vertex shaders
and new hardware to solve many of these problems.
C. Lao, OSU
5/12/2003 R. Crawfis, Ohio State Univ. 100 5/12/2003 R. Crawfis, Ohio State Univ. 101
5
Pros and Cons
Advantages: - Fast with volume sizes that the hardware can take
e.g. 2 fps for 256 cube volumes
- No popping effect
Disadvantages: - Need to compute the slicing planes for
every view angle
- only supported on high end hardware
- low quality without per-pixel classification shading
and classification (i.e. post-classification and shading)
Both 2D or 3D hardware texture mapping methods can not compute
shading on the fly. The input textures have to be pre-shaded.
With multi-texturing functions, per-pixel shading and classification are
becoming possible.
5/12/2003 R. Crawfis, Ohio State Univ. 102