Lecture10 – Scene Management
Download
Report
Transcript 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 > 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
Advanced Scene Graphs
This is a game-type-oriented issue.
Bounding volume hierarchies (BVHs)
Binary space partition trees (BSP Trees)
“Quake”
Octree & quadtree
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 & 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
Octree & Quadtree
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
Quadtree - Example
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 & 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