A WebGL scene in 30 mins

51
Create an Interactive 3D WebGL Scene

description

The slides from my talk at CologneJS in February 2014. The example code is available here: https://github.com/jensarps/cgnjs-feb-2014

Transcript of A WebGL scene in 30 mins

Page 1: A WebGL scene in 30 mins

Create an Interactive 3D WebGL Scene

Page 2: A WebGL scene in 30 mins

Create an Interactive 3D WebGL Scene

… in half an hour!

Page 3: A WebGL scene in 30 mins

http://www.flickr.com/photos/kevlar/5152987233

No Rocket Science!

Page 4: A WebGL scene in 30 mins

http://www.flickr.com/photos/kevlar/5152987233

No Rocket Science!

No Danger!

Page 5: A WebGL scene in 30 mins

Step 0:

Getting a Model

Page 6: A WebGL scene in 30 mins

Step 0: Getting a Model

Where from?

Model Repositories

Page 7: A WebGL scene in 30 mins

Step 0: Getting a Model

Where from?

Model Repositories

http://www.turbosquid.com/http://tf3dm.com/

Page 8: A WebGL scene in 30 mins

Step 0: Getting a Model

Where from?

Convert Game Assets

Page 9: A WebGL scene in 30 mins

Step 0: Getting a Model

Format

#1: Lightwave (.obj + .mtl)

Page 10: A WebGL scene in 30 mins

Step 0: Getting a Model

Format

#2: COLLADA (.dae)

Page 11: A WebGL scene in 30 mins

Step 0: Getting a Model

Format

#2: COLLADA (.dae)

http://sketchup.google.com/3dwarehouse/

Page 12: A WebGL scene in 30 mins

Step 0: Getting a Model

Considerations

Size/Complexity

License

Page 13: A WebGL scene in 30 mins

Step 0: Getting a Model

Tools

Blender

Page 14: A WebGL scene in 30 mins

Step 0: Getting a Model

Tools

Meshlab

Page 15: A WebGL scene in 30 mins

Step 1:

Loading into WebGL

Page 16: A WebGL scene in 30 mins

Step 1: Loading into WebGL

WebGL Wrappers/Libraries

Page 17: A WebGL scene in 30 mins

Step 1: Loading into WebGL

WebGL Wrappers/Libraries

three.js

Babylon.js

GLGE

Page 18: A WebGL scene in 30 mins

Step 1: Loading into WebGL

WebGL Wrappers/Libraries

three.js

Babylon.js

GLGE

Page 19: A WebGL scene in 30 mins

Step 1: Loading into WebGL

WebGL Wrappers/Libraries

All available on GitHub

Page 20: A WebGL scene in 30 mins

Step 2:

User Input

Page 21: A WebGL scene in 30 mins

Step 2: User Input

Wrappers/Libraries

three.js controls

Page 22: A WebGL scene in 30 mins

Step 2: User Input

Wrappers/Libraries

decoupled-input

Page 23: A WebGL scene in 30 mins

Step 2: User Input

Wrappers/Libraries

decoupled-input

https://github.com/jensarps/decoupled-input

Page 24: A WebGL scene in 30 mins

Step 3:

Adding some Spice

Page 25: A WebGL scene in 30 mins

Step 3: Adding some Spice

Visuals

ClearColor

Fog

Lights

Page 26: A WebGL scene in 30 mins

Step 3: Adding some Spice

Technical

Window resize

Pausing

Page 27: A WebGL scene in 30 mins

Step 4:

HTML5 Goodness

Page 28: A WebGL scene in 30 mins

Step 4: HTML5 Goodness

New APIs

Page 29: A WebGL scene in 30 mins

Step 4: HTML5 Goodness

New APIs

Fullscreen

Page 30: A WebGL scene in 30 mins

Step 4: HTML5 Goodness

New APIs

PointerLock

Page 31: A WebGL scene in 30 mins

Step 4: HTML5 Goodness

New APIs

GamePad

Page 32: A WebGL scene in 30 mins

Step 4: HTML5 Goodness

And More:

WebAudio

PageVisibility

SpeechRecognition

Page 33: A WebGL scene in 30 mins

Step 4: HTML5 Goodness

Tools:

https://github.com/toji/game-shim

Page 34: A WebGL scene in 30 mins

Step 5:

Collision Detection

Page 35: A WebGL scene in 30 mins

Step 5: Collision Detection

Many Concepts

Page 36: A WebGL scene in 30 mins

Step 5: Collision Detection

Many Concepts

Heightmap

Page 37: A WebGL scene in 30 mins

Step 5: Collision Detection

Many Concepts

Raycasting

Page 38: A WebGL scene in 30 mins

Step 6:

The Aftermath

Page 39: A WebGL scene in 30 mins

Step 6: The Aftermath

A Well-Performing Render Loop

Page 40: A WebGL scene in 30 mins

Step 6: The Aftermath

A Well-Performing Render Loop

1) Do everything inside of the loop.

Page 41: A WebGL scene in 30 mins

Step 6: The Aftermath

A Well-Performing Render Loop

2) Be kind to your memory.

Page 42: A WebGL scene in 30 mins

Step 6: The Aftermath

A Well-Performing Render Loop

3) Optimize hot functions.

Page 43: A WebGL scene in 30 mins

Step 6: The Aftermath

Read about Entity-Component Architecture

Page 44: A WebGL scene in 30 mins

Step 7:

Further

Page 45: A WebGL scene in 30 mins

Step 7: Further

Get Inspired!

Page 46: A WebGL scene in 30 mins

Step 7: Further

Get Inspired!

Read WebGL around the Nethttp://learningwebgl.com/blog/

Page 47: A WebGL scene in 30 mins

Step 7: Further

Get Inspired!

Follow three.js on G+https://plus.google.com/u/0/104300307601542851567/posts

Check out featured projectshttp://threejs.org/

Page 48: A WebGL scene in 30 mins

Step 7: Further

Play Around!

Page 49: A WebGL scene in 30 mins

Step 7: Further

Play Around!

Check out Jerome Etienne‘s three.xhttp://jeromeetienne.github.io/threex/

Page 50: A WebGL scene in 30 mins

Step 7: Further

Play Around!

Go shoot at balls:http://jensarps.github.io/shooting-at-balls/

Page 51: A WebGL scene in 30 mins

thanks!

blog: jensarps.decode: github.com/jensarps

social: google.com/+JensArps

the rest: google.com/search?q=Jens+Arps