glTF and rest3d

Preview:

DESCRIPTION

glTF and rest3d. Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2013. Agenda. Asset Formats Tool, interchange, and runtime formats glTF Content Pipeline rest3d. Asset Formats. Native Modeling Tool Formats. .blend. .ma / . mb. .lxo. Examples. Interchange Formats. .fbx - PowerPoint PPT Presentation

Citation preview

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

Recommended