180 likes | 351 Views
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
E N D
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 • System Architecture • Navigation • Conclusions
Visibility Culling • Design goals • conservative culling • dynamic scenes • real 3D • memory efficient • fast pre-processing occluded culled
5 6 1 3 7 7 4 2 8 6 8 5 3 4 1 2 Visibility Culling using Object Hierarchies • Given any object hierarchy, perform conservative visibility test at inner scene nodes when traversing the graph based on bboxes
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!
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
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
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!
Demo • Frankfurt • molecules
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...
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
Object Hierarchy Results • Tight hierarchical bounding volumes • Automatic separation of distant objects • Run-time efficient • Automatic detection of homogeneous geometric detail (detects object clusters)
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)
Dynamic Hierarchy Adaption static optimize thread optimized graph potentially dynamic update thread optimized graph dynamic buffer list list
Navigation • Based on ray casting functionality
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, ...)