Internett som vi vet det, er stadig forandring og evolusjonerende. Det vi fortsatt kan huske som et enkelt og grei medium fikk en annen dimensjon for noen år siden, og det ser ikke ut som det kommer til å stoppe der heller. For en Nettstedbygger , Hva var en gang en del av science-fiction-filmvisuelteffekter, er nå mulig på en tablett som ligger på sofaen din, og det er bygninger som er dekket i store interaktive installasjoner som egentlig bare er fullskjerms Google Chrome Windows.
Følg trinnene nedenfor for å finne ut hvordan du lager en realistisk smeltingseffekt med tre.js.
Gå videre og ta tak i tre.js-biblioteket og ta med det på nettstedet ditt. Du må instantiere WebGlrenderen, scenen og Perspectivecamera. Etter at disse er instantiated, må du gjøre scenen på RequestanimationFrame. .
Deretter må lysene legges til 3D-scenen. I dette eksemplet vil to lys bli brukt: et omgivelseslys og et punktlys. Det omgivende lyset fungerer som en generell global farge for scenen, mens punktlyset vil avgi lys som reduserer avstanden. Dette vil gi scenen noen kontrast.
var Ambientlight = ny tre.ambientlight (0xcccccccc);
scene.Add (Ambientlight);
varpointlight = ny tre.punktlight (0xffffff, 1);
pointlight.position.Set (10, 5, 0);
Nå som scenen er satt opp, må 3D-modellen lastes inn. Modellen kan lastes ved hjelp av et støttet format (JSON, OBJ, DAE, etc). Nedenfor er et eksempel på å laste en DAE-modell. I dette eksemplet er det svært viktig at modellen har nok polygoner til å utføre vertexendringer.
Hjortskallen som brukes i dette eksemplet har 3.500 polys. Hvis poly-tellingen er for lav, vil topplex animasjonene være for eksplisitte og forvrengt.
Loader = Ny tre.Colladaloader ();
loader.last ('dae / deer_skull / deer_skull.dae', onloadcompletehandler);
Bump Maps er perfekte for å legge til dybde i teksturene til en lav pris. Når du har opprettet ditt Bump Map-bilde, kan du implementere det ved å bare bruke det til materialet som nedenfor. Også, du må også justere skalaen på Bump Map for å passe til omfanget av modellen din.
materiale.bumpmap = 'img / deer_skull / deer-bump.jpg';
Material.Bumpscale = .008;
Gjennom hele nettstedet benytter Johnny en spillutvidelse av Jerome Etienne for tre.js som gjør det lettere å gjøre vertex animasjoner. Denne utvidelsen gir enkel tilgang til hvert toppunkt for en modell i rammehastigheten, noe som gjør det enkelt å manipulere hjørner med bølgeformer.
De Vertex animasjon utvidelse er tilgjengelig via Etienne Github. Vi går videre til hvordan den brukes i de neste trinnene.
Smelting av et stykke geometri innebærer noen få samlede trinn. Først blir hvert punkt kontinuerlig presset nedover. Når et punkt når bakken, er den presset utover med det vi kaller en "trykkvektor".
Deretter gir vi poengene som samles langs bunnen en tykkelse, slik at smeltet geometri ikke er helt flatt. For å oppnå dette har Johnny Ported Code fra Skeel Lee's VFX Shader i Houdini og endret det.
Nedenfor er et eksempel på bruk av bruk av Vertex-animatoren for å kontinuerlig presse en modellens geometri mot bakken.
var verteksanimasjon = ny trex.vertexanimation (geometri, funksjon (opprinnelse, posisjon, delta, nå) {Position.y - = Meltamount * ModelHeight;}
Dette vil presse på punktene ned i hastigheten som er definert av smeltamount. . Husk å ringe 'Update' på din toppei animasjon i Render Cycle.
Når et punkt har nådd bakken, må den skyves utover for å oppnå en smelteffekt. Koden nedenfor bestemmer hvilken retning i X- og Z-aksene for å skyve toppunktet slik at du får en jevn forskyvning. Den betingede sikrer at bare poeng som har nådd de laveste grensene til modellen (bakken) skyves utover.
hvis (posisjon.y & lt; bbox.min.y) {
var centroid = bbox.max.clone (). Legg til (bbox.min.clone ()). Dividescalar (2.0);
pushvector = posisjon.Clone (). sub (centroid);
pushvector.y = 0; }
Koden nedenfor bruker støy for å skape tilfeldighet i bevegelsen, slik at smelten føles organisk. Støyvariablene kan tweaked for å få den ønskede effekten. Støyen blir deretter påført på trykkvektoren sammen med smeltamount. og spreadamount. å kontrollere hastigheten og størrelsen på det smeltede bassenget. Denne utadvendte vektoren er endelig beregnet og deretter påført på toppunktet selv.
var n = noiseamplitude * generator.getVal ((posisjon.x) * noisefrequency + noiseoffset);
var outwardvector = pushvector.multiplyscalar (((meltamount * spreadamount) + n) * Outdottpeed);
stilling.add (outwardvector);
Koden forklart så langt vil oppnå smelteffekten, men to ting er galt med det. Først vil bassenget føles ganske flatt, fordi alle punktene har smeltet til samme Y-posisjon. For det andre, siden de alle deler de samme Y, vil for mange poeng bli stablet i samme høyde, noe som kan forårsake flimrende. For å unngå dette påføres en tykkelse på smeltefrekvensen:
Posisjon. På + = Meltamount * Poolhickness;
Med koden ovenfor kan en hvilken som helst modell med nok polygoner smeltes. Last ned en zip-fil ut koden her og bytt ut modellen med alt du vil. Ha det gøy!
Denne artikkelen opprinnelig dukket opp i Webdesigner utgave 265. Kjøp det her .
Relaterte artikler:
[1. 3] (Bilde Kreditt: Simon Baek) Hva er visuell utvikling? Vel, det designer alt som kan bidra til å visualisere en..
[1. 3] Gjengivelse av et bilde, animasjon av en modell eller til og med en hel scene er et viktig skritt i kunstskapet. Uten dette..
[1. 3] MacOS-Photos-appen begynte livet som iPhoto: En forbrukerapp for å administrere digitale fotografier, med noen få grunnle..
[1. 3] I løpet av de siste årene har utviklingen av en rest API for WordPress åpnet nye dører for utviklere. Utviklere som tid..
[1. 3] Affinity Foto for iPad er en flott bilderedigeringsprogram , hvordan skjer serifs app når det g..
[1. 3] ZbrushCore ($ 149.95 for en enkeltbrukerlisens) er en forenklet versjon av Zbrush. som fungerer ..
[1. 3] Når vi snakker om å bygge vedlikeholdbare og skalerbare nettsteder, kommer vi uunngåelig Javascript. -Rel..
3D-utskrift har blitt enormt populært. Hvis du vil begynne å skrive ut din egen 3D Art. , det er noen ting å se etter for å få de beste resultatene. Her vil jeg vise deg h..