glTF and rest3d
description
Transcript of glTF and rest3d
glTF and rest3d
Patrick CozziUniversity of PennsylvaniaCIS 565 - Fall 2013
Agenda
Asset FormatsTool, interchange, and runtime formats
glTF Content Pipeline rest3d
2
AssetFormats
3
Native Modeling Tool Formats
Examples
4
.lxo.blend .ma / .mb
Interchange Formats
5…
.fbx
.obj …
Interchange Formats
6
.fbx
Engine(Runtime)
.obj
??
Interchange Formats
Target tools, not the GPU, OpenGL, or Direct3D Example: COLLADA
XML + image files One index per attribute, not vertex Unsigned int indices Transform stack per node Polygons and splines Common profile materials Doesn’t specify image file format Lots of flexibility and indirection in animations and skins
7
Runtime Format
Optimized for use in an engine
8
Interchange format
Toolformat
Content Pipeline Runtimeformat
Engine
Engines
Engines are more than the runtime Example:
9
RuntimeC++
EditorC#
PipelineC++
Ships with the game
Used by developers, artists, etc.
“Tools”
“Engine”
Engine Examples
Unity (November 2013)
Runtime: ~500K lines of codeTools: ~500K
Frostbite (November 2013)
Engine + Pipeline: 1.7MEditor: 1.1M
10
glTF
11
glTF
“the runtime asset format for WebGL, OpenGL ES, and OpenGL”
jpg, mp3, mpeg, … what about 3D? Open standard Not ratified yet
12
glTF Goals
Easy and efficient to render
13
.json
Node hierarchy, materials, lights, cameras
.bin
• Geometry: vertices and indices
• Animation: key-frames• Skins: inverse-bind matrices
.glsl
Shaders
.png, .jpg, …
Textures
glTF Goals
Balanced Feature Set
Extensible
14
< <
glTF Goals
Code, Not Just SpecContent Pipeline is key to adoptionThree.js is key to adoption Implementations are needed for a sane spec
15
glTF Goals
CommunityGrassroots and transparency
16
https://github.com/KhronosGroup/glTF
glTF Goals
WebGL, OpenGL ES, and OpenGL Initial adoption - WebGL
17
glTF Schema
18
scene
node
camera mesh light
accessor
bufferView
buffer
material
technique texture
samplerimageprogram
shader
1
2
1 11
1 *
**
*1
1
*
*
*animation
skin*
1
glTF duckexample
Content Pipeline
19
Content Pipeline
Optimize and package assets for use with the engine
Several areasGeometryAnimation and skinsTextureShaders
20
Content Pipeline
Cleanup redundancies created by artist/exportersRemove unused nodes, meshes, materials,
techniques, etc.Remove unused vertices. Remove duplicate
verticesRemove duplicate materials and techniquesCombine primitives with the same material
and vertex format21
Content Pipeline: Geometry
TriangulationPolygons TrianglesHigher-order surfaces
22
Content Pipeline: Geometry
DeindexOne index per attribute
one index per vertex
23
positions
normals
position indices: [0, 1, 2, 0, 2, 3]
normal indices: [0, 0, 0, 0, 0, 0]
positions
normals
indices: [0, 1, 2, 0, 2, 3]
Content Pipeline: Geometry
Flatten node hierarchy
24
vertices ... ...
Content Pipeline: Geometry
Split meshesSo indices fit into unsigned short
25
indices: [0, 1, 2, ..., 64K - 3, 64K - 2, 64K - 1, 3, 4, 5, 64K, 64K + 1, 64K + 2, ...]
vertices ...
vertices ...
indices: [0, 1, 2, ..., 64K - 3, 64K - 2, 64K - 1, 3, 4, 5, ...]
indices: [0, 1, 2, ...]
Content Pipeline: Geometry
CompressionOpen3DGC (TFAN)Pre-gzip for web deploymentEasy tricks
Minify JSON, e.g., whitespace Exclude default values, e.g., identity matrix Uniform scale instead of non-uniform scale 4x3 matrices instead of 4x4 Quaternions are normalized, only store 3 components
26
27
Content Pipeline: Geometry
Generate LODs
Content Pipeline: Geometry
OthersConsistent up axis
What’s up? y? z? What’s forward?Re-order for the pre- and post-vertex-shader
caches Interleave vertex attributes?
Content Pipeline: Animation and Skins
AnimationsResample key-framesCompress like geometry
SkinsLimit joints affecting a vertexSplit meshes
30
Content Pipeline: Texture
Create texture atlas Increases batch size. Reduces individual files
31
Content Pipeline: Texture
Generate mipmapsHigher quality than doing it online Increase size by 1/3
32
Content Pipeline: Texture
Convert image formatsFor example, .bmp to .jpg
Compress imagesDXT / S3TCETC2
33
Content Pipeline: Shaders
Generate shadersCommon profile -> GLSLg-buffer formats
34
Content Pipeline: Shaders
Optimize shadersMinify too?
35
Content Pipeline
Where is the parallelism?
36
rest3d
37
rest3d
Content Pipeline meets the cloud
38
rest3d
Manage and process
Modeling Tools Engines
Closing
glTF properties not covered todayMorph targetsMultipassCube maps, mipmapsLights, cameras
ThemesKeep the runtime simplePush work to the Content Pipeline
39