Progressive 3D Mesh Coding Kumar, Roger Sepiashvili, David Xie, Dan 18-796 Professor Chen April 19, 1999

Download Report

Transcript Progressive 3D Mesh Coding Kumar, Roger Sepiashvili, David Xie, Dan 18-796 Professor Chen April 19, 1999

Progressive 3D Mesh Coding
Kumar, Roger
Sepiashvili, David
Xie, Dan
18-796
Professor Chen
April 19, 1999
3D Models - MPEG-4 Overview
• Synthetic/Natural Hybrid Coding (SNHC) in MPEG-4
– A/V plane with 2D overlays, text, 3D objects, faces, etc.
• MPEG-4 System and Description Languages (MSDL)
– MSDL will provide flexible run-time environment for invoking
decompression tools, algorithms, etc.
– MSDL will include class libraries for A/V object types along
with their bitstream syntax.
– Client will download A/V object types for a specific session
from the server at start up.
• MSDL A/V Objects…
–
–
–
–
VRML
ActiveX Animation
Java Media 3D
etc.
3D Models - MPEG-4 Overview
• MPEG-4 V2 will provide tools for coding 3-D Objects
– Coding of generic 3-D Meshes
– Level of Detail (LOD) Scalability
• Decoder can render simplified version of the mesh
• Useful for viewing distant objects & for less-powerful rendering engines.
– Spatial Scalability
• Decoder can render the mesh at reduced spatial resolution
• Used in combination with LOD Scalability
– Progressive Transmission
• to receive progressively better approximations to the model
• possible approaches are:
– transmission of successive LOD approximations
– progressive mesh coding (discussed later)
Compression of 3D Models
• Texture Coding and Compression
– Static textures can be compressed by JPEG
– Moving textures can be compressed by MPEG-1 or H.263
• Geometry Coding and Compression
– There is no standard for geometry coding and compression.
– Most often geometry is represented by a triangular 3D mesh.
– Algorithms that quantize vertex positions and normals, and then
apply Huffman or entropy encoding can achieve compression in
the range of 15:1 to 65:1, depending on the nature of the model.
– Mechanical models are easier to compress than anatomical.
Need for Geometry Compression:
– Each vertex represented by three floating pt. numbers.
– If each vertex shared by six polygons, and max number
of vertices per model is 2^20, then 76 bits/triangle needed.
– Several hundred Kilobytes for  1  *  3 vertices *  32bits    3 vertex IDs  *  20bits   76bits
 6   triangle   vertex   triangle   vertex ID  triangle
average model (just geometry)
Why Progressive Mesh Coding ?
Progressive Mesh (PM) addresses these issues:
• Progressive Transmission
– show progressively better approximations to the model
• Smooth Visual Transition (geomorphs)
– transit smoothly between different levels of approximation
• Selective Refinement
– spatial refinement
– level of detail refinement
• Mesh Optimization
– constructing approximation
meshes from non-optimal scanned
meshes with smaller number of vertices
• Mesh Compression
– mesh simplification algorithm allows very efficient coding
• Can Be Lossless (if no optimization was done)
Progressive Mesh (PM)
Original mesh M^ is stored as a coarse mesh M0 and n
detail records that indicate how to refine M0 into the
original mesh M^.
M  M ...  M  M
0
vsplit0
1
vsplit1
• Mesh Optimization
– reduction of number of faces
• Mesh Simplification
– construction of a coarse mesh M0
• Mesh Compression
– storage space reduction
vsplitn 1
n
^
PM - Mesh Optimization
• Find mesh M that accurately fits the model and has a
small number of vertices.
• Goal is to optimize for rendering efficiency
• Often requires significant user intervention
• Done by minimizing the energy function
E (M )  Edist (M )  Erep (M )  E spring (M )
Edist(M) = total squared distance of points of original model from the mesh
– measures accuracy
Erep(M) is proportional to the number of vertices in the mesh
– measures conciseness
Espring(M) is energy of a spring placed on each edge of a mesh
– penalizes vertices that are too far away from adjacent vertices
E spring ( M ) 
k
j ,k
v j  vk
2
PM - Mesh Simplification
Original mesh M^ is stored as a coarse mesh M0 and n
detail records that indicate how to refine M0 into the
original mesh M^.
M  M ...  M  M
0
vsplit0
1
vsplit1
vsplitn 1
n
• Can simplify mesh using edge collapse, edge
split, edge swap. Only edge collapse is needed.
• Edge collapse is fully invertible, so inverse
transformation reconstructs the original mesh.
^
PM - Mesh Simplification
• Done by minimizing the energy function
E ( M )  E dist ( M )  E spring ( M )  E scalar ( M )  E disc ( M )
Edist(M), Espring(M) are same as before
Escalar(M) measures accuracy of scalar attributes
• are properties of corners (i.e. [vertex,face] tuples)
• examples are: diffuse color, texture, etc.
Edisc(M) measures geometric accuracy of discontinuity curves
• preserving sharp edges is important
• Edisc(M) is equal to the total squared distance of a set of points sampled from
sharp edges (discontinuity curves) of M^ to the discontinuity curve they belong.
• Algorithm:
– mark all candidates for edge collapse in terms of priority, where priority of
each transformation is estimated by energy cost E.
– starting with top at priority queue, perform edge collapse and recompute
priorities of edges in neighborhood of this edge collapse.
– Keep doing until desired number of faces is met.
References
• Progressive Meshes (Microsoft Research)
– http://www.research.microsoft.com/~hoppe
• Java 3D API - 3D Geometry Compression
– http://www.javasoft.com/products/java-media/3D
/forDevelopers/j3dguide/AppendixCompress.doc.html
All movies are made by Hugues Hoppe
http://www.research.microsoft.com/~hoppe
Question #1
• Did you mention that "Java3D also does compression"? How?
–
–
–
–
–
Our first slide stated that the MPEG-4 System and Description Languages (MSDL) will allow 3D geometry
to be compressed with different algorithms, one of which could be Java Media 3D (Java3D). MPEG-4 will
also specify an built-in algorithm for geometry compression (most likely Progressive Mesh). If a better
compression scheme is developed a few years later, MSDL would allow MPEG-4 to use this algorithm.
Java3D specifies an algorithm for geometry compression. This algorithm does not allow for progressive
transmission of meshes, as the Progressive Mesh (PM) algorithm does.
In the Java3D algorithm, a 3D geometry is converted into a generalized triangular mesh. In Java3D, the
vertex points are quantized, and then difference between two quantized vertex points is Huffman encoded.
The vertex information is stored along with values for diffuse color and a normal vector.
Color information is also quantized and Huffman encoded, whereas Normal information is encoded using a
more complicated scheme (mapping normals to points on the unit sphere, please see
http://www.javasoft.com/products/java-media/3D/forDevelopers/j3dguide/AppendixCompress.doc.html
section B.8).
If no color or normal information is sent for a vertex, the color or normal information for the previously-sent
vertex is used.
Question #2
• What is the speed for Mesh Optimization?
–
In our presentation, we stated that Mesh Optimization is quite slow. Below are exact numbers and examples.
Mesh Optimization:
3152 faces to 334 faces
17.0 minutes
Mesh Optimization:
18,274 faces to 1348 faces
47.0 minutes
Mesh Optimization:
8073 faces to 515 faces
44.5 minutes
Mesh Optimization:
3832 faces to 432 faces
10.2 minutes
Timings preformed by Hugues Hoppe on a DEC Workstation in 1993.
http://research.microsoft.com/~hoppe