Three.js

Three.js on usealle selaimelle yhteensopiva JavaScript-kirjasto ja sovellusrajapinta (API), jota käytetään animoidun 3D-tietokonegrafiikan luomiseen ja näyttämiseen verkkoselaimessa WebGL:n avulla. Lähdekoodia isännöidään GitHubin arkistossa.

Yleiskatsaus 
Three.js mahdollistaa graafisten prosessointiyksiköiden (GPU) kiihdytettyjen 3D-animaatioiden luomisen käyttämällä JavaScript- kieltä osana verkkosivustoa ilman selainlaajennuksiin turvautumista.   Tämä on mahdollista WebGL:n avulla.

Korkean tason kirjastot, kuten Three.js tai GLGE, SceneJS, PhiloGL ja monet muut, mahdollistavat monimutkaisten 3D-tietokoneanimaatioiden tekemisen selaimessa näytettäväksi ilman perinteisen itsenäisen sovelluksen tai selainlaajennuksen vaatimaa vaivaa.

Historia 
Three.js:n ensimmäisen version julkaisi kerran Ricardo Cabello GitHubissa huhtikuussa 2010. Three.js:n inspiraatio voidaan jäljittää hänen osallistumiseensa demoskeneen 2000-luvun alussa.  Koodi kehitettiin alun perin ActionScript- kielellä, ja se siirrettiin myöhemmin JavaScriptiin vuonna 2009. Cabellon mielestä oli kaksi vahvaa syytä, jotka perustelivat siirtymisen pois ActionScriptistä: JavaScript tarjosi alustariippumattomuuden ja toiseksi JavaScriptillä kirjoitettuja sovelluksia ei tarvitse kääntää kehittäjän toimesta, toisin kuin Flash-sovelluksia. Muita Cabellon panostuksia ovat API-suunnittelu, CanvasRenderer, SVGRenderer sekä ensisijainen vastuu eri osallistujien kontribuutioiden yhdistämisestä projektiin.

WebGL:n myötä Paul Brunt pystyi toteuttamaan uuden renderöintiteknologian, koska Three.js suunniteltiin niin, että renderöintikoodi oli suunniteltu moduuliksi.  Branislav Uličný aloitti Three.js:n kanssa vuonna 2010 julkaistuaan useita WebGL- demoja omalle sivustolleen. Hän halusi, että Three.js:n WebGL- renderöintiominaisuudet ylittävät CanvasRendererin tai SVGRendererin ominaisuudet.  Hänen tärkeimmät panostuksensa ovat materiaalit, varjostimet ja jälkikäsittely.

Kun WebGL 1.0 esiteltiin Firefox 4:ssä maaliskuussa 2011, Joshua Koo liittyi mukaan projektiin. Hän rakensi ensimmäisen Three.js-demonsa 3D-tekstiä varten syyskuussa 2011.  Hänen kontribuutionsa liittyvät usein geometrian luomiseen.

Ominaisuudet 
Three.js sisältää seuraavat ominaisuudet: 

 Vaikutukset: Anaglyfi, ristisilmäinen ja parallaksieste.
 Kohtaukset: lisää ja poista objekteja ajon aikana; sumu
 Kamerat: perspektiivi ja ortografia; ohjaimet: ohjauspallo, FPS, polku ja paljon muuta
 Animaatio: ankkurit, eteenpäin suuntautuva kinematiikka, käänteinen kinematiikka, morfi ja avainkehys
 Valot: ympäristö-, suunta-, piste- ja kohdevalot; varjot: heittää ja ottaa vastaan
 Materiaalit: Lambert, Phong, sileä varjostus, tekstuurit ja paljon muuta
 Shaders: pääsy kaikkiin OpenGL Shading Language ( GLSL ) -ominaisuuksiin: linssin heijastus, syvyyspäästö ja laaja jälkikäsittelykirjasto
 Objektit: verkot, hiukkaset, spriitit, viivat, nauhat, luut ja paljon muuta - kaikki yksityiskohtaisesti
 Geometria: taso, kuutio, pallo, torus, 3D-teksti ja paljon muuta; modifiointiaineet: sorvi, suulakepuristus ja putki
 Tuonti/vienti: alkuperäinen serialisointi/deserialisointi JSON-, glTF-, OBJ-, USDZ- ja muiden kautta.
 Apuohjelmat: täysi sarja aika- ja 3D-matemaattisia toimintoja, mukaan lukien frustum, matriisi, quaternion, UVs ja paljon muuta
 Tuki: API-dokumentaatio on rakenteilla. Julkinen foorumi ja wiki ovat täydessä toiminnassa.
 Esimerkkejä: yli 150 tiedostoa koodausesimerkkejä sekä kirjasimia, malleja, tekstuuria, ääniä ja muita tukitiedostoja
 Vianetsintä: Stats.js,  WebGL Inspector,  Three.js Inspector 
 Virtuaalinen ja lisätty todellisuus WebXR:n kautta 

Three.js toimii kaikissa WebGL 1.0:n tukemissa selaimissa. Three.js on saatavilla MIT-lisenssillä.

Lähteet

Kirjallisuutta

 
 
  - "Three.js can make game development easier by taking care of low-level details"

Aiheesta muualla 
 ThreeJS Journey - Learning WebGL with Three.js

Grafiikkakirjastot
Alustariippumattomat ohjelmat
Vuoden 2010 ohjelmistot