wtf is glTF?
the runtime asset format for WebGL, OpenGL ES, and OpenGL
applications
compact representation
JSON for scene structure and other high-level constructs
binary mesh and animation data - little or no processing to drop glTF
data into client application
runtime neutral
can be used by any app or runtime – initial target is for WebGL-
accelerated applications
open specification; open process
Khronos Group initiative within the COLLADA working group
F. Robinet (lead), R. Arnaud, P. Cozzi, T. Parisi
http://gltf.gl/
8/22/20
13
http://www.tonyparisi.com
wtf would I care?
there is no open, comprehensive, vendor- and engine- neutral
format for publishing 3D data to web and mobile apps
COLLADA not designed for runtime delivery – bulky, XML-
based, intended for interchange, not playback
Autodesk FBX – proprietary
VRML, X3D, others - out of the mainstream and out of date
engine-specific formats (e.g. Three.js) on their own trajectories
WebGL content creation a.k.a. DEATHMATCH 3000
developers scramble to find exporters and importers, often build
custom pipeline tools per-project – film production approach on
web schedules and budgets
technical directors spend an inordinate amount of time hand-
coding basic features (cameras and lighting) that could and
should be done by artists in a 3D tool
8/22/20
13
http://www.tonyparisi.com
how does glTF help?
a “JPEG for 3D”
bridges the gap between existing 3D formats/tools and
today‟s GL based APIs
compact, efficient to load representation
balanced, pragmatic feature set
GL native data types require no additional processing
also includes common 3D constructs (hierarchy, cameras,
lights, common materials, animation )
reduces duplicated effort in content pipeline
a common publishing format for content tools
8/22/20
13
http://www.tonyparisi.com
Three.js glTF loader project
8/22/20
13
http://www.tonyparisi.com
currently a branch of the glTF project on Github
https://github.com/KhronosGroup/glTF
Branch „threejsloader‟
designed to be compatible with other Three.js example loaders
such as OBJ and COLLADA
e.g. http://threejs.org/examples/webgl_loader_collada.html
no external dependencies other than official glTF parser (webgl-tf-
loader.js)
demo version at SIGGRAPH
expect v1.0 feature complete in October
after completion, will submit a Github pull request for inclusion with
Three.js distribution
three.js glTF loader – project
status
8/22/20
13
http://www.tonyparisi.com
most glTF features are already supported
triangle meshes
optionally uses THREE.BufferGeometry for faster loading
materials – diffuse, specular, emissive, ambient, textures, environment maps
cameras – perspective and orthographic
lights – ambient, spot, point, directional
matrix transforms
scene structure
animation
Key frame/articulated only
shaders
uses “common profile” techniques - lighting models such as Phong and
Lambert, and their parameters, are mapped to existing Three.js material types
features TBD, in progress
skinned animations and morphs
arbitrary GLSL shaders (via THREE.ShaderMaterial)
glTF status
version 1.0 – hoping for full draft spec in early 2014
v1.0 scope
node hierarchy
cameras
lights
animations – key frames, skinning, morphs
common material techniques – Blinn, Phong, Lambert
user-defined shaders
external media (images & videos)
mesh compression as extensions post v1.0
multi-pass considered
8/22/20
13
http://www.tonyparisi.com
glTF specification process
specification driven by COLLADA working group at
Khronos
not an official standard - yet
spec work being done completely in the open
all features backed up by multiple implementations in
code
specification
https://github.com/KhronosGroup/glTF/blob/master/specificati
on/README.md
glTF repo with sample code and specification JSON
schema
https://github.com/KhronosGroup/glTF 8/22/20
13
http://www.tonyparisi.com