Intro to THREE.Js

Intro to THREE.Js

Intro to THREE.js Dr. Mihail November 2, 2015 (Dr. Mihail) THREE.js November 2, 2015 1 / 18 Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects 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) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. (Dr. Mihail) THREE.js November 2, 2015 2 / 18 Many built in effects Implements the concept of \scene" to which you can add/remove objects 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) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented (Dr. Mihail) THREE.js November 2, 2015 2 / 18 Implements the concept of \scene" to which you can add/remove objects 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) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects (Dr. Mihail) THREE.js November 2, 2015 2 / 18 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) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects during runtime (Dr. Mihail) THREE.js November 2, 2015 2 / 18 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) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects during runtime Cameras (Dr. Mihail) THREE.js November 2, 2015 2 / 18 Lights Materials Shaders (access to full GLSL) Geometry (plane, cube, sphere, torus, 3D text) Data loaders (textuers and models) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects during runtime Cameras Animation (skinning, forward kinematics, inverse kinematics, morph, keyframe, etc.) (Dr. Mihail) THREE.js November 2, 2015 2 / 18 Materials Shaders (access to full GLSL) Geometry (plane, cube, sphere, torus, 3D text) Data loaders (textuers and models) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects during runtime Cameras Animation (skinning, forward kinematics, inverse kinematics, morph, keyframe, etc.) Lights (Dr. Mihail) THREE.js November 2, 2015 2 / 18 Shaders (access to full GLSL) Geometry (plane, cube, sphere, torus, 3D text) Data loaders (textuers and models) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects during runtime Cameras Animation (skinning, forward kinematics, inverse kinematics, morph, keyframe, etc.) Lights Materials (Dr. Mihail) THREE.js November 2, 2015 2 / 18 Geometry (plane, cube, sphere, torus, 3D text) Data loaders (textuers and models) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects during runtime Cameras Animation (skinning, forward kinematics, inverse kinematics, morph, keyframe, etc.) Lights Materials Shaders (access to full GLSL) (Dr. Mihail) THREE.js November 2, 2015 2 / 18 Data loaders (textuers and models) What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects 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) (Dr. Mihail) THREE.js November 2, 2015 2 / 18 What is THREE High-level library built on top of WebGL. THREE makes it possible to author complex 3D graphics with minimal effort. Features: Highly object oriented Many built in effects Implements the concept of \scene" to which you can add/remove objects 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 THREE Basic idea Scene Camera Lights Action (Dr. Mihail) THREE.js November 2, 2015 3 / 18 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 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 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 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 HTML Basics: main.js 1 2// initialize WebGL andTHREE renderer 3 4 var width= window.innerWidth; 5 var height= window.innerHeight; 6 7 8 var renderer= newTHREE.WebGLRenderer({ antialias: true}); 9 renderer.setSize(width, height); 10 document.body.appendChild(renderer.domElement); (Dr. Mihail) THREE.js November 2, 2015 8 / 18 HTML Basics: main.js 1 2// initialize WebGL andTHREE renderer 3 4 var width= window.innerWidth; 5 var height= window.innerHeight; 6 7 8 var renderer= newTHREE.WebGLRenderer({ antialias: true}); 9 renderer.setSize(width, height); 10 document.body.appendChild(renderer.domElement); (Dr. Mihail) THREE.js November 2, 2015 9 / 18 Scene Basics: main.js 1 2// create scene object 3 var scene= newTHREE.Scene; 4 5// create simple geometry and add to scene 6 var cubeGeometry= newTHREE.CubeGeometry(15,15, 15) ; 7 var cubeMaterial= newTHREE.MeshLambertMaterial ({ color: 0xaaff44}); 8 var cube= newTHREE.Mesh(cubeGeometry, cubeMaterial); 9 scene.add(cube); (Dr. Mihail) THREE.js November 2, 2015 10 / 18 Camera Basics: main.js 1// create perspective camera 2 var camera= newTHREE.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 Lights Basics: main.js 1// add lighting and add to scene 2 var pointLight= newTHREE.PointLight(0xaabbcc); 3 pointLight.position.set(0, 16, 16); 4 scene.add(pointLight); (Dr. Mihail) THREE.js November 2, 2015 12 / 18 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 Textures Basics: main.js 1 var cubeMaterial= newTHREE. MeshLambertMaterial({ map:THREE.ImageUtils. loadTexture('crate.jpg')}); (Dr. Mihail) THREE.js November 2, 2015 14 / 18 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 Textures Basics: main.js 1 var texture= newTHREE.Texture(); 2 var loader= newTHREE.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 Model Housekeeping 1 var manager= newTHREE.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 Model Loading the model 1 var loader= newTHREE.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 instanceofTHREE.Mesh){ 7 child.material.map= texture; 8 } 9 } ); 10 scene.add( object); 11 }, onProgress, onError); (Dr.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    28 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us