glTF graphics library Transmission https://github.com/KhronosGroup/glTFFormat
Fabrice Robinet / Montage Studio COLLADA Working Group Chair
1 Menu • Inter-exchange and runtime formats • Motivations: • Transmission Format for 3D Assets • Designed for GL • Asset Pipeline • glTF: • Birds eye view • RAW datas for straight GL Code • Features • Organized for efficiency • Compression: • As part of glTF via extensions • Open3DGC • Next steps • Demos • QA
2 Inter-exchange and runtime formats • There isn’t anything such as a silver bullet for 3D formats • Different formats for different pipeline stages: • Inter-exchange: 3D assets exchange between tools (COLLADA & FBX). • Runtime & delivery format: provide a compact and efficient representation to be directly consumed by the low level graphic API.
3 Motivation : Transmission Format for 3D assets • Content is king • 3D is the last media without delivery format • For easy adoption, needs to be royalty-free
Audio Video Images 3D MP3 H.264 JPEG ?
4 Motivation : Designed for GL • Inter-exchange formats are not suited for real-time • Data has to be transformed to be passed to GL • Especially on mobile, offload processing from runtime • Unify indices • Split meshes due to indexing restrictions (OpenGL ES 2.0) • Split meshes due to maximum uniforms (For Skinning) • … • Reduce duplicated efforts in content pipeline • A common format for content providers
5 Asset Pipeline
Author Interchange Converter Delivery API
Maya OpenGL/ES Command Line COLLAD Blende Tool glTF WebGL A r FB or .. X Rest API OpenGL …
Note: COLLADA is the open standards-based flow but other tool flows are possible
6 glTF : Birds eye view • JSON to properties declarations and refer to external files (buffers, images..) • Binary for heavy datas , vertices and indices, animations…
scene
light node camera
morph mesh material
animation accessors technique pass
skin bufferView program texture sampler
buffer shader image
7 glTF : RAW Datas for straight GL code • Buffers and BufferViews are fundamental building blocks • used to hold datas for vertices, indices, animations and more… • Buffer and bufferView properties match typed array specification • BufferViews may have a ELEMENT_ARRAY_BUFFER or ARRAY_BUFFER target property • Accessors refer to bufferViews, specify its type and support interleaving • Straight GL matching for program, texture, sampler, shader properties • No client behavior is mandated, apps can process glTF as they wish • one may prefer to load data progressively and possibly create multiple VBOs • or, all datas for an asset could be loaded at once to maximize buffers size.
8 glTF : Features • Version 0.6 • Specified & Implemented • Node • Mesh • Animation (TRS) • Technique, Pass, Program, Shader • Skinning • Camera • Light
9 glTF : Organized for efficiency
material material material
materials share techniques technique technique
pass set states and program pass pass
set states and program once per pass states program states program render primitives sharing same material
10 Compression : extension mechanism • Extensions implemented outside of the core specification • Similar to the way texture compression is supported with GL • Scope is mesh and animation compression • Work-in progress: • https://github.com/KhronosGroup/glTF/issues/230 • https://github.com/KhronosGroup/glTF/issues/61
11 Compression : Open3DGC •Khronos and MPEG collaboration •Royalty free •https://github.com/KhronosGroup/glTF/wiki/Open-3D-Graphics-Compression •Open3DGC Binary is an implementation of the MPEG-SC3DMC (Scalable Compression 3D Mesh Compression) • 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
12 Compression : Open3DGC •Features • Generic Attributes, POSITION, NORMAL, TEXCOORD, WEIGHTS… all supporting multiple sets… • Animation compression • Virtual City test scene (from 3DRT.com).
13 Compression : Open3DGC
Excerpt from Khaled Mammou contribution on glTF WIKI
14 glTF : Next steps • Morphing • Video • Compression extension • Multi-pass still considered for v1.0
15 glTF : Adoption •In Three.js dev Branch. Contribution from Tony Parisi - http://threejs.org/ •Cesium globe engine - http://cesiumjs.org/ • http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=3D%20Models.htm l&label=Showcases •Montage Studio - http://www.montagestudio.com/ •AMD Rest3D Project - https://github.com/amd/rest3d
16 Thank you
17 QA
18