intro to three - mypages.valdosta.edu · intro to three.js dr. mihail november 2, 2015 (dr. mihail)...

28
Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18

Upload: others

Post on 17-Feb-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Intro to THREE.js

Dr. Mihail

November 2, 2015

(Dr. Mihail) THREE.js November 2, 2015 1 / 18

Page 2: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 3: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 4: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 5: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 6: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 7: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 8: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 9: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 10: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 11: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 12: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

What is THREE

High-level library built on top of WebGL. THREE makes it possible toauthor complex 3D graphics with minimal effort.

Features:

Highly object oriented

Many built in effects

Implements the concept of “scene” to which you can add/removeobjects during runtime

Cameras

Animation (skinning, forward kinematics, inverse kinematics, morph,keyframe, etc.)

Lights

Materials

Shaders (access to full GLSL)

Geometry (plane, cube, sphere, torus, 3D text)

Data loaders (textuers and models)

(Dr. Mihail) THREE.js November 2, 2015 2 / 18

Page 13: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

THREE

Basic idea

Scene

Camera

Lights

Action

(Dr. Mihail) THREE.js November 2, 2015 3 / 18

Page 14: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Download

Download three.js

threejs.org

The download will contain all the source code, including examples, etc.You need the ./build folder.

(Dr. Mihail) THREE.js November 2, 2015 4 / 18

Page 15: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

HTML

Basics: index.html

1

2 <!DOCTYPE html >

3 <html >

4 <head >

5 <link rel="stylesheet" href="./style.css">

6 <script src="./three.js" ></script >

7 </head >

8 <body >

9 <script src="./main.js" ></script >

10 </body >

11 </html >

(Dr. Mihail) THREE.js November 2, 2015 5 / 18

Page 16: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

HTML

Basics: index.html

1

2 <!DOCTYPE html >

3 <html >

4 <head >

5 <link rel="stylesheet" href="./style.css">

6 <script src="./three.js" ></script >

7 </head >

8 <body >

9 <script src="./main.js" ></script >

10 </body >

11 </html >

(Dr. Mihail) THREE.js November 2, 2015 6 / 18

Page 17: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

HTML

Basics: style.css

1 canvas {

2 position: fixed;

3 top: 0;

4 left: 0;

5 }

(Dr. Mihail) THREE.js November 2, 2015 7 / 18

Page 18: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

HTML

Basics: main.js

1

2 // initialize WebGL and THREE renderer

3

4 var width = window.innerWidth;

5 var height = window.innerHeight;

6

7

8 var renderer = new THREE.WebGLRenderer ({

antialias: true });

9 renderer.setSize(width , height);

10 document.body.appendChild(renderer.domElement);

(Dr. Mihail) THREE.js November 2, 2015 8 / 18

Page 19: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

HTML

Basics: main.js

1

2 // initialize WebGL and THREE renderer

3

4 var width = window.innerWidth;

5 var height = window.innerHeight;

6

7

8 var renderer = new THREE.WebGLRenderer ({

antialias: true });

9 renderer.setSize(width , height);

10 document.body.appendChild(renderer.domElement);

(Dr. Mihail) THREE.js November 2, 2015 9 / 18

Page 20: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Scene

Basics: main.js

1

2 // create scene object

3 var scene = new THREE.Scene;

4

5 // create simple geometry and add to scene

6 var cubeGeometry = new THREE.CubeGeometry (15,15,

15);

7 var cubeMaterial = new THREE.MeshLambertMaterial

({ color: 0xaaff44 });

8 var cube = new THREE.Mesh(cubeGeometry ,

cubeMaterial);

9 scene.add(cube);

(Dr. Mihail) THREE.js November 2, 2015 10 / 18

Page 21: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Camera

Basics: main.js

1 // create perspective camera

2 var camera = new THREE.PerspectiveCamera (45,

width / height , 0.1, 10000);

3 camera.position.y = 16;

4 camera.position.z = 40;

5 // add to scene and renderer

6 scene.add(camera);

7 renderer.render(scene , camera);

8 // create the view matrix (lookAt)

9 camera.lookAt(cube.position);

(Dr. Mihail) THREE.js November 2, 2015 11 / 18

Page 22: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Lights

Basics: main.js

1 // add lighting and add to scene

2 var pointLight = new THREE.PointLight (0 xaabbcc);

3 pointLight.position.set(0, 16, 16);

4 scene.add(pointLight);

(Dr. Mihail) THREE.js November 2, 2015 12 / 18

Page 23: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Action

Basics: main.js

1 renderer.render(scene , camera);

2 function render () {

3 renderer.render(scene , camera);

4 requestAnimationFrame(render);

5 cube.rotation.y+=0.01; // animate

6 }

7 render ();

(Dr. Mihail) THREE.js November 2, 2015 13 / 18

Page 24: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Textures

Basics: main.js

1 var cubeMaterial = new THREE.

MeshLambertMaterial ({ map: THREE.ImageUtils.

loadTexture(’crate.jpg’)});

(Dr. Mihail) THREE.js November 2, 2015 14 / 18

Page 25: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Models

3D Models

Asynchronously:

Load the model’s texture maps

Load the model

Add to scene

(Dr. Mihail) THREE.js November 2, 2015 15 / 18

Page 26: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Textures

Basics: main.js

1 var texture = new THREE.Texture ();

2 var loader = new THREE.ImageLoader( manager );

3 loader.load( ’UV_Grid_Sm.jpg’, function ( image )

{

4 texture.image = image;

5 texture.needsUpdate = true;

6 } );

(Dr. Mihail) THREE.js November 2, 2015 16 / 18

Page 27: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Model

Housekeeping

1 var manager = new THREE.LoadingManager ();

2 manager.onProgress = function ( item , loaded ,

total ) {

3 console.log( item , loaded , total );

4 };

5 var onProgress = function ( xhr ) {

6 if ( xhr.lengthComputable ) {

7 var percentComplete = xhr.loaded / xhr.total

* 100;

8 console.log( Math.round(percentComplete , 2) +

’% downloaded ’ );

9 }

10 };

11 var onError = function ( xhr ) { };

(Dr. Mihail) THREE.js November 2, 2015 17 / 18

Page 28: Intro to THREE - mypages.valdosta.edu · Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18. What is THREE High-level library built on top

Model

Loading the model

1 var loader = new THREE.OBJLoader( manager );

2 loader.load( ’male02.obj’, function ( object ) {

3 object.scale.set(0.5, 0.5, 0.5);

4 object.position.y = -50;

5 object.traverse( function ( child ) {

6 if ( child instanceof THREE.Mesh ) {

7 child.material.map = texture;

8 }

9 } );

10 scene.add( object );

11 }, onProgress , onError );

(Dr. Mihail) THREE.js November 2, 2015 18 / 18