Et rammeverk for å lage WebGL-ting.
For å lage en snurrende kube trenger du ganske mye kode
Et nivå som ligger nærmere måten vi prater om 3D-verdenen på.
Three.js kommer med mange ulike måter å rendre på, men den vi skal bry oss om er WebGL rendereren
Three.js kommer med mange ulike måter å rendre på, men den vi skal bry oss om er WebGL rendereren
renderer = new THREE.WebGLRenderer();renderer.setSize(HEIGHT,WIDTH);
Three.js kommer med mange ulike måter å rendre på, men den vi skal bry oss om er WebGL rendereren
renderer = new THREE.WebGLRenderer();renderer.setSize(HEIGHT,WIDTH);
Three.js har også CSS2D/3DRenderer, CanvasRenderer og SVGRenderer
For at en renderer skal ha noe å tegne trenger den en scene.
For at en renderer skal ha noe å tegne trenger den en scene.
scene = new THREE.Scene();// ...scene.add(someObject);
For at en renderer skal ha noe å tegne trenger den en scene.
scene = new THREE.Scene();// ...scene.add(teapot);
For å komplettere 3D-opplevelsen trenger rendereren også noe som kan se på scena: et kamera.
For å komplettere 3D-opplevelsen trenger rendereren også noe som kan se på scena: et kamera.
Kameraet bestemmer hvordan 3D-verdenen blir projisert på skjermen.
For å komplettere 3D-opplevelsen trenger rendereren også noe som kan se på scena: et kamera.
Kameraet bestemmer hvordan 3D-verdenen blir projisert på skjermen.
Det finnes mange ulike kamera i three.js, vi kommer til å bruke et som heter PerspectiveCamera
For å komplettere 3D-opplevelsen trenger rendereren også noe som kan se på scena: et kamera.
Kameraet bestemmer hvordan 3D-verdenen blir projisert på skjermen.
Det finnes mange ulike kamera i three.js, vi kommer til å bruke et som heter PerspectiveCamera
camera = new THREE.PerspectiveCamera( fov, aspectRatio, near, far)
Når vi har disse tre tingene kan vi rendre en vilkårlig 3D-verden:
Når vi har disse tre tingene kan vi rendre en vilkårlig 3D-verden:
renderer.render(scene, camera);
Når vi har disse tre tingene kan vi rendre en vilkårlig 3D-verden:
renderer.render(scene, camera);
Når vi har dette på plass vil resten gå ut på å legge til objekter til scena slik at rendereren kan rendre det til skjermen.
I three.js har alle objekter noen fellestrekk
I three.js har alle objekter noen fellestrekk
(... og en del andre ting som er litt mer nisje)
I tillegg til en del spesialobjekter (som feks scene, camera og lights) har three.js en rekke generiske objekter
I tillegg til en del spesialobjekter (som feks scene, camera og lights) har three.js en rekke generiske objekter.
Generiske objekter kan lages ved å kombinere en geometri og et materiale.
Geometrier er three.js sin måte å representere form på.
Geometrier er three.js sin måte å representere form på.
Det finnes mange ulike geometrier innebygd:
Geometrier er three.js sin måte å representere form på.
Det finnes mange ulike geometrier innebygd:
geometry = new THREE.BoxGeometry(1, 1, 1);
Geometrier er three.js sin måte å representere form på.
Det finnes mange ulike geometrier innebygd:
geometry = new THREE.BoxGeometry(1, 1, 1);
De fleste 3D-former har en geometri-funksjon i three.js
Materialer i three.js er måten objekter får utseende.
Materialer i three.js er måten objekter får utseende.
Ulike materialer har ulike egenskaper og interaksjoner med andre objekter.
Materialer i three.js er måten objekter får utseende.
Ulike materialer har ulike egenskaper og interaksjoner med andre objekter.
Det finnes egne materialer for spesielle lysmodeller eller materialer som bruker custom shadere.
Materialer i three.js er måten objekter får utseende.
Ulike materialer har ulike egenskaper og interaksjoner med andre objekter.
Det finnes egne materialer for spesielle lysmodeller eller materialer som bruker custom shadere.
material = new THREE.MeshBasicMaterial({color: 0xFF0000});
Når du har en geometri og et materiale kan du lage et objekt.
Når du har en geometri og et materiale kan du lage et objekt.
Det finnes også ulike objekt-typer, men den vanligste er Mesh:
Når du har en geometri og et materiale kan du lage et objekt.
Det finnes også ulike objekt-typer, men den vanligste er Mesh:
object = new THREE.Mesh(geometry, material);scene.add(object);
thee.js inneholder en del ekstrastasj
thee.js inneholder en del ekstrastasj
Det er kjedelig å bare lage statiske modeller.
Det er kjedelig å bare lage statiske modeller.
Heldigvis har three.js støtte for å endre på ting.
Det er kjedelig å bare lage statiske modeller.
Heldigvis har three.js støtte for å endre på ting.
renderer.render(scene, camera);cube.position.x = 10;renderer.render(scene, camera);// hurra, cube har flyttet seg 10 langs x-aksen
Fordi objects i three.js er "vanlig" JS, kan vi bruke vanlige JS-teknikker for å animere
Fordi objects i three.js er "vanlig" JS, kan vi bruke vanlige JS-teknikker for å animere
function render() { requestAnimationFrame(render); // move stuff around renderer.render(scene, camera);}
Dere får en veldig liten kodesnutt utdelt som dere kan bruke som utgangspunkt for oppgavene dere skal gjennom i dag.
Dere får en veldig liten kodesnutt utdelt som dere kan bruke som utgangspunkt for oppgavene dere skal gjennom i dag.
// Henter inn three.jsconst THREE = require("three");function init() { // Her kan du putte kode som bare skal gjøres én gang}function render() { // sørger for å køe et nytt kall til render requestAnimationFrame(render); // Her kan du putte kode som skal gjøres hver "frame", // som feks renderer.render(); // eller box.position.x += 10}init();render();
Keyboard shortcuts
↑, ←, Pg Up, k | Go to previous slide |
↓, →, Pg Dn, Space, j | Go to next slide |
Home | Go to first slide |
End | Go to last slide |
Number + Return | Go to specific slide |
b / m / f | Toggle blackout / mirrored / fullscreen mode |
c | Clone slideshow |
p | Toggle presenter mode |
t | Restart the presentation timer |
?, h | Toggle this help |
Esc | Back to slideshow |