630 likes | 668 Views
Learn how to visualize extremely large and complex 3D data through techniques like simplification, progressive meshes, and point-based rendering. Explore the use of triangles, points, and tree structures to render high-quality and efficient visualizations. Discover the merits of different approaches and their applications in various domains.
E N D
Data Visualization 2~How to visualize huge 3D data~ Yasuhide Okamoto
Digest • How to use Huge 3D data? • Easy to obtain, Hard to visualize Very huge!! Good Sensors, Big Storage Huge 3D Data Too complex to process
Solutions • Make Low resolution data! • Use only required data! • Make a Tree structure!
Solutions Simplification using Quadric Error Metric Progressive Meshes Adaptive TetraPuzzles
Why we use triangles? • Planar • Convex • Simplest polygon • Possible to approximatecomplex surfaces
Detail representation • Texture mapping • Bump mapping, Normal mapping, Displacement mapping Triangle mesh Textured model An example of Normal mapping Texture [Levy 2002]
Today’s topic Forget Triangles!
Rendering process for a triangle • Transformation of vertices • Rasterization • Texturing, Pixel shading
Triangle is the only solution? Triangles cannot be seen because they are too small…
Another solution • Everything is built up of atoms…
Another solution • Triangle -> Point
Another solution • Point based rendering Points Triangles St. Matthew (127 millions triangles) 8 sec/frame 8 frame/sec
Merits of points • Data simplicity • Triangles • 3 vertices • 1 set of indices • Points • 1 vertex • point size • (no connectivity) (x0, y0, z0) (0, 1, 2) (x1, y1, z1) (x2, y2, z2) (x0, y0, z0) r
Merits of points • Processing cost • Triangles • Projecting 3 vertices • Precise rasterization • Points • Projecting 1 vertex • Simple rasterization
Applications using point rendering • Particle system
A demerit of point rendering • Rendering quality Points Triangles
QSplat Szymon Rusinkiewicz, Marc Levoy SIGGRAPH2000 • Point Tree structure • LOD using points
Data construction • Input a triangle mesh • Place a sphere at each triangle, large enough to touch neighbor spheres
Creating a hierarchy • Recursive splitting and merging
Leaf Node: Points in Original Resolution Point tree Need extra data size…
Hierarchical data compression • Using relative values to the parent node • Decode encoded data while traversing trees • Quantization Parent Node: Center (xp, yp, zp), Radius: rp Child Node: Center (xp+kx*rp, yp+ky*rp, zp+kz*rp), Radius: rp*kr
Node structure Position and Radius Width of Cone of Normals Tree Structure Color (Optional) Normal 13 bits 3 bits 14 bits 2 bits 16 bits 6 bytes
Center Offset Radius Ratio Position and radius Position and Radius Width of Cone of Normals Tree Structure Color (Optional) Normal 13 bits 3 bits 14 bits 16 bits 2 bits • Position and radius encoded relative to parent node
Tree structure Position and Radius Width of Cone of Normals Tree Structure Color (Optional) Normal 13 bits 3 bits 14 bits 2 bits 16 bits • Number of children (0, 2, 3, or 4) – 2 bits • Presence of grandchildren – 1 bit
Normal Position and Radius Width of Cone of Normals Tree Structure Color (Optional) Normal 13 bits 3 bits 14 bits 2 bits 16 bits • Normal quantized to gridon faces of a cube 52526
Normal cone Position and Radius Width of Cone of Normals Tree Structure Color (Optional) Normal 13 bits 3 bits 14 bits 2 bits 16 bits • Normal cone: range of visible directions Invisible Visible Visible Invisible Original Point (leaf node) Inner node’s point • Quantizing cone’s width to
Color Position and Radius Width of Cone of Normals Tree Structure Color (Optional) Normal 13 bits 3 bits 14 bits 2 bits 16 bits • Per-vertex color is quantized 5-6-5 (R-G-B)
Rendering algorithm • Traverse hierarchy recursively if (node not visible) Skip this subtree else if (leaf node) Draw points else if (size on screen < threshold) Draw points else Traverse children
Data alignment Position and Radius Width of Cone of Normals Tree Structure Color (Optional) Normal 13 bits 3 bits 14 bits 2 bits 16 bits • Breadth-First Order • => Good for memory coherency
Comparing splat shapes aliasing Same recursion level Same rendering time Highest quality
Summary of QSplat • Hierarchical representation using points • High speed and high quality rendering for complex models • Fast preprocessing • High compression rate
Similar works • Layered Point Clouds QSplat --- Point based Tree Tree Depth: log(n) Layered Point Clouds --- Point Cloud based Tree Tree Depth: log(n/k)
Similar works • Layered Point Clouds
Similar works • POP • Hybrid method using Points and Polygons Red: Points, Blue: Polygons (Triangles)
Similar works • Combining Edges and Points Edge & Point image Final image
Other solutions? Triangle Point Line
Far Voxels Enrico Gobbetti, Fabio Marton SIGGRAPH2005
Voxel • A representation for 3D models
Inner Node: • QSplat: A simplified point • LPC: A group of simplified points • TetraPuzzles: A group of triangles Leaf Node: Points or Triangles in Original Resolution Tree structure • Recursive Split • Make inner nodes in bottom up order
View dependent voxel Leaf Node: A group of Triangles in Original Resolution Tree structure of Far Voxels • View Dependent Voxels for inner nodes
Construction of tree structure • Recursive split of bounding boxes along the longest axis
Define inner nodes • Bottom-up order construction • Assign a voxel grid from the bounding boxto each inner node
Sampling • Create “View-Dependent Voxel” for each grid Sampling Fitting V Voxel Context Sampled Voxel View Dependent Voxel C(v) = (r, g, b)