hierarchical data structures for efficient rendering and navigation
DESCRIPTION
Hierarchical Data Structures for Efficient Rendering and Navigation. Gordon Müller Computer Graphics TU Braunschweig. Overview. Framework for Efficient Rendering Techniques Object Hierarchies for Visibility Culling / Rendering / Radiosity / Raytracing / ... Automatic Hierarchy Creation - PowerPoint PPT PresentationTRANSCRIPT
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
1ComputerGraphics, TU Braunschweig
Hierarchical Data Structures for Efficient Rendering and
Navigation
Gordon Müller
Computer Graphics
TU Braunschweig
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
2ComputerGraphics, TU Braunschweig
Overview
• Framework for Efficient Rendering Techniques
• Object Hierarchies for Visibility Culling / Rendering / Radiosity / Raytracing / ...
• Automatic Hierarchy Creation• System Architecture• Navigation• Conclusions
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
3ComputerGraphics, TU Braunschweig
Visibility Culling
• Design goals• conservative culling• dynamic scenes• real 3D• memory efficient• fast pre-processing
occluded
culled
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
4ComputerGraphics, TU Braunschweig
Visibility Culling using Object Hierarchies
• Given any object hierarchy, perform conservative visibility test at inner scene nodes when traversing the graph based on bboxes
1
2
3
4
56
78
7
5 3 46 1 2 8
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
5ComputerGraphics, TU Braunschweig
Culling
• Conservative view-frustum test (inside, outside, partially)
• Conservative occlusion test (occluded, partially visible)
• Occlusion test: hierarchical occlusion maps, OpenGL extensions, ...
• Occluder selection: ray casting samples• Traversal order: OpenGL select mode• Avoid unnecessary tests!
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
6ComputerGraphics, TU Braunschweig
Culling Test (De-)Activation
• Disable culling test on failure (i.e. bbox visible)
• Enable culling test by using an oracle• 2-pass algorithm for every frame
I. if (node.activated)visibility test;if (visible(node)) node.activated =
false;recurse(node.childs);
II. Oracle activates nodes
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
7ComputerGraphics, TU Braunschweig
Activation Oracle
• Currently• Re-activation after inode frames• Global activation temperature based on activation
success
• Work in progress• Frame rate analysis• Optimizations for static and/or particular (ie 2½ D)
environments
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
8ComputerGraphics, TU Braunschweig
Visibility Culling Results
• Performance gain in framerate: 5-50% compared to naive culling at every scene node
• Elimination of ~75% of unsuccessful tests• Method adapts well to different scene types• Slightly higher frame rate variance• Good object hierarchies are essential for
efficient culling performance!
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
9ComputerGraphics, TU Braunschweig
Demo
• Frankfurt• molecules
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
10ComputerGraphics, TU Braunschweig
Bounding Volume Optimization I• Recursively subdivide the set of objects into
two disjoint sub-scenes• Objects are sorted along coordinate axes• No fixed subdivision position...
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
11ComputerGraphics, TU Braunschweig
Bounding Volume Optimization II
• …instead, we minimize a cost function describing the approximate traversal costs
• Greedy optimization• Object-specific costs• O(n logn) total construction time on average
C B C B p B B C BH ii
n
i i
1
,
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
12ComputerGraphics, TU Braunschweig
Object Hierarchy Results
• Tight hierarchical bounding volumes• Automatic separation of distant objects• Run-time efficient• Automatic detection of homogeneous
geometric detail (detects object clusters)
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
13ComputerGraphics, TU Braunschweig
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
14ComputerGraphics, TU Braunschweig
Objects
• Methods• void render(view*=NULL, coherency*=NULL)• box boundingBox() const• bool intersect(const ray&, intersection&)• float costs(cost_type);
• Implemented• VRML97 input
• Work in progress• subdivision surfaces (view-dependent tesselation)
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
15ComputerGraphics, TU Braunschweig
Dynamic Hierarchy Adaption
static
potentially dynamic
dynamic
optimized graph
optimized graph
list
buffer
optimize thread
update thread
list
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
16ComputerGraphics, TU Braunschweig
Navigation
• Based on ray casting functionality
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
17ComputerGraphics, TU Braunschweig
G. Müller, Dagstuhl Seminar 00251, 19/06/2000
18ComputerGraphics, TU Braunschweig
Conclusions
• Multi-threaded culling framework on static and dynamic environments (optimize, cull, render, update, navigate, intersect, ...)
• Interactive exploration of large models based on optimized scene hierarchies
• Easy to extend (culling, objects, ...)