Streaming QSplat: A Viewer for Networked Visualization of Large, Dense Models Szymon Rusinkiewicz Marc Levoy Stanford University Motivation (1) • Range scanning makes it possible to create 3D models of interesting, complex objects • Fast networking is becoming common, even at home How to stream high-resolution 3D models across the net? Motivation (2) • Under what conditions has streaming been studied? Low speed (e.g. modem) Maximum compression at any cost (topological surgery, Metacreations, RealityWave) Medium speed (e.g. DSL) Managing user interaction High speed (e.g. local disk) Hide presence of streaming (architectural walkthrough, terrain flythrough) Streaming QSplat • Based on QSplat, a multiresolution point rendering system • Low cost – No special preprocessing for streaming – No server support – use standard web server – Low CPU and graphics requirements for client • Flexible enough to allow exploration of user interface issues Streaming QSplat • Review of QSplat data structure and rendering algorithm • Modifying algorithm for network streaming • User interface: – Color coding – Download order – Magnifying glass Review of QSplat • An interactive viewer for large models (108 – 109 samples) • Fast startup and progressive loading • Maintains interactive frame rate • Compact data structure • Fast preprocessing QSplat Data Structure • Key observation: a single bounding sphere hierarchy can be used for – Hierarchical frustum and backface culling – Level of detail control – Splat rendering QSplat Node Structure Position and Radius Tree Structure 13 bits 3 bits Normal Width of Cone of Normals Color (Optional) 14 bits 2 bits 16 bits 6 bytes QSplat Rendering Algorithm • Traverse hierarchy recursively Hierarchical frustum / backface culling if (node not visible) Skip this branch Point rendering else if (leaf node) Level of detail control Draw a splat else if (size on screen < threshold) Draw a splat else Traverse children Adjusted to maintain desired frame rate Addition of Network Streaming if (node not visible) Skip this branch else if (leaf node) Draw a splat else if (size on screen < threshold) Draw a splat else if (any child not present) Draw a splat Place children on request queue else Traverse children Addition of Network Streaming • New data structures: – Availability mask – which nodes or groups of nodes are present on the client – Request queue for parts of the model • New thread: – Make requests for regions of the file – Listen for responses – Update availability mask Availability Mask • What granularity? – Small granularity permits requests for precisely the visible regions – Large granularity necessary for memory efficiency and to avoid overhead of many tiny requests – Current implementation uses 1k blocks Request Queue • Prioritized queue – priorities determine download order • Cleared on every frame – View-dependent streaming Color Coding • Color coding for visualization of relative resolution present in different areas Demo – St. Matthew • 3D scan of 2.7 meter statue at 0.25 mm • 102,868,637 points • File size: 644 MB • Preprocessing time: 1 hour • Network bandwidth: limited to 384 kbps Choice of Streaming Order • Choices for streaming order: 1. Level within hierarchy 2. Size of node in world coordinates 3. Projected screen-space size 4. Projected y coordinate 5. Combination of #4 and #5 • Coarse ordering based on quantized log(splat size) • Fine ordering based on projected y coordinate Magnifying Glass • Provide tools for flexible control over download order – Example: “magnifying glass” Conclusions • Streaming QSplat permits interactive display of large, complex models across a network • Given today’s network speeds, need more research on user interaction techniques for streaming 3D data