Slik lærer du Three.js for spillutvikling

Three.js er et open-source JavaScript-bibliotek / API som brukes til å lage og vise animert 3D-datamaskingrafikk i en nettleser, kompatibel med HTML5-lerretelementet, WebGL og SVG. I denne Hvordan Lære artikkelen vil vi utforske egenskapene til denne motoren og dele ressurser og forslag for å hjelpe deg med å begynne å utvikle spill med det med en gang. 


Hvorfor bruke Three.js?

Siden Three.js ble først utgitt av Ricardo Cabello til GitHub i 2010, har koden base blitt kontinuerlig opprettholdt og forbedret av et voksende og støttende samfunn. Settet med innebygde funksjoner er omfattende, og inkluderer:

  • renderers (Canvas, WebGL og SVG)
  • scener (kan endres ved kjøring, importeres og eksporteres)
  • kameraer (perspektiv og ortografisk)
  • lys (punkt, punkt, retning og omgivelse; objekter kan kaste / motta skygger)
  • teksturer og materialer (Lambert, Phong, etc., inkludert støtte for bump kart og spekulative kart)
  • geometrier (inkludert linjer, fly, kuber, kuler, polyeder, sylindre, partikkelsystemer og 3D-tekst)
  • verktøy for å eksportere Three.js-kompatible JSON-filer fra 3D-modelleringsprogramvare (som Blender, 3ds Max eller Maya) og importere filer (for eksempel Wavefront (.obj) eller Collada (.dae)) direkte inn i en scene
  • shaders (gir full tilgang til OpenGL Shading Language for mer direkte kontroll av grafikk pipeline)
  • et bibliotek med shaders etter behandling (inkludert blomstring, uskarphet, kantdeteksjon, Fresnel, sepia og vignett)
  • et bibliotek med stereoskopiske effekter (Anaglyph, Parallax / Cross-eyed og Oculus Rift)

Over 100 eksempler som illustrerer disse funksjonene (og mer) er inkludert i hovedregisteret, og mange andre nettsteder gir samlinger av eksempler med kildekoden tilgjengelig. Dessuten, siden biblioteket er skrevet i Javascript, er det enkelt å komme seg opp og løpe, samt å distribuere arbeidet ditt.


Merkbare spill og visualiseringer

HexGL

Et futuristisk racing spill laget av Thibaut Despoulain:


Trigger Rally

Et bil racing spill laget av Jasmine Kent:


Relaterte utviklingsartikler finnes på Jasmines Gamasutra-blogg.

ChuClone

En 2.5D-plattformspiller gjengitt i 3D, med et innebygd live level editor, opprettet av Mario Gonzalez:


Marmorbord

Et marmor / fotballspill laget av Jerome Etienne:

På avveie

Et labyrintspill laget av Rye Terrell:

Cube Slam

Et 3D ping-pong spill som inkorporerer videochatt i spillet, laget av Google:


Mer informasjon finner du på spillets Chrome-eksperimentside og denne bak-scenen-artikkelen.

Finn veien til OZ

En interaktiv reise laget av Walt Disney og UNIT9


Mer informasjon er tilgjengelig på spillets Chrome Experiments-side.


Starter

Siden Three.js er et Javascript-bibliotek, er det spesielt enkelt å sette opp utviklingsmiljøet: de eneste kravene er en tekstredigerer og en nettleser. Når det er sagt, vil tekstredigerere med funksjoner som syntaxutheving / -folding, braketsammenstilling, et dokumentkart og så videre - som Notepad ++ eller Sublime Text - gi en bedre kodingserfaring.

Når det gjelder nettlesere, har både Google Chrome og Mozilla Firefox utmerket WebGL-støtte. Google Chrome har et spesielt nyttig sett med innebygde utviklerverktøy som i stor grad kan forenkle arbeidsflyten, for eksempel en konsoll som kan brukes til feilsøking og inspeksjon av Javascript-verdier og objekter, og arbeidsområdeinnstillinger som lar deg redigere og lagre kildefiler fra nettleseren. Flere detaljer finner du på Chrome DevTools-siden.

Tips: Det er også mulig å skrive kode ved hjelp av Three.js helt online, ved hjelp av tjenester som jsFiddle, som vist i dette eksemplet. Dette alternativet brukes imidlertid vanligvis kun til å dele eksempler eller demonstrasjoner med små mengder kode.

For å sette opp Three.js, gå først til GitHub repo. Det vil være en knapp som sier "Last ned ZIP" som lar deg laste ned all koden i depotet som en ZIP-fil. (Det finnes andre alternativer, for eksempel kloning eller forking av depotet ved hjelp av Git, som er unødvendig for den gjennomsnittlige brukeren. Disse alternativene er først og fremst nyttige bare hvis du planlegger å bidra til kildekoden eller dokumentasjonen på nettet.)

Relaterte innlegg
  • Git og GitHub for spillutviklere

Når du har lastet ned og pakket ut filen i en katalog du har valgt, er det et viktig steg igjen før du kan se de fleste eksemplene på din egen datamaskin. Mange Three.js-prosjekter innebærer å laste inn innhold fra eksterne filer (for eksempel bilder), men av sikkerhetshensyn begrenser nettlesere denne oppførselen som standard. De to alternativene for å løse dette problemet er å enten endre sikkerhetsinnstillingene i nettleseren din, eller å kjøre filer fra en lokal server.

Det tidligere alternativet er det mest enkle (for eksempel kan endring av innstillingene for Google Chrome i Windows oppnås ved å opprette en snarvei for Chrome og redigere banen for å inkludere flagget --allow-fil-access-fra-filer). Instruksjoner for begge alternativene finnes i den offisielle wiki, på siden med tittelen Slik kjører du ting lokalt.

Javascript

Three.js er skrevet i Javascript, så det anbefales at du har et arbeidskunnskap om dette språket. Det finnes et mylder av ressurser fritt tilgjengelig over Internett for dette; To spesielt fremragende interaktive ressurser er:

  • Codecademy, som inneholder et stort antall interaktive leksjoner med responsiv og intelligent tilbakemelding, samt en brukervennlig ordliste
  • Eloquent Javascript, en gratis digital lærebok skrevet av Marijn Haverbeke, som inkluderer et interaktivt kodemiljø som kjører alle, inneholder eksempler og lar leseren redigere og eksperimentere med eksempelkoden

Three.js

For å lære å sette opp en grunnleggende scene i Three.js (inkludert en diskusjon om scener, kameraer, renderere, masker og animasjonsløkken, besøk: Den offisielle håndboken. En annen god introduksjon til å lage en grunnleggende scene er artikkelen Komme i gang med Three.js av Paul Lewis

En mer grundig innledende undersøkelse av Three.js kapasitet er den utmerkede presentasjonen av James Williams (en video og lysbildefremvisning) ved Introduksjon til WebGL og Three.js.


Neste skritt

Dokumentasjonen Three.js, tilgjengelig på http://threejs.org/docs/, er et pågående arbeid, men et godt første sted å få en ide for mange av de tilgjengelige funksjonene.

En mer omfattende måte å lære om bibliotekets indre arbeider er å bla gjennom kildekoden til den offisielle samlingen av eksempler på http://threejs.org/examples/, som ofte heter tittelen på biblioteket de mest fremtredende funksjon. En annen ressurs, som består av forenklet og grundig kommentert eksempler skrevet for nybegynnere, er samlingen på http://stemkoski.github.io/Three.js/. Også mange Three.js-prosjekter blir annonsert på Twitter med #ThreeJS hashtag eller på Three.js subreddit.

To spesielt imponerende og inspirerende samlinger av avanserte Three.js-prosjekter er:

  • AlteredQualia, skapt av Branislav Ulicny (@alteredq, en av de største bidragsyterne til Three.js biblioteket)
  • JavaScript + WebGL, opprettet av Klas Kroon (aka OutsideOfSociety, @oosmoxiecode)

Noen nettsteder og blogger som diskuterer utvikling og har ofte Three.js-prosjekter inkluderer:

  • Lære WebGL, opprinnelig opprettet av Giles Thomas; Nåværende redaktør er Tony Parisi
  • Lære Three.js, skrevet av Jerome Etienne
  • japh (r) s Three.js innlegg, skrevet av Chris Strom

For å lære mer om grunnlaget for 3D-datagrafikk, sjekk ut Interactive 3D Graphics, et gratis online kurs undervist av Eric Haines som inneholder videoforelesninger og interaktive programmeringsøvelser ved hjelp av Three.js.

Hvis du trenger å inkorporere funksjonalitet utover det som tilbys av Three.js, er det enkelt (og vanlig praksis) å inkorporere ytterligere Javascript-biblioteker, for eksempel:

  • Tween.js: et bibliotek for automatisk interpolering av verdier, nyttig for jevne animasjoner
  • Physi.js: en fysikkmotor designet for bruk med Three.js
  • dat.GUI: et lett grafisk brukergrensesnitt for å endre variabler
  • Gamepad.js: et bibliotek som forenkler behandling av innspill fra gamepads og joysticks

Hvis du vil lage avanserte grafiske effekter utover de som er inkludert i Three.js, må du lære å skrive shaders, som er funksjoner som kjører direkte på GPU. To gode introduksjoner til shaders, skrevet spesielt for brukere av Three.js, er:

  • Intro til Pixel Shaders i Three.js, skrevet av Felix Turner
  • En introduksjon til Shaders, skrevet av Paul Lewis

Til slutt, hvis du er interessert i å distribuere prosjektet ditt til Android eller iOS, er Ludeis CocoonJS en plattform som gjør akkurat det. Prosessen er veldokumentert og relativt enkelt, siden det meste av arbeidet er automatisert av CocoonJS Cloud Compilation System.


Hvor å gå for hjelp

Hvis du har et spørsmål som du ikke kan finne ut ved å se på eksemplene eller ressursene ovenfor, er stedet å gå for hjelp Stack Overflow, det fremste spørsmålet og svarstedet for profesjonelle og entusiastiske programmerere. Først, søk for å se om spørsmålet ditt allerede var spurt; Hvis ikke, registrer deg for en konto og spør den!


Konklusjon

Med disse ressursene til din disposisjon, er det på tide å begynne å skape! Three.js har et aktivt og levende samfunn, så du bør alltid gjerne stille spørsmål, delta i diskusjonene og presentere arbeidet ditt. Lykke til deg i dine bestrebelser!