webgl med three.js: stofvirkninger & partikler

, webgl med three.js: strukturer og partikler,,,,, andel,,,,,,,, 111,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, siden dens indførelse, 3d grafikken i browseren har været et populært emne.men hvis du var at skabe deres applikationer ved hjælp af en almindelig webgl det ville tage meget lang tid.men nu har vi nogle meget nyttige biblioteker, som vi kan drage fordel af, som three.js.så i denne serie vil jeg vise dig, hvordan at skabe bedøvelse 3d erfaringer i browseren. jeg forventer, du har en grundlæggende forståelse af 3d plads, før du begynder at læse denne lektion, som jeg ikke vil være at forklare ting, som koordinerer, vektorer osv.,,,, forberedelse, begynder vi med koden fra tidligere en del af denne serie.også, tag de aktiver, jeg har givet, og puttede dem i den samme mappe som din app.nu, da vi vil bruge billeder her, du bliver nødt til at tage din app på en statisk - serveren (kan være lokale), for hvis du starter browser med mulighed for filtilgang fra filer (f.eks. ved hjælp af, - - at indgive adgang fra filer, flag i krom) cors vil ikke lade dig få dem fra fil.det er alt du skal gøre, før proceduren.,, trin 1: indlæsning tekstur, hvis du nogensinde har fået så kedeligt, at du gik med at skabe noget, der rent opengl, du husker nok, hvor meget smerte, det er at lade en konsistens.heldigvis three.js kommer med en god funktion, som vil belastning og etablere strukturen for os.tilføje denne linje inden den definition af vores kube er væsentlig:, var cubetexture = 3. imageutils. loadtexture (. /kasse. men heller ikke dér er menneskene sikre "), er det virkelig alt, hvad du skal gøre, for at få din tekstur ladt.,, i den virkelige verden app, du skal preload tekstur som enhver normal image og vise brugerne nogle smarte lastning bar for at lade dem vide, at du laster (three.js vil bruge skjult billede så).,, trin 2: maleri terningen, nu vil vi anvende struktur til vores kube.det er også let, du bare nødt til at erstatte farve definition i kuben er materiale til at se sådan ud:, var cubematerial = nye tre. meshlambertmaterial ((kort: cubetexture}), kort, attribut indeholder tekstur.nu må du åbne browseren. du burde se en roterende, tekstureret terning:,,,, du kan også colorize tekstur, bare tilføje, farve, definition af de materielle muligheder, som det:, var cubematerial = nye tre. meshlambertmaterial ((kort: cubetexture, farve: 0x28c0ec}), og nu kuben blå:,,,, så kan du have flere forskellige objekter med samme struktur, hvis kun ændres farven.,, trin 3: flere materialer, du kan fastsætte forskellige materialer til hver af terningen.for at opnå det, er du nødt til at ændre hele materiale definition.først definere, materialer, vifte.hvert element i nettet vil svare til det materiale, et ansigt.de går i denne rækkefølge: højre, venstre, øverst på bunden, foran og bagved:, var materialer = [] materialer. tryk (nye tre. meshlambertmaterial ((kort: cubetexture, farve: 0xff0000})); //højre materialer. tryk (nye tre. meshlambertmaterial ((kort: cubetexture, farve: 0xffff00})); //venstre om materialer. tryk (nye tre. meshlambertmaterial ((kort: cubetexture, farve: 0xffffff})); //top ansigt materialer. tryk (nye tre. meshlambertmaterial ((kort: cubetexture, farve: 0x00ffff})); //bunden ansigt materialer. tryk (ny tre. meshlambertmaterial ((kort: cubetexture, farve: 0x0000ff})); //forside materialer. tryk (nye tre. meshlambertmaterial ((kort: cubetexture, farve: 0xff00ff})); //tilbage, som du kan se hver ansigt har sit eget materiale, så du kanfastsætte forskellige mønstre, farver og andre egenskaber for hver enkelt.næste skift type terningen er materiale til tre. meshfacematerial:, var cubematerial = nye tre. meshfacematerial (materialer), behøver du kun at passere, materialer, system som parameter.i browseren, du skal se, at hver side af kuben har forskellige farver:,,,, trin 4: partikler.lad os sige, at de ønsker at skabe en virkning af spinding snefnug i din app.hvis du var at gøre hver snowflake, som en maske, du vil få en meget lav fps - ordningen.der er partikler spiller ind.de er mindre kompliceret, og at få dem som helhed partikel - systemet giver dem virkelig effektiv. start med at skabe en form for partikler, var partikler = nye tre. geometri,,, three.geometry, er en base geometri objekt, uden nogen som helst form.nu er vi nødt til at definere den position for hver partikel i systemet.lad det være helt tilfældigt: for (var - p = 0, p & lt. 2000, p + +) (var - partikel = nye tre. vector3 (matematik. random() * 500 - 250, matematik. random() * 500 - 250, matematik. random() * 500 - 250), partikler. toppunkter. tryk (partikel)}, dette loop vil skabe 2000 vilkårligt placeret partikler og sætte dem alle i geometri.næste gang, du er nødt til at definere partikler 'materiale:, var particlematerial = nye tre. particlebasicmaterial ((farve: 0xeeeeee, størrelse: 2}), bemærker, at vi bruger, tre. particlebasicmaterial,, som kun er for partikler.i muligheder, vi kun fastsætte farve og størrelse af hver partikel.endelig kan man skabe partikel - system, og det er scene:, var particlesystem = nye tre. particlesystem (partikler, particlematerial); scene. der tilsættes (particlesystem), for at gøre stedet ser bedre ud, lad os skifte partikler i den modsatte retning den terning er roterende (ændre gør, fungerer sådan her:, funktion render() {requestanimationframe (de) var delta = ur. getdelta(); terning. rotation. y - = delta, particlesystem. rotation. y + = delta, renderer. gøre (scene, kamera)}, vi flyttede, clock.getdelta, den variable, for hvis du ville bruge det sådan:, terning. rotation. y - = ur. getdelta(); particlesystem. rotation. y + = ur. getdelta();, partikel - systemikke rotere, fordi den anden ring vil vende tilbage med en række tæt på nul (husk, at det er ved at være tid fra det sidste opkald). nu åbne browser, og du bør se en terning og partikler, roterende:,,,,,,, så lad os forene to ting, man har lært i den pædagogiske og gøre disse grimme hvide pladser til reel snefnug.først, lad snowflake struktur:, var particletexture = 3. imageutils. loadtexture (. /snowflake. men heller ikke dér er menneskene sikre '), ændring af partikler' materiale til tekstur.også, skabe gennemsigtighed og gøre partikler større, så vi kan se formen:, var particlematerial = nye tre. particlebasicmaterial ((kort: particletexture, gennemsigtig: det er rigtigt, størrelse: 5}), hvis du åbner den browser, du skulle se nogle pæne snefnug flyder rundt i kuben:,,,,,,, løntrin 5: ryg, ryg virkning, er ret let at opnå, og det ser pænt ud.start med at skabe den geometri, ligesom snefnug:, var smokeparticles = nye tre. geometri; (var - jeg = 0. jeg & lt; 300; jeg + +) (var - partikel = nye tre. vector3 (matematik. random() * 32 - 16, matematik. random() * 230, matematik. random() * 32 - 16); smokeparticles. toppunkter. tryk (partikel)), og den eneste forskel er, at vi vælger den holdning fra en rektangulær prisme med dimensioner 32x32x230.lad os læsse tekstur og definere materiale:, var smoketexture = 3. imageutils. loadtexture (. /ryger. men heller ikke dér er menneskene sikre) var smokematerial = nye tre. particlebasicmaterial ((kort: smoketexture, gennemsigtig: det er rigtigt, blanding: three.additiveblending, størrelse: 50, farve: 0x111111}), materiale definition, er der, blanding, mulighed.det fortæller renderer, hvordan det skal gøre én ting på en anden.med three.additiveblending, overlappende farve værdier vil blive føjet til hinanden, hvilket vil resultere i en bedre røg i områder med større partikelstørrelse tæthed.- satte vi også den farve til næsten sort, så røg ser mere naturligt. endelig skabe partikel - system, ryk lidt til venstre og tilføje det til den scene:, var røg = nye tre. particlesystem (smokeparticles, smokematerial); smoke.sortparticles = sandt, røg. holdning. x = - 150; scene. der tilsættes (røg), må man også, smoke.sortparticles, sand.når det er falsk baggrund af sprite kan drages som sort.hvis du åbner browser, du bør se en stadig søjle af røg ved kuben:,,,, at stadig ryger vi skal loop gennem alle de partikler, og flytte dem lidt op.det bemærkes, at gøre, funktion:, var particlecount = smokeparticles.vertices.length; mens (particlecount...) (var - partikel = smokeparticles. toppunkter [particlecount] partikel. y + = delta * 50; hvis (partikel. y > = 230) (partikel. y = matematik. random() * 16 partikel. x = matematik. random() * 32 - 16; partikel. z = matematik. random() * 32 - 16) smokeparticles. __dirtyvertices = sandt; i loop vi tilføjer, delta * 50, y - holdning til partikel.næste gang vi kontrollere, om de - partikel er højere end 230, hvis vi tilfældigt vælge sin nye stilling, et eller andet sted i bunden af røgen søjle.endelig er det vigtigste: fastsættelse af geometrien er, __dirtyvertices, flag,.,,, for at forbedre resultaterne, three.js er caching objekter for at undgå opbygning af alle de webgl ringer igen hvert billede, så hvis vi ændrer noget i geometri for den genstand, vi er nødt til at lade renderer ved, at det har ændret sig..den, __dirtyvertices, flag vil nå element.,, hvis du åbner den, nu kan du se en glat browser tegnefilm ryger næste til terningen.,, konklusion i denne forelæsning, du har lært at bruge mønstre og partikler.som før, du skal ikke være bange for at eksperimentere med din app.hvis du har problemer, tage et kig på den dokumentation.i den næste artikel, vil jeg lære dig at lade modeller og manipulerer dem.

textured_cube
textured_colorized_cube
each_side_different
cube_with_particles
particles_snowflakes
smoke_still



Previous:
Next Page: