Contenu connexe
Similaire à Gl tf siggraph-2013
Similaire à Gl tf siggraph-2013 (20)
Gl tf siggraph-2013
- 1. © Copyright Khronos Group 2013 | Page
Fabrice Robinet
COLLADA Working Group Chair.
graphics library Transmission Format
https://github.com/KhronosGroup/glTF
Wednesday, July 24, 13
- 2. © Copyright Khronos Group 2013 | Page
Overview
•status
•motivations
•design principles
•glTF pipeline
•scope
•glTF... and what more ?
•demos
Wednesday, July 24, 13
- 3. © Copyright Khronos Group 2013 | Page
Status
•COLLADA Working group initiative.
•Work in progress - Not a ratified specification yet.
•Code work and SPEC work at the same time.
•SPEC currently catching up with the converter.
•Community feedback welcomed on GitHub.
Wednesday, July 24, 13
- 4. © Copyright Khronos Group 2013 | Page
Motivations
•Bridge the gap between 3D formats and GL based APIs.
•Reduce duplicated effort in content pipeline.
•A common format for contents providers.
Wednesday, July 24, 13
- 5. © Copyright Khronos Group 2013 | Page
Design principles
•Streamline rendering: size, speed and ease of implementation
•Offload processing from runtime.
•Maps well to GL APIs and Typed Arrays.
•Neutral, specify higher level only when necessary.
Wednesday, July 24, 13
- 6. © Copyright Khronos Group 2013 | Page
glTF Pipeline - overview
OpenCOLLADA Compression
COLLADA2GLTF C++ Library
Rapidjson
COLLADA2GLTF
command line tool
Rest3D
transactions & access to 3D assets
COLLADA2GLTF
DeliveryAuthor Interchange API
Maya
Blender
..
COLLADA glTF
OpenGL/ES
WebGL
OpenGL
Converter
Wednesday, July 24, 13
- 7. © Copyright Khronos Group 2013 | Page
glTF Pipeline - COLLADA2GLTF
• Triangulate
• Unify indices
• Split meshes
• Generate shaders
• Axis up conversion
• Minify shaders
• Flatten hierarchy & combine meshes
• Convert images
• Compress meshes
• Interleave vertices
• ... Suggestions welcomed !
Mandatory transformations
Planned optimizations & transformations
Wednesday, July 24, 13
- 8. © Copyright Khronos Group 2013 | Page
Scope
•1.0
- Node hierarchy
- Cameras
- Lights
- Key-framed animations
- Skinning
- Morphing
- Medias (images & videos)
•mesh compression as extensions
•multi-pass considered.
Wednesday, July 24, 13
- 9. © Copyright Khronos Group 2013 | Page
Compression
•Tested 2 compression libraries:
- Open3DGC: https://github.com/amd/rest3d/tree/master/server/
o3dgc
- webgl-loader: https://code.google.com/p/webgl-loader/
Wednesday, July 24, 13
- 10. © Copyright Khronos Group 2013 | Page
Open3DGC
•Open3DGC Binary is an implementation of the MPEG-SC3DMC
(Scalable Compression 3D Mesh Compression)
•K. Mammou, T. Zaharia, F. Prêteux, “TFAN: A low complexity 3D mesh
compression algorithm” Computer Animation and Virtual Worlds, Vol.
20(2-3), pp. 343–354, 2009
•2 modes: binary and ascii.
- Open3DGC Binary exploits an adaptive arithmetic-based encoding to
exploit statistical properties of the encoded data
- Open3DGC ASCII exploits a 7-bit ASCII encoding adapted for GZip
compression
- Open3DGC ASCII is a slightly modified version of SC3DMC to
exploit GZip compression
Wednesday, July 24, 13
- 11. © Copyright Khronos Group 2013 | Page
Model
COLLADACOLLADA glTFglTF glTF+Open3DGC
ascii
glTF+Open3DGC
ascii
glTF+Open3DGC
binary
glTF+Open3DGC
binary
Model
XML gzip raw gzip raw gzip raw •raw bin
•gzip JSON
• bin:102k
• JSON:11k
• bin:81k
• JSON:2kb
• ascii:29k
• JSON:11k
• ascii:19k
• JSON:2k
• bin:18k
• JSON:11k
• bin:18k
• JSON:2k
336k 106k 113k 83k 40k 21k 29k 20k
• bin:9220k
• JSON:75k
• bin:3220k
• JSON:5k
• ascii:3080k
• JSON:151k
• ascii:1510k
• JSON:11k
• bin: 1622k
• JSON:151k
• bin: 1622k
• JSON:11k
19767k 3417k 9295k 3225k 3231k 1521k 1773k 1633k
• bin:25224k
• JSON:183k
• bin:5738k
• JSON:8k
• ascii:7793k
• JSON:587k
• ascii:1433k
• JSON:29k
• bin:3205k
• JSON:589k
• bin:3205k
• JSON:29k
56763k 7378k 25407k 5746k 8380k 1462k 3794k 3234k
• bin:329k
• JSON:255k
• bin:99k
• JSON:10k
• ascii:122k
• JSON:267k
• ascii:61k
• JSON:11k
• bin:71k
• JSON:267k
• bin:71k
• JSON:11k
794k 133k 584k 109k 389k 77k 338k 88k
NOT final numbers - will be refined with integration improvements.
Wednesday, July 24, 13
- 12. © Copyright Khronos Group 2013 | Page
Compression: results overview
data from rest3d SigGraph 2013 BOF presentation, Khaled Mammou/Remi Arnaud
Wednesday, July 24, 13
- 13. © Copyright Khronos Group 2013 | Page
Open3DGC compression
•First integration within “collada2gltf” available on GitHub.
- naive integration to be improved (leading to better compression).
•Encoder/Decoder in C++
•Just to get it working quickly, converted code using emscripten to
javascript.
•Decoding performance to be evaluated in JS.
Wednesday, July 24, 13
- 14. © Copyright Khronos Group 2013 | Page
“webgl-loader” compression
• First integration within “collada2gltf” available on GitHub.
- naive integration to be improved (leading to better compression).
• Encoder in C++/Decoder in JS
• Fast decoding.
Model COLLADACOLLADA glTF+webgl-loaderglTF+webgl-loader glTF+Open3DGC asciiglTF+Open3DGC ascii glTF+Open3DGC binaryglTF+Open3DGC binary
Model
XML gzip raw gzip raw gzip raw •raw bin
•gzip JSON
• utf8:42k
• JSON:12k
• utf8:34k
•JSON:2kb
• ascii:29k
• JSON:11k
• ascii:19k
• JSON:2k
• bin:18k
• JSON:11k
• bin:18k
• JSON:2k
336k 106k 54k 36k 40k 21k 29k 20k
•utf8:8747k
• JSON:753k
•utf8:1325k
• JSON:29k
• ascii:7793k
• JSON:587k
• ascii:1433k
• JSON:29k
• bin:3205k
• JSON:589k
• bin:3205k
• JSON:29k
56763k 7378k 9500k 1354k 8380k 1462k 3794k 3234k
NOT final numbers - will be refined with integration improvements.
Wednesday, July 24, 13
- 15. © Copyright Khronos Group 2013 | Page
Compression: next steps
•Fix integration issues: currently both Open3DGC and webgl-loader do
not handle shared vertex buffer by multiple index buffers. Needed
some vertex duplication to work-around this.
•Benchmark for decoding performance and memory footprint.
•Compress animations, bones indices and weight
Wednesday, July 24, 13
- 16. © Copyright Khronos Group 2013 | Page
glTF... and what more ?
•package not only “models” but whatever you need a declarative way
•For instance, the viewer uses glTF “techniques” to:
- draw the background gradient
- setup the specific image based picking shaders
Wednesday, July 24, 13
- 17. © Copyright Khronos Group 2013 | Page
Demos
•Montage Model Viewer
•MegaCity & Video demo
•Skinning
Wednesday, July 24, 13
- 18. © Copyright Khronos Group 2013 | Page
Thank you - See you on GitHub !
Specification : https://github.com/KhronosGroup/glTF/blob/master/specification/README.md
converter : https://github.com/KhronosGroup/glTF/converter
montagejs viewer : https://github.com/fabrobinet/glTF-webgl-viewer
Wednesday, July 24, 13