Compressing Texture Coordinates Martin IsenburgJack Snoeyink University of North Carolina at Chapel Hill with h Selective Linear Predictions
Take this home: “We predict texture coordinates with four different rules – taking into account the presence of mapping discontinuities.” “We compress the corresponding corrective vectors with different arithmetic contexts.”
Overview Background Compressing Vertex Positions Linear Prediction Schemes Texture Coordinate Mappings Compressing Texture Coordinates Alternative Approaches Summary
Background
Meshes - Basic Ingredients connectivity geometry face face face face f vertex 1 ( x 1 y 1 z 1 ) vertex 2 ( x 2 y 2 z 2 ) vertex 3 ( x 3 y 3 z 3 ) vertex v ( x v y v z v )
Meshes - Optional Properties mapping values face face face face f texcoord 1 ( u 1 v 1 ) texcoord 2 ( u 2 v 2 ) texcoord 3 ( u 3 v 3 ) texcoord t ( u t v t )
– Fast Rendering – Progressive Transmission – Maximum Compression Geometry Compression [ Deering, 95 ] Mesh Compression Maximum Compression
Geometry Compression [ Deering, 95 ] – Fast Rendering – Progressive Transmission – Maximum Compression Connectivity Geometry Properties Geometry Compression [ Deering, 95 ] Mesh Compression Properties Maximum Compression
Geometry Compression [ Deering, 95 ] – Fast Rendering – Progressive Transmission – Maximum Compression Connectivity Geometry Properties – Mapping – Values Geometry Compression [ Deering, 95 ] Mesh Compression Properties Values Maximum Compression Normals Colors Material Attributes Texture Coordinates Texture Coordinates
Triangle Mesh Compression Texture Coordinates ??? Triangle Mesh Compression [ Touma & Gotsman, Graphics Interface 98 ] “… treat like vertex positions …” Yes! But … “parallelogram prediction” - most popular! Geometry “coding with vertex degrees” - optimal? Connectivity
Generalization of TG coder Connectivity Compressing Polygon Mesh Connectivity with Degree Duality Prediction [ Isenburg, 02 ] Near-optimal connectivity coding of Polygonal Meshes [ Khodakovsky et al, 02 ] Compressing Polygon Mesh Geometry with Parallelogram Prediction [ Isenburg & Alliez, 02 ] Geometry
Compressing Vertex Positions
Classic approaches [ 95 – 98 ]: – linear prediction Geometry Compression [ Deering, 95 ] Java3D Geometric Compression through topological surgery [ Taubin & Rossignac, 98 ] MPEG - 4 Triangle Mesh Compression [ Touma & Gotsman, 98 ] Virtue3D
Compressing Vertex Positions Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 02 ]: – spectral – re-meshing – space-dividing – vector-quantization – feature discovery – angle-based
Compressing Vertex Positions Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 02 ]: – spectral – re-meshing – space-dividing – vector-quantization – feature discovery – angle-based Spectral Compression of Mesh Geometry [ Karni & Gotsman, 00 ] expensive numerical computations
Compressing Vertex Positions Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 02 ]: – spectral – re-meshing – space-dividing – vector-quantization – feature discovery – angle-based Progressive Geometry Compression [ Khodakovsky et al., 00 ] modifies mesh prior to compression
Compressing Vertex Positions Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 02 ]: – spectral – re-meshing – space-dividing – vector-quantization – feature discovery – angle-based Geometric Compression for interactive transmission [ Devillers & Gandoin, 00 ] poly-soups; complex geometric algorithms
Compressing Vertex Positions Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 02 ]: – spectral – re-meshing – space-dividing – vector-quantization – feature discovery – angle-based Vertex data compression for triangle meshes [ Lee & Ko, 00 ] local coord-system + vector-quantization
Compressing Vertex Positions Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 02 ]: – spectral – re-meshing – space-dividing – vector-quantization – feature discovery – angle-based certain 3D models + expensive matching Compression of engineering models by repeated feature [ Shikhare et al., 01 ] discovery
Compressing Vertex Positions Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 02 ]: – spectral – re-meshing – space-dividing – vector-quantization – feature discovery – angle-based Angle-Analyzer: A triangle- quad mesh codec [ Lee, Alliez & Desbrun, 02 ] dihedral + internal = heavy trigonometry
Linear Prediction Schemes
1.quantize positions with b bits 2.traverse positions 3.linear prediction from neighbors 4.store corrective vector ( , , ) ( 1008, 68, 718 ) floating point integer
Linear Prediction Schemes 1.quantize positions with b bits 2.traverse positions 3.linear prediction from neighbors 4.store corrective vector use traversal order implied by the connectivity coder
Linear Prediction Schemes 1.quantize positions with b bits 2.traverse positions 3.linear prediction from neighbors 4.store corrective vector ( 1004, 71, 723 ) apply prediction rule prediction
Linear Prediction Schemes 1.quantize positions with b bits 2.traverse positions 3.linear prediction from neighbors 4.store corrective vector position distribution corrector distribution ( 1004, 71, 723 )( 1008, 68, 718 ) position ( 4, -3, -5 ) correctorprediction
Deering, 95 Prediction: Delta-Coding A processed region unprocessed region P P = A
Taubin & Rossignac, 98 Prediction: Spanning Tree A B C D E processed region unprocessed region P P = α A + βB + γC + δD + εE + …
Touma & Gotsman, 98 Prediction: Parallelogram Rule processed region unprocessed region P P = A – B + C A B C
Parallelogram Rule good prediction bad prediction “non-convex” bad prediction “non-planar”
Not Triangles … Polygons! Face Fixer [ Isenburg & Snoeyink, 00 ]
Non-triangular Faces Question:Why would a mesh have a non-triangular face?
Non-triangular Faces Question:Why would a mesh have a non-triangular face? Answer:Because there was no reason to triangulate it! This face was “convex” and “planar”. use this info for better predictions
within-predictions often find existing parallelograms ( quadrilaterals ) “within” versus “across” within-predictions avoid creases within-prediction across-prediction
Texture Coordinate Mappings
Texture Mapping (1) “the process of applying a texture image to a mesh” mesh textured mesh texture image
Texture Mapping (2) “putting every 3D polygon of the mesh in correspondence with a 2D polygon in the image”
“some vertices of the mesh have multiple corresponding locations in texture space” Discontinuities in Mapping (1)
Discontinuities in Mapping (2) “vertices may have multiple associated texture coordinates”
crease corner 0 smooth corner 0 Encoding the Mapping (1) 1. distinguish vertices 2. distinguish corners smooth vertex crease vertex corner vertex
Encoding the Mapping (2)
Encoding the Mapping (3)
Why Discontinuities ? cuts required to flatten mesh – no boundary – non-zero genus piece-wise texture mapping – author / artist decision – easier for automated techniques additional cuts to meet objectives – angle/area preserving parameterization – minimizing texture stretch
Piece-wise Mappings (1)
Piece-wise Mappings (2)
Compressing Texture Coordinates
Selective Linear Prediction analyze neighborhood use most promising predictor “within” ( for polygon meshes only ) “across” “nearby” “center” avoid unreasonable predictions compress with different contexts
Unreasonable Predictions
Example Scenarios (1) processed vertex ring within-prediction T 16 – T 11 + T 13
Example Scenarios (2) smooth edge within-prediction T 20 – T 19 + T 21 across-prediction T 22 – T 25 + T 26
Example Scenarios (3) processed vertex ring 1 57 crease edge 50 nearby-prediction T
Example Scenarios (4) within-prediction T 81 – T 74 + T 80 center-prediction BB mid
Example Bit-Rates ( 10 bit ) within by prediction type model acrossnearbycenter “1398” “1412” “1510” lion wolf raptor total
Selection Histogram within frequency of prediction type model acrossnearbycenter %35 %10 % %39 %12 % %36 %11 % “1398” “1412” “1510” lion wolf raptor 82 %14 %3 %1 % 84 %13 %2 %1 % 78 %18 %5 %1 %
Alternative Approaches
“make texture coordinates implicit ” change the mesh (re-meshing) Geometry Images [ Gu et al, 02 ] Bounded Distortion piece-wise Mesh Parameterization [ Sorkine et al, 02 ] Space-Optimized Texture Maps [ Balmelli et al, 02 ] change the image (re-texturing)
Summary & Acknowledgments
Summary (1) use the parallelogram predictor for texture coordinates avoid unreasonable predictions across discontinuities (“seams”) switch to less-promising predictor compress resulting corrective vectors with separate arithmetic contexts
Summary (2) compression software as benchmark for future research is available on the Web local link
Acknowledgments Archaeology Technology Labs, North Dakota State University Curious Labs, California
Thank You!