Powerpoint

advertisement
BSP Trees
• Binary space partitioning trees.
• Used to store a collection of objects in ndimensional space.
• Tree recursively divides n-dimensional
space using (n-1)-dimensional hyperplanes.
Space Partitioning
n-dimensional space
splitting hyperplane
(n-1)-dimensional
a1x1 + a2x2 + … anxn + an+1 = 0
ax + by + c = 0 (2D)
ax+by+cz+d = 0 (3D)
Space Partitioning
n-dimensional space
+ve half space
ax + by + c > 0
ax+by+cz+d > 0
coincident
ax + by + c = 0
ax+by+cz+d = 0
-ve half space
ax + by + c < 0
ax+by+cz+d < 0
Classifying Object z
• In 2D, ph is the line ax + by + c = 0.





Compute ax + by + c for all vertices of z.
If all values are = 0; z is coincident to ph.
If all values are <= 0; z is left of ph.
If all values are >= 0; z is right of ph.
Otherwise, z spans ph and is to be split by
finding intersection points with ph.
2D
a
g
e
b
h
c
f
d
Equation of ph is
x–6=0
6
2D
a
g
b
c
2
e
h
f
d
Equation of ph is
y –x –2 = 0
3D Equation of ph is
z –2 = 0
General: ax + by + cz + d = 0
y
z
x
Space Partitioning
n-dimensional space
coincident list
+ve
-ve
-ve
+ve
Objects in 2D
a
g
b
c
e
h
f
d
Objects in 2D
a
g
b
c
e
h
f
d
Objects in 2D
a
g
b
c
a-d
e
h
f
d
e-h
Objects in 2D
a
g
b
c
a-d
e
h
f
d
e-h
Objects in 2D
a
g
b
c
e
h
f
d
a-b
c-d e-f
g-h
Objects in 2D
a
g
b
c
e
h
f
a
d
bc
d
e
f
g
h
Collision Detection
a
g
b
c
e
h
f
a
d
bc
d
e
f
g
h
Visibility Ordering
a
g
b
c
e
h
f
a
d
bc
d
e
f
g
h
BSP Tree Construction
• Select partitioning hyperplanes.
• Partition objects.
• Repeat on partitions.
Partitioning Hyperplane Selection
a
g
b
c
e
h
f
d
• Face of an object.
Partitioning Hyperplane Selection
a
g
b
c
e
h
f
d
• Face of an object.
Autopartition
a
g
b
c
e
h
f
d
• Only object
faces are used as
splitting
hyperplanes
Partitioning Hyperplane Selection
a
g
b
c
e
h
f
d
• Axis-aligned orthogonal
hyperplanes
Partitioning Hyperplane Selection
a
g
b
c
e
h
f
d
• Axis-aligned orthogonal
hyperplanes
Partitioning Hyperplane Selection
a
g
b
c
e
h
f
d
• Balance # objects (pieces) on
each side of hyperplane
• Minimize increase in number
of objects/pieces.
3D Example
3D Example
3D Example
3D Example
Another 3D Example
Another 3D Example
BSP Tree of an Object
• Each leaf represents a region that is either wholly inside or
outside the object.
• Object surface is considered inside object.
• Surface planes are used as partitioning planes.
• Orient partitioning hyperplanes so that interior is to left.
a
a
BSP Tree of an Object
• Each leaf represents a region that is either wholly inside or
outside the object.
• Object surface is considered inside object.
• Surface planes are used as partitioning planes.
• Orient partitioning hyperplanes so that interior is to left.
b
a
b
a
BSP Tree of an Object
• Each leaf represents a region that is either wholly inside or
outside the object.
• Object surface is considered inside object.
• Surface planes are used as partitioning planes.
• Orient partitioning hyperplanes so that interior is to left.
b
a
c
c
b
a
BSP Tree of an Object
• Each leaf represents a region that is either wholly inside or
outside the object.
• Object surface is considered inside object.
• Surface planes are used as partitioning planes.
• Orient partitioning hyperplanes so that interior is to left.
b
a
c
c
d
b
d
a
BSP Tree of an Object
• Each leaf represents a region that is either wholly inside or
outside the object.
• Object surface is considered inside object.
• Surface planes are used as partitioning planes.
• Orient partitioning hyperplanes so that interior is to left.
b
a
c
d
c
d
e
b
e
a
BSP Tree of an Object
• Each leaf represents a region that is either wholly inside or
outside the object.
• Object surface is considered inside object.
• Surface planes are used as partitioning planes.
• Orient partitioning hyperplanes so that interior is to left.
b
a
c
f
d
c
d
e
b
e
f
a
BSP Tree of an Object
• Orient partitioning hyperplanes so that interior is to left.
• With this orientation, left leaves are interior and
right leaves are exterior.
a
b
a
c
f
d
c
d
e
b
e
f
BSP Tree Construction
• Node structure:




ph = equation of partitioning hyperplane
cList = list of objects coincident with ph
leftChild
rightChild
BSP Tree Construction
BSPtree(O)
// O is object set
if O is empty, return null;
Create a new node N;
N.ph = partitioning hyperplane for O;
lList = rList = N.cList = null;
for each object z in O do
if z is coincident to ph or |O| = 1, add z to N.cList;
if z is left of ph, add z to lList;
if z is right of ph, add z to rList;
if z spans ph, split z and add pieces to lList and rList;
N.leftChild = BSPTree(lList);
N.rightChild = BSPTree(rList);
return N;
Basic Draw Back to Front
draw(N)
if eye left of N.ph
{draw(N.rightChild); draw N.cList; draw(N.leftChild)};
else if eye right of N.ph
{draw(N.leftChild); draw N.cList; draw(N.rightChild)};
else // eye coincident to N.ph
{draw(N.leftChild); draw(N.rightChild)};
Basic Draw Front to Back
draw(N)
if eye left of N.ph
{draw(N.leftChild); draw N.cList; draw(N.rightChild)};
else if eye right of N.ph
{draw(N.rightChild); draw N.cList; draw(N.leftChild)};
else // eye coincident to N.ph
{draw(N.rightChild); draw(N.leftChild)};
Randomization
• Autopartition.
• Splitting hyperplane is randomly selected to be
one of the object faces.
• Lines in 2D; planes in 3D.
a
g
b
e
h
Randomization—2D Analysis
• Start with n (nonintersecting) line segments.
• Total number of line segments in autopartition bsp
is expected to be <= n + 2n ln n.
• If this bound is exceeded; rerun construction.
• Expected number of construction rounds before
this bound is not exceeded is 2.
8
8
n = 29
3
4
6
Randomization —2D Analysis
• So, number of nodes in bsp is O(n log n).
• Construction time at each node is O(n) as at each
node O(n) segments need to be partitioned.
• Time is O(n2log n) per construction round.
• 2 rounds expected.
• Expected complexity is O(n2log n).
8
8
n = 29
3
4
6
Randomization—3D Analysis
• Start with n (nonintersecting) triangles.
• Total number of triangles in autopartition bsp is
O(n2).
• There exist n-triangle examples for which every
autopartition has W(n2) triangles.
n = 24
Free Partitions
• One that does not split an object.
• Do a free partition whenever possible;
otherwise, randomly select a segment/face
as partitioning hyperplane.
8
8
3
4
6
Free Partitions
• Using an object face, that crosses a BSP
region, results in a free partition of that BSP
region.
Portion of black segment
bounded by red
(previous) splitting lines
may be used to partition
blue region. No segments
in blue region can be split
as line segments are nonintersecting.
Free Partitions
• Using an object face, that crosses a BSP
region, results in a free partition of that BSP
region.
When green segment is
used to partition blue
region, segments in blue
region may be split.
Download