Overview
• Similar to CSG Ray Tracing Implicit Surfaces – Combine primitive objects to form complex object • Primitives are “density fields ” • Combine by summing densities • The surface is all points at which the density equals a user-defined threshold
CSE 681 CSE 681
Implicit Surface For example: single metaball f(x,y,z) = x2+y2+z2-r2 • A surface not explicitly represented f(x,y,z) < 0 • The surface consists of all points which satisfy a function F(x,y,z) = 0 f(x,y ,z) = 0 • Usually, the implicit function is defined so that F(x,y,z) < 0 => inside the object F(x,y,z) > 0 => outside the surface Sometimes F(x,y,z) is based on a distance-to-a-central-element • The surface points have to be searched for! f(x,y,z) > 0
CSE 681 CSE 681
1 Multiple Implicits Organic shapes • Define each primitive as positive density field • Sum densities • Surface is defined at threshold • Usually have finite radius of influence
CSE 681 CSE 681
Density Function Threshold • Define threshold that defines density of surface
•RT is the radius of the isosurface (blob) in isolation
1.0 1.0 R R d T density density RT
0.0 0.0 RT Distance from center R Distance from center R {}p d( p) −T = 0
CSE 681 CSE 681
2 Blended Blobs Weighted Density Functions • Define surface as weighted sum of densities • Define surface as sum of densities f(p) = Σ wi di (p) - T = 0
To keep the same radius, but increase blending, change weight, w , and the {p d ( p) −T = 0} i ∑ i threshold, T, simultaneously. {p ∑ widi ( p) −T = 0} Weights can be negative, too!
CSE 681 CSE 681
Ray Intersection Search for Intersection
Need to search along the ray for the first time f(P(t)) = 0
Shortcuts and Search strategies?
CSE 681 CSE 681
3 Search for Intersection Density Functions
Identify spans of interest: bounds on intersection Define a density function that is: Easy to evaluate Blends smoothly Intuuveouseitive to use
Density functions proposed in the literature Exponential Piecewise cubic Cubic in distance squared
CSE 681 CSE 681
Density Functions Distance-based Density Functions
di(p) = D(|P-Ci|/R) = D(r)
r is normalized distance
2 3 D(r) D1 ( r ) = (1-r ) 0 <= r < 1 0.5 6 4 2 D2 ( r ) = 1 - (4/9)r + (17/9)r - (22/9)r 0 <= r < 1
2 D3 ( r ) = exp(-ar )
2 0.5 r D4 ( r ) = 1-3r 0 <= r < 1/3 (3/2)(1-r) 2 1/3 <= r < 1
CSE 681 CSE 681
4 Distance-based Density Distance-based Density Functions Functions
6 4 2 D ( r ) = exp(-ar2) D2 ( r ) = 1 - (4/9)r + (17/9)r - (22/9)r 0 <= r < 1 3
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0.2 0.4 0.6 0.8 1 0.2 0.4 0.6 0.8 1
CSE 681 CSE 681
Distance-based Density Distance-based Density Functions Functions
2 2 3 D4 ( r ) = 1-3r 0 <= r < 1/3 D1 ( r ) = (1-r ) 0 <= r < 1 (3/2)(1-r) 2 1/3 <= r < 1
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0.2 0.4 0.6 0.8 1 0.2 0.4 0.6 0.8 1
CSE 681 CSE 681
5 Distance-based Primitives Distance-based Primitives
Point Point Distance from point Polyline
Line Distance from Line line or endpoints Polyhedron - partition by Polygon perpendiculars Distance from Anything you can Polygonal mesh Polyline one of lines or efficiently compute the points - partition distance from by perpendiculars
CSE 681 CSE 681
Distance-based Primitives Distance-based Primitives
Partition space by planes Polyhedra Polygon perpendicular to plane through an edge Convex? Polygonal mesh Same, for each face - two planes per edge Concave?
CSE 681 CSE 681
6 Display Considerations Computing the Normal
Form analytic expression of implicit function Find point of intersection along ray: F(P(t)) = 0 And take partial derivatives Compute normal N = (δF/δx, δF/δy, δF/δz)
Take discrete approximation by sampling function Compute gradient N = ( F(x+dx,y,z)-F(x,y,z), F(x,y +dy,z)-F(x,y,z), F(x,y,z +dz)-F(x,y,z) )
CSE 681 CSE 681
Bulge problem CSG-approach to control blending
One long primitive
Use nodes to combine priiiimitives b y ei ihther summing or taking max of functions Two side-by-side primitives
CSE 681 CSE 681
7 Display alternative Complexity Marching cubes algorithm - construct surface fragments from isosurface intersections with grid cells •Bounding volumes
•Spatial subdivision - cellular bucket sort
•Hierarchical spatial subdivision – quadtree
•Binary spatial partitioning
CSE 681 CSE 681
Distance-based Primitives Examples
CSE 681 CSE 681
8 Examples Examples
CSE 681 CSE 681
9