Overview

• Similar to CSG Ray Tracing Implicit Surfaces – Combine primitive objects to form complex object • Primitives are “density fields ” • Combine by summing densities • The 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 through an edge Convex? Polygonal mesh Same, for each face - two planes per edge Concave?

CSE 681 CSE 681

6 Display Considerations Computing the

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