A Multiresolution Point Rendering System for Large Meshes Szymon Rusinkiewicz Marc Levoy Stanford...

26
A A Multiresolution Multiresolution Point Rendering Point Rendering System System for Large Meshes for Large Meshes Szymon Rusinkiewicz Szymon Rusinkiewicz Marc Levoy Marc Levoy Stanford University Stanford University
  • date post

    20-Dec-2015
  • Category

    Documents

  • view

    222
  • download

    2

Transcript of A Multiresolution Point Rendering System for Large Meshes Szymon Rusinkiewicz Marc Levoy Stanford...

A MultiresolutionA MultiresolutionPoint Rendering Point Rendering

SystemSystemfor Large Meshesfor Large Meshes

Szymon RusinkiewiczSzymon RusinkiewiczMarc LevoyMarc Levoy

Stanford UniversityStanford University

GoalsGoals

• An interactive viewer for large An interactive viewer for large modelsmodels(10(1088 – 10 – 1099 samples) samples)

• Fast startup and progressive Fast startup and progressive loadingloading

• Maintains interactive frame rateMaintains interactive frame rate

• Compact data structureCompact data structure

• Fast preprocessingFast preprocessing

Previous Systems forPrevious Systems forRendering Large ModelsRendering Large Models

• Level of detail control in architectural Level of detail control in architectural walkthrough, terrain rendering walkthrough, terrain rendering systems [Funkhouser 93, Duchaineau systems [Funkhouser 93, Duchaineau 97]97]

• Progressive meshes [Hoppe 96, Progressive meshes [Hoppe 96, Hoppe 97]Hoppe 97]

• These systems often have expensive These systems often have expensive data structures or high preprocessing data structures or high preprocessing costscosts

OutlineOutline

• Data structure:Data structure: bounding sphere bounding sphere hierarchyhierarchy

• Rendering algorithm:Rendering algorithm: traverse tree traverse tree and splatand splat

• Point rendering:Point rendering: when is it when is it appropriate?appropriate?

QSplat Data StructureQSplat Data Structure

• Key observation: a single Key observation: a single bounding sphere hierarchy can be bounding sphere hierarchy can be used forused for– Hierarchical frustum and backface Hierarchical frustum and backface

cullingculling– Level of detail controlLevel of detail control– Splat rendering [Westover 89]Splat rendering [Westover 89]

Creating the Data Creating the Data StructureStructure

• Start with a triangle mesh Start with a triangle mesh produced by aligning and produced by aligning and integrating scans [Curless 96]integrating scans [Curless 96]

Creating the Data Creating the Data StructureStructure

• Place a sphere at each node, large Place a sphere at each node, large enough to touch neighbor spheresenough to touch neighbor spheres

Creating the Data Creating the Data StructureStructure

• Build up hierarchyBuild up hierarchy

QSplat Node StructureQSplat Node Structure

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

6 bytes

QSplat Node StructureQSplat Node Structure

• Position and radius Position and radius encoded relative to parent encoded relative to parent nodenode– Hierarchical coding vs. delta Hierarchical coding vs. delta

coding along a path for coding along a path for vertex positionsvertex positions

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

Center OffsetCenter Offset

Radius RatioRadius Ratio

QSplat Node StructureQSplat Node Structure

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

UncompressedUncompressed

QSplat Node StructureQSplat Node Structure

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

Delta CodingDelta Coding[Deering 96][Deering 96]

QSplat Node StructureQSplat Node Structure

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

HierarchicalHierarchicalCodingCoding

QSplat Node StructureQSplat Node Structure

• Number of children (0, 2, 3, or 4) – 2 Number of children (0, 2, 3, or 4) – 2 bitsbits

• Presence of grandchildren – 1 bitPresence of grandchildren – 1 bit

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

QSplat Node StructureQSplat Node Structure

• Normal quantized to gridNormal quantized to gridon faces of a cubeon faces of a cube

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

5252525266

QSplat Node StructureQSplat Node Structure

• Each node contains bounding cone ofEach node contains bounding cone ofchildren’s normalschildren’s normals

• Hierarchical backface culling [Kumar Hierarchical backface culling [Kumar 96]96]

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

QSplat Node StructureQSplat Node Structure

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

CulledCulled Not CulledNot Culled

Viewer

QSplat Node StructureQSplat Node Structure

• Per-vertex color is quantized 5-6-5 (R-Per-vertex color is quantized 5-6-5 (R-G-B)G-B)

Positionand

Radius

TreeStructure Normal

Width ofCone ofNormals

Color(Optional)

13 bits 3 bits 14 bits 2 bits 16 bits

QSplat Rendering QSplat Rendering AlgorithmAlgorithm

• Traverse hierarchy recursivelyTraverse hierarchy recursively

if if (node not visible)(node not visible)Skip this branchSkip this branch

else ifelse if (leaf node) (leaf node)Draw a splatDraw a splat

else ifelse if (size on screen < (size on screen < threshold)threshold)

Draw a splatDraw a splat

elseelseTraverse childrenTraverse children

if if (node not visible)(node not visible)Skip this branchSkip this branch

else ifelse if (leaf node) (leaf node)Draw a splatDraw a splat

else ifelse if (size on screen < (size on screen < threshold)threshold)

Draw a splatDraw a splat

elseelseTraverse childrenTraverse children

Hierarchical frustum /Hierarchical frustum /backface cullingbackface culling

Point renderingPoint rendering

Adjusted to maintainAdjusted to maintaindesired frame ratedesired frame rate

Level of detailLevel of detailcontrolcontrol

Frame Rate ControlFrame Rate Control

• Feedback-driven frame rate controlFeedback-driven frame rate control– During motion: adjust recursion During motion: adjust recursion

threshold based on time to render threshold based on time to render previous frameprevious frame

– On mouse up: redraw with On mouse up: redraw with progressively smaller thresholdsprogressively smaller thresholds

– Consequence: frame rate may varyConsequence: frame rate may vary

• Alternative:Alternative:– Predictive control of detail [Funkhouser Predictive control of detail [Funkhouser

93]93]

Loading Model from DiskLoading Model from Disk

• Tree layout:Tree layout:– Breadth-first order in memory and on diskBreadth-first order in memory and on disk

• Working set management:Working set management:– Memory mapping disk fileMemory mapping disk file– Consequence: lower detail for new Consequence: lower detail for new

geometrygeometry– Alternative: Active working set Alternative: Active working set

managementmanagementwith prefetching [Funkhouser 96, Aliaga with prefetching [Funkhouser 96, Aliaga 99]99]

PolygonsPolygons QSplatQSplat

Tradeoffs of SplattingTradeoffs of Splatting

• For rendering large 3D models, what are the tradeoffs of:For rendering large 3D models, what are the tradeoffs of:

Good for large, flat orsubtly curved regions

Good for models withdetail everywhere

Highly-efficient rasterizationwith 3D graphics hardware

Higher per-pixel cost, butless slowdown in

absence of 3D hardware

Decimation or creatingLOD data structures

is often expensiveFast preprocessing

Demo – St. MatthewDemo – St. Matthew

• 3D scan of 2.7 meter 3D scan of 2.7 meter statue at 0.25 mmstatue at 0.25 mm

• 102,868,637 points102,868,637 points

• File size: 644 MBFile size: 644 MB

• Preprocessing time: Preprocessing time: 1 hour1 hour• Demo on laptop (PII Demo on laptop (PII 366, 128 MB), no 366, 128 MB), no 3D graphics 3D graphics hardwarehardware

Future WorkFuture Work

• Splats as primitiveSplats as primitive– Unify rendering of meshes, volumes, point Unify rendering of meshes, volumes, point

cloudsclouds– Compatible with shading after rasterizationCompatible with shading after rasterization– Hybrid point/polygon systemsHybrid point/polygon systems

• High-level visibility / LOD frameworksHigh-level visibility / LOD frameworks– Store different kinds of data at each node: Store different kinds of data at each node:

alpha, BRDF, scattering function, etc. alpha, BRDF, scattering function, etc. – Potentially could be used to unify image-Potentially could be used to unify image-

based-rendering (IBR) techniquesbased-rendering (IBR) techniques

AcknowledgmentsAcknowledgments

• Thanks to Gary King, Dave Koller, Thanks to Gary King, Dave Koller, Jonathan Shade, Matt Ginzton, Kari Jonathan Shade, Matt Ginzton, Kari Pulli, Lucas Pereira, James Davis, and Pulli, Lucas Pereira, James Davis, and the whole DMich gangthe whole DMich gang

• Digital Michelangelo Project sponsored Digital Michelangelo Project sponsored by Stanford University, Interval by Stanford University, Interval Research Corporation, and the Paul Research Corporation, and the Paul Allen Foundation for the ArtsAllen Foundation for the Arts

• QSplat binaries and source codeQSplat binaries and source code

• Digital Michelangelo Project archive atDigital Michelangelo Project archive at

QSplat DownloadsQSplat Downloads

http://graphics.stanford.edu/software/qsplathttp://graphics.stanford.edu/software/qsplat

http://graphics.stanford.edu/projects/michhttp://graphics.stanford.edu/projects/mich