at manipulere partikel forslag med stardust partikel motor – del 1

, manipulere partikel forslag med stardust partikel motor – del 1,,,,, andel,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, stardust partikel motor, indeholder to store tilgange til frit at manipulere partikel forslag, nemlig tyngdekrafts - områder og deflektorer.tyngdekraft område er vektor områder, der berører en partikel er acceleration og deflektorer manipulere med både en partikel position og hastighed.,,, den første del af denne forelæsning dækker de grundlæggende partikel forslag og tyngdekrafts - områder.det viser også, hvordan man skaber sin egen skik tyngdekrafts - områder.den anden del fokuserer på deflektorer, og hvordan til at skabe skik - forudgående kendskab til de grundlæggende anvendelse af stjernestøv skal fortsætte med at læse denne forelæsning.hvis du ikke er bekendt med stardust, kan du tjekke mine tidligere forelæsning om emnet, skyde stjerner med stardust partikel motor, før de går videre, endelige resultat forpremiere, lad os tage et kig på det endelige resultat, vi arbejder hen imod.dette er et eksempel på en speciel vortex tyngdefelt.,, partikel forslag grundlæggende, det er tid til en hurtig flashback på gymnasie fysik.kan du huske grundlæggende kinematik?det handler om forskydning, som kun er et finere måde at sige "," og dens forhold til tiden.for denne forelæsning, vi behøver kun en simpel forståelse af emnet, fordrivelse, forskydning: den nuværende holdning til en genstand.i denne pædagogiske "objekter" er vi især at gøre med partikler i 2d - rum.i 2d - rum, flytning af et objekt er repræsenteret ved et 2d vektor, hastighed, et objekt er hastighed angiver, hvor hurtigt en tings position ændringer og retning af ændringen.hastigheden af en genstand i 2d - rum er også repræsenteret ved et 2d vector.vektoren er x - og y-components repræsenterer i retning af at ændre holdning og vektoren er absolut værdi angiver formålet er hastighed, dvs. hvor stærkt objektet bevæger sig, acceleration, acceleration er hastighed som hastighed er for fortrængning.fremskyndelse af en genstand angiver, hvor hurtigt et objekt er hastighed ændringer og retning af ændringen.ligesom den hastighed på en genstand i 2d - rum, et objekt er acceleration er repræsenteret ved et 2d vektor.,, vektorfelterne, en anden ting, der er værd at nævne, er begrebet vektorfelterne.du kan faktisk på en vektor område som en funktion, der kræver en vektor, som dets input og output, en anden kurs.tyngdekraft områder, er en slags vektorfelterne at tage stilling som input og output vektorer acceleration vektorer.for eksempel, i fysik simulering, normalt en ensartet tyngdekraft peger nedad anvendes til alle formål i denne sag, tyngdekraft, der repræsenterer tyngdekraft er en vektor område, at output, en konstant vektor (andre), uanset hvad den indgående stilling vektorer.,,, det er en visualiseret figur af en vektor område.produktionen vektor for et givet input vektor (1, 2) (0, 5, 0, 5), mens produktionen af input (4, 3) (- 0, 5, 0, 5,.,,, område, klasse i stardust - udgør et 2d vektor område, og dets 3d modstykke,, field3d, klasse repræsenterer en 3d - vektor område.i denne forelæsning, vil vi kun fokuserer på 2d vektorfelterne.,, mark. getmotiondata(), metode kræver, particle2d, objekt, der indeholder en partikel er 2d position og hastighed, som parameter.denne metode er tilbage, motiondata2d, genstand, en 2d vektor "værdi genstand", der bestod af x - og y-components.kombineret med den, tyngdekraft, handling, et område, genstand, kan anvendes som et tyngdefelt, hvis produktion anvendes til at manipulere partikel hastighed. det er for vores gymnasie fysik opsummere.nu er det tid til en ægte stardust ting.,,, hvor alvorlig handling, som tidligere nævnt, tyngdekraft, aktion klasse gør brug af, område, genstande som tyngdekraften områder til at manipulere partikel hastighed.her er hvordan du skabe en ensartet vektor område, en vektor område, der returnerer en konstant vektor, uanset hvad input er givet, og pak den ind i en, tyngdekraft, aktion. //skabe en ensartet vektor område peger nedad (husk positive y-coordinate betyder "" flash) var område: område = nye uniformfield (0, 1); //skaber en alvorlig indsats var alvor, tyngdekraft = nye gravity(); //add hensyn til alvoren aktion tyngdekraft. addfield (område), tyngdekraft, er nu klar til at blive anvendt på samme måde som alle andre almindelige stardust aktioner. //tilføje tyngdekraft foranstaltninger til en emitter udsender. addaction (tyngdekraft), f.eks. vind, regn, er vi ved at skabe en vind - regn virkning ved, tyngdekraft,.,, trin 1: grundlæggende regner virkning, crentesats, en ny flash dokument, vælge en mørk farve til baggrund, udarbejde en regndråbe på scenen, og omdanne det til en film magasin regndråber symbol, der eksporteres til actionscript med en klasse navn "gøre det".slette regndråbe eksempel på scenen bagefter.,, nu er vi ved at skabe en fil for det dokument, klasse, og en fil for regn, udsender.jeg vil ikke forklare den kode, da jeg allerede har dækket de grundlæggende anvendelse af stjernestøv i min forrige lektion.hvis du ikke er bekendt med stardust, eller du har brug for noget at drikke, så anbefaler jeg, at du læste min forrige lektion, før jeg rejser. det er det dokument, klasse, pakke (import - flash. udstilling. *; import flash. begivenheder. *; import idv. cjcat. stardust. fælles. udledere. *; import idv. cjcat. stardust. fælles. renderers. *; import idv. cjcat. stardust. twod. renderers. *; offentlige klasse windyrain udvider sprite (private var kilde: kilde; private var renderer: renderer; offentlig funktion windyrain() {kilde = nye rainemitter(); renderer = nye displayobjectrenderer (dette). renderer. addemitter (emitter); addeventlistener (event.enter_frame, mainloop)} privat funktion mainloop e: begivenhed): ugyldig (udsender. step().}), og det er den udleder klasse, der anvendes i dokumentet klasse., pakke (import idv. cjcat. stardust. fælles. ure. *; import idv. cjcat. stardust. fælles. initializers. *; import idv. cjcat. stardust. fælles. matematik. *; import idv. cjcat. stardust. twod. aktioner. *; import idv. cjcat. stardust. twod. udledere. *; import idv. cjcat. stardust. twod. initializers. *; import idv. cjcat. stardust. twod. zoner. *; offentlige klasse rainemitter udvider emitter2d {offentlige funktion rainemitter() {super (nye steadyclock (1) //initializers addinitializer (nye displayobjectclass (regndråbe)); addinitializer (ny stilling (nye rectzone (- 300 - 40 940, 20)); addinitializer (nye hastighed (nye rectzone (- 0, 5, 2, 1, 3))); addinitializer (ny masse (nye uniformrandom (2, 1)); addinitializer (nye skala (nye uniformrandom (1, 0, 2)); //foranstaltninger addaction (nye move()); addaction (nye orienteret, stk. 1, 180)); addaction (nye deathzone (nye rectzone (- 300 - 40, 960, 480), sande)}}}, det er, hvad vores nuværende fremskridt ud.,,, trin 2: gøre det blæser, nu skal vi lave regn virkning fra ved at tilføje en ensartet tyngdekraft, at "trækker" regndråberne til højre.der tilføjes følgende kode på konstruktøren af, rainemitter, klasse. //skabe en uniformfield det vender altid tilbage (, 0, 5, 0) var område: område = nye uniformfield (, 0, 5, 0); //tage partikelmasse hensyn til field.massless = falske; //skaber en alvorlig handling, og der tilsættes inden for var alvor, tyngdekraft = nye gravity(); tyngdekraft. addfield (område); //add alvorlige foranstaltninger til dig addaction (tyngdekraft), bemærker, at vi fastsætter, field.massless, ejendomsret til falske, som gælder ved misligholdelse.når der rigtigt, denne ejendom skaber områder til at handle som almindelige tyngdekrafts - områder, som påvirker alle objekter, ens, uanset deres masse.men når ejendommen er falske, partikelmasse er taget i betragtning: partikler med en større masse er mindre påvirket af det område, der er berørt af partikler med mindre vægt.det er derfor, vi brugte, masse, initializer i vores tidligere udleder kode, for at tilføje en vilkårlighed i regnen virkning. test filmen igen, og det er, hvad vores resultater ser ud.regndråber er nu omfattet af en tyngdekraft og alle "tog" til højre.,, f.eks.: uro, nu skal vi bytte den, uniformfield, objekt med et, bitmapfield genstanden tilbage vektorfelterne baseret på en bitmap farve kanaler, at skabe uro virkning.hvis du har arbejdet med actionscript i et stykke tid, kan du forvente at anvende, bitmapdata. perlinnoise(), metode, når vi tænker på turbulens, og det er præcis, hvad vi skal gøre. her er, hvad en stikprøve perlin støj bitmap ser ud.perlin støj er en fremragende algoritme til at frembringe støj til simulering af turbulens, vand bølge, cloud osv. du kan finde flere oplysninger om perlin støj her.,, bitmap områder, kan man undre sig over, hvis vi skal bruge den, bitmapdata. perlinnoise(), en metode til at skabe en perlin støj bitmap, hvordan skal vi denne bitmap som en vektor område?tja, det er hvad, bitmapfield, klasse.det kræver en bitmap og omdanner det til en vektor område. lad os sige, at vi har en bitmap område, hvis, x - kanalen, er fastsat til rød, og y - kanalen, er grønne.det betyder, at når området kræver en indgående vektor, (2, 3), ser det ud til bitmap er pixel i (2, 3) og output vektor er x komponent bestemmes af pixel er røde kanal, og y - komponent bestemmes ud fra den grønne kanal.når dele af et input vektor er ikke tal, de er afrundede. en farve kanal værdi varierer fra 0 til 255, 127, er den gennemsnitlige.en værdi på mindre end 127 betragtes som negative, som bitmap område, mens værdi er større end 127 er truffet positive.- er den mest negative, antal og 255, er det mest positive, en.for eksempel, hvis vi har en pixel med en farve 0xff0000 i hexadecimal repræsentation, dvs. en rød kanal med værdi 255 og grønne kanal med 0, så bitmap område er produktionen af denne opløsning, ville være en vektor med x del af, mest positive, mulige og y del af, mest negative, mulige, hvor det mest positiv /negativ mulige, eller det maksimale antal, er specifikke for den bitmap område.for at være mere præcis, her er formlen for pixel til vektor omstilling.,, trin 1: grundlæggende flyvende pile, skabe en ny flash - dokument.udarbejde en pil på scenen, og omdanne det til et symbol, der hedder "arrow" og eksportere det til actionscript.,, skabe en fil for dokumentet klasse.det er næsten det samme som det foregående eksempel., pakke (import - flash. udstilling. *; import flash. begivenheder. *; import idv. cjcat. stardust. fælles. udledere. *; import idv. cjcat. stardust. fælles. renderers. *; import idv. cjcat. stardust. twod. renderers. * offentlige klasse turbulens udvider sprite (private var kilde: kilde; private var renderer: renderer; offentlig funktion turbulence() {kilde = nye arrowemitter(); renderer = nye displayobjectrenderer (dette). renderer. addemitter (emitter); addeventlistener (event.enter_frame, mainloop)} privat funktion mainloop e: begivenhed): tomrum {kilde. step();}}}, skabe en som dokumentation for vores kilde, pakke (import idv.cjcat.stardus klasse.t.common. aktioner. *; import idv. cjcat. stardust. fælles. ure. *; import idv. cjcat. stardust. fælles. initializers. *; import idv. cjcat. stardust. fælles. matematik. *; import idv. cjcat. stardust. twod. aktioner. *; import idv. cjcat stjernestøv.. twod. udledere. *; import idv. cjcat. stardust. twod. initializers. *; import idv. cjcat. stardust. twod. zoner. *; offentlige klasse arrowemitter udvider emitter2d {offentlige funktion arrowemitter() {super (nye steadyclock (1) //initializers addinitializer (nye displayobjectclass (pil)); addinitializer (nyt liv (nye uniformrandom (50, 10)); addinitializer (ny stilling (nye singlepoint (320, 200)); addinitializer (nye hastighed (nye lazysectorzone (3, 2)); addinitializer (ny masse (nye uni -formrandom (2, 1)); addinitializer (nye skala (nye uniformrandom (1, 0, 2)); //foranstaltninger addaction (nye age()); addaction (nye deathlife()); addaction (nye move()); addaction (nye oriented()); addaction (nye scalecurve (10))), og de nuværende fremskridt ser sådan her ud.,, trin 2: gøre det turbulente, tilføje følgende kode, der skaber en 640-by-480 perlin støj bitmap data i udleder konstruktøren.for en detaljeret redegørelse for hver parameter i, bitmapdata. perlinnoise(), metode, man kan henvise til denne dokumentation.for at gøre det enkelt, følgende kode skaber en perlin støj bitmap med "octaves" omtrent på størrelse 50x50 og støj består af rød og grøn farve kanaler. //skabe perlin støj bitmap data var støj: bitmapdata = nye bitmapdata (640, 400) og støj. perlinnoise (50, 50, 1, 0, sandt, 1



Previous:
Next Page: