# Lecture10 – Scene Management

```Advanced
Scene Management
System
1
Scene Management in Hierarchical Form


A tree-based or graph-based representation is good for 3D data
management
 Scene tree
 Scene graph
3D data management including :
 Transformations for each 3D object
 Hierarchical relationship
 Space coherence
 Data instancing
 Geometric computation
 Hit test
 Collision detection
 Terrain following
 Rendering management
 Visibility
 Alpha Sorting
2
An Object in the Scene (An Example from TheFly)
Hierarchy
Parent Object
Parameters
Etc
Transformation
Move
Animation
Motion Data
Shape
Geometric Data
Clone
3
A Scene Tree (An Example) 1/2


A tree-based representation
A simplified scene graph
Root
4
A Scene Tree (An Example) 2/2


A tree-based representation
A simplified scene graph
Root
5
Bounding Volume

Bounding sphere
Bounding cylinder
Axis-aligned bounding box (AABB)
Oriented bounding box (OBB)

Discrete oriented polytope (k-DOP)



Bounding Sphere
Bounding Cylinder
AABB
k-DOP
OBB
6
Bounding Volume - Applications




Collision detection
Visibility culling
Hit test
Steering behavior
 In “Game AI” section
7
Application Example - Bounding Sphere
B2
B1
D
c2
c1
Bounding sphere B1(c1, r1), B2(c2, r2)
If the distance between two bounding spheres is
larger than the sum of radius of the spheres, than
these two objects have no chance to collide.
D &gt; Sum(r1, r2)
8
Application Example - AABB

Axis-aligned bounding box (AABB)
 Simplified calculation using axis-alignment feature
 But need run-timely to track the bounding box
AABB
9
Application Example - OBB


Oriented bounding box (OBB)
 Need intersection calculation using the transformed OBB
geometric data
 3D containment test
 Line intersection with plane
For games, 
OBB
10






This is a game-type-oriented issue.
Bounding volume hierarchies (BVHs)
Binary space partition trees (BSP Trees)
 “Quake”
Possible Visible Set
Culling Skills
11
Bounding Volume Hierarchies (BVHs)


Bounding spheres or AABB in hierarchy
Can be used for dynamic scene objects
R
B
12
BVH Construction - LBVH

LBVH
 Linear BVH
 Tree construction using Morton Code
13
Morton Code (1/2)

2D example

Generate the Morton Code
 Convert the x and y coordinate numbers into binary
 Then “interleave” the bits to get the Morton number
-0-0-1 : 1 in binary
1-0-1- : 5 in binary
xyxyxy
100011 : 35 Your interleaved Morton number
14
Morton Code (2/2)






By constructing a 2kx2kx2k lattice within the AABB of the whole scene,
we can quantize each of the 3 coordinates of the center of the
bounding volume of the scene object.
The 3-bit Morton Code of the object is constructed by interleaving the
successive bits of these coordinates.
Sorting the objects in increasing order along the Morton curve.
We construct the 1st level split by examining the most significant bit
of all codes, placing those with 0 and 1 bits in the 1st and 2nd child,
respectively, of the root.
Applying the bucketing procedures recursively in each child, looking at
the 2nd most significant bit.
In each recursive step, we look at the next bit in the Morton code
until all bits are consumed.
15
BVH Construction – SAH Hierarchy Construction

SAH


Surface Area Heuristic method
Calculate the cost to bin the tree node into two children
 SAH cost function
SA(N) the surface area of the node’s bounding volume
KT &amp; KI are constants
nl : object number of left child node
nr : object number of right child node

Can be applied to BVH and KD Tree.
16
BSP Tree


Two variants
 Axis-aligned
 KD tree
 Polygon-aligned
The trees are created by using a plane to divide the space into two,
and then sorting the geometry into two spaces.
17
Axis-aligned BSP Tree
0
plane
plane
3
plane1
2
1
0
plane2
3
18
Polygon-aligned BSP Tree
F
A
C
G
B
A
B
C
D
E
D
E
F
G
19
Why BSP Tree ?




Quickly to identify where you are
 BSP = Sorting
Need a pre-processor to generate the PVS
 Visibility culling + occlusion culling
 PVS : Possible Visible Set
Optimized for in-door game environment
[Fuch80]
 Fuchs, H.,
 On Visible Surface Generation by a Priori Tree Structures,
 Computer Graphics, 14, 124-33, (Proc. SIGGRAPH’80)
20





Very similar to axis-aligned BSP tree.
Except that a box is split simultaneously along all three axes.
The split point should be the center of the box.
This creates eight new boxes.
Quadtree is the 2D version of octree.
21
22
Octree – Some Discussion




Data structure coherence
Apply visibility culling from parents
Split or not split ?
Outdoor game scene ?
23
Culling (1/2)




Culling means “remove from a flock”
Visibility culling
 Remove the object not in view frustum
 A “must” feature within the game engine
Backface culling
 Remove the polygons facing away from camera
 Hardware standard
Occlusion culling
 Remove the objects hidden by the others
 A complicated issue for games
24
Culling (2/2)
View frustum
Occlusion
culling
eye
Visibility
culling
Backface
culling
25
BSP Implementation


A Pre-processor
 Space partition the scene data from artist
 Generate the BSP data structure
 Generate the PVS
BSP walk through
 Identify the room where you are
 Show/hide the rooms according to the PVS
 Perform terrain following &amp; collision detection
 Or all interaction between the player’s character and the scene
26
BSP Preprocessor (1/2)


Input
 A scene from artist
 Cutting planes (optional)
 Can be procedurally generated by algorithm
 Cutting policy
 Split or not split
 Ray casting resolution for PVS
Output
 A BSP file
 BSP Tree
 PVS
 Geometry Data
27
BSP Preprocessor (2/2)

Process
 Generate the BSP tree according to the cutting policy
 Split or sort the geometry into BSP room (leaves)
 For each “room”, ray cast all rooms to generate the possible visible
room set
 2D layers or 3D
 Time consuming
28
BSP Challenges



Effectiveness of PVS
 Data set size
 The range
Hard for dynamic scene objects
 Apply BSP to static scene objects
 Apply visibility culling and collision detection to dynamic scene
objects
Room size
29
```