SLIDE 1
Implicit Surfaces CPSC 599.86 / 601.86 Sonny Chan University of - - PowerPoint PPT Presentation
Implicit Surfaces CPSC 599.86 / 601.86 Sonny Chan University of - - PowerPoint PPT Presentation
Implicit Surfaces CPSC 599.86 / 601.86 Sonny Chan University of Calgary (some board work happened here) Implicit Surface Rendering Kenneth Salisbury & Christopher Tarr, 1997 Implicit Surfaces A surface defined by an implicit equation: S
SLIDE 2
SLIDE 3
Implicit Surface Rendering
Kenneth Salisbury & Christopher Tarr, 1997
SLIDE 4
Implicit Surfaces
- A surface defined by an implicit equation:
- S(x, y, z) = 0
- Can be rendered using the same proxy-based algorithm!
SLIDE 5
- 0.8
0.8
- 0.8
0.8
- 0.8
0.8
- 0.8
0.8
Implicit Surfaces Review
- “Graph” the equation, as you learned how to do in high school...
x2 + xy + y2 = 0 (x2 + y2 − 1)3 − x2y3 = 0
SLIDE 6
The Landscape
- 1.5
- 1
- 0.5
0.5 1 1.5
- 1
- 0.5
0.5 1
S(x, y) < 0 S(x, y) = 0 S(x, y) > 0
SLIDE 7
- 1.5
- 1
- 0.5
0.5 1 1.5
- 1
- 0.5
0.5 1
Step 1: Detecting Collision
How do we detect first contact with the object?
?
SLIDE 8
- 1.5
- 1
- 0.5
0.5 1 1.5
- 1
- 0.5
0.5 1
Step 2
- Finding a surface point:
- Once contact is made, we need to
keep track of a point on the surface
- First, how do we find this point?
?
SLIDE 9
The Gradient
- 1.5
- 1
- 0.5
0.5 1 1.5
- 1
- 0.5
0.5 1
rS(x, y) = ∂S
∂x ∂S ∂y
!
SLIDE 10
S(x, y)rS(x, y)
- 1.5
- 1
- 0.5
0.5 1 1.5
- 1
- 0.5
0.5 1
Direction to the Surface
SLIDE 11
.5 0.5 1
The “Seeding” Algorithm
- Given a seed point, find the
nearest point on the surface (within a certain tolerance)
- Exploit condition that the seed is
known to start near the surface
p ← pseed do p ← −
S(p)rS(p) rS(p)·rS(p)
p ← p + p until (||p|| < ✏)
SLIDE 12
- 1.5
- 1
- 0.5
0.5 1 1.5
- 1
- 0.5
0.5 1
Step 3
- Tracking the surface point:
- As the device moves, we need to
update our surface point, subject to geometric constraints
- What are these constraints?
- Can we use the seeding algorithm
again?
?
SLIDE 13
- 1.5
- 1
- 0.5
0.5 1 1.5
- 1
- 0.5
0.5 1
Constrained by a Plane
- We have a point on the surface
- We have the surface normal
(gradient of the implicit function)
- The answer is to use a tangent
plane!
p
q
T(p)
SLIDE 14
Surface Tracking
One time step: is pi the nearest surface point?
pi−1 qi−1 qi pi pseed T(pi−1)
SLIDE 15
T(pi−1)
Surface Tracking
One more time step: a lot closer now!
pi−1 pi q
SLIDE 16
- 1.5
- 1
- 0.5
0.5 1 1.5
- 1
- 0.5
0.5 1
Step 4: Breaking Contact
How do we know when to stop tracking?
?
SLIDE 17
Tangent Plane to the Rescue!
- Contact is broken when q
moves to the outside of the constraining plane
- What vector operator can we
use to test this condition?
pi−1 qi−1 T(pi−1) pi = qi
SLIDE 18
Breaking Contact
Is this an incorrect break? What happens here?
pi−1 qi−1 qi pi T(pi−1)
SLIDE 19
Our Implicit Surface Rendering Algorithm
- 1. Detect initial contact when S(p) < 0
- 2. Find a point on the surface using the initial device location as seed
- 3. Update the surface point as the device moves, using the tangent plane as a
constraint and the seeding algorithm
- 4. Contact breaks when the device is moved outside the constraining plane
- 5. Repeat from step 1…
SLIDE 20
Potential Limitations
- Does this algorithm render thin
- bjects correctly?
- A limit cycle?!