A lion in the desert How do you find a lion in the desert? How about when you have a predicate that...

24
a lion in the desert How do you find a lion in the desert? How about when you have a predicate that tells you if the lion is in front or behind a separating plane?
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    214
  • download

    0

Transcript of A lion in the desert How do you find a lion in the desert? How about when you have a predicate that...

a lion in the desert

How do you find a lion in the desert?

How about when you have a predicate that tells you if the lion is in front or behind a separating plane?

a lion in the desert

• Cut the desert in two and ask in which part is the lion.

• Repeat the process for the part that the lion is in.

BSP Trees

• Binary Spatial Partitioning (BSP) means:– Partition (or split) a space (like the desert) into

Binary (two) parts using a separating plane.– Repeat the process for both resulting

subspaces and you will get a BSP tree.

Occlusion

Objects “behind” the splitting plane cannot hide objects “in front” of the plane, regardless the relative location of the observer.

Splitting Planes

• What we see in this example is a simple model with four polygons.

• We will choose the splitting planes so that they lay on a polygon of the model.

Creating the tree

We choose a splitting plane a split the space in two.

Chosen Splitting Plane

Chosen Splitting Plane

Root NodeRoot Node

L NodeL Node R NodeR Node

Associated Splitting Plane

Associated Splitting Plane

Creating the tree

L NodeL Node R NodeR Node

Chosen Splitting Plane

Chosen Splitting Plane

Associated Splitting Plane

Associated Splitting Plane

Creating the tree

Chosen Splitting Plane

Chosen Splitting Plane

Creating the tree

Chosen Splitting Plane

Chosen Splitting Plane

Creating the tree

The leaves of the tree are convex regions.

Traversing the Tree

We want to render the scene from this point of view. In what order should we render the regions?

Traversing the TreeTest against the splitting plane

Test against the splitting plane

Traverse the R subtree before the L subtree

Traverse the R subtree before the L subtree

Rendering order:Rendering order:

Test against the splitting plane

Test against the splitting plane

Creating the treeTest against the splitting plane

Test against the splitting plane

Traverse the L subtree before the R subtree

Traverse the L subtree before the R subtree

Rendering order:Rendering order:

Test against the splitting plane

Test against the splitting plane

Creating the tree

Rendering order:Rendering order:

Traverse the L subtree before the R subtree

Traverse the L subtree before the R subtree

Test against the splitting plane

Test against the splitting plane

Test against the splitting plane

Test against the splitting plane

Creating the tree

Rendering order:Rendering order:

Test against the splitting plane

Test against the splitting plane

Traverse the R subtree before the L subtree

Traverse the R subtree before the L subtree

Test against the splitting plane

Test against the splitting plane

Creating the tree

Rendering order:Rendering order:

Test against the splitting plane

Test against the splitting plane

Test against the splitting plane

Test against the splitting planeTraverse the L subtree before

the R subtree

Traverse the L subtree before the R subtree

Convex Cells

The cells can be ordered back to front, or front to back.

F2B Order

1

23

4

56

F2B Order

1

2

34

5

6

Hidden Surface Removal

Display:

– Traverse the BSP tree back to front, drawing polygons in the order they are encountered in the traversal.

• Construct a BSP tree:– Pick a polygon, let its supporting

plane be the root of the tree.– Create two lists of polygons:

these in front, and those behind (splitting polygons as necessary).

– Recurse on the two lists to create the two sub-trees.

BSP Construction

1 2

3

45

1 2

3

45

6

1 2

3

45

67

1 2

3

4

56

BSP Trees

BSP-Trees are view-independent

A good splitting plane minimize the number of polygon intersections, and aims at a balanced tree.

How to choose the order of splitting planes during construction?

Point Location

Given p, in which cell it resides?

Ray Traversal

Given R, which cells, and in which order it traverses?