Implicit Surfaces CPSC 599.86 / 601.86 Sonny Chan University of - - PowerPoint PPT Presentation

implicit surfaces
SMART_READER_LITE
LIVE PREVIEW

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-1
SLIDE 1

Implicit Surfaces

CPSC 599.86 / 601.86 Sonny Chan University of Calgary

slide-2
SLIDE 2

(some board work happened here)

slide-3
SLIDE 3

Implicit Surface Rendering

Kenneth Salisbury & Christopher Tarr, 1997

slide-4
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
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
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
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
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
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
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
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
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
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
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
SLIDE 15

T(pi−1)

Surface Tracking

One more time step: a lot closer now!

pi−1 pi q

slide-16
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
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
SLIDE 18

Breaking Contact

Is this an incorrect break? What happens here?

pi−1 qi−1 qi pi T(pi−1)

slide-19
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
SLIDE 20

Potential Limitations

  • Does this algorithm render thin
  • bjects correctly?
  • A limit cycle?!