If you're seeing this message, it means we're having trouble loading external resources on our website.

Ha webszűrőt használsz, győződj meg róla, hogy a *.kastatic.org és a *.kasandbox.org nincsenek blokkolva.

Fő tartalom

Bevezetés a részecskerendszerekbe

1982-ben William T. Reeves, a Lucasfilm Ltd. kutatója a Star Trek II: A Khan bosszúja című filmen dolgozott. A film cselekménye a Genezis gép körül forog, egy olyan torpedó körül, amit, ha kilőnek egy terméketlen, élettelen bolygóra, akkor az az anyag átrendezésével kolonizációra alkalmas lakható világot képes létrehozni. A „terraformálási” folyamat során a bolygón végigseper egy tűzfal. (A videóban elhangzó magyarázat: Minden csillagnak más a színe és nagysága, és a közeli Epszilon Indi naprendszerből származik. Figyeld meg, ahogy a csillagok körvonalai elmosódnak a mozgás során! Ebben a részletben a bolygó felületét egy számítógépes rajzoló programmal manuálisan festették. A bal alsó sarokból beúszó Big Dipper egyel több csillagot tartalmaz. Ez a mi Napunk az Epsilon Indiről nézve.)
Khan Academy video wrapper
A részecskerendszer kifejezés, ami a számítógépes grafika egy nagyon gyakori és hasznos elemét jelöli, ennek az effektusnak a készítése során született.
„Egy részecskerendszer nagy számú apró részecske együttese, ami elmosódott alakot formáz. Egy adott időintervallumon belül részecskéket generálunk a rendszerbe, amik mozognak és változnak a rendszeren belül, majd kihalnak a rendszerből.” – William Reeves, „Particle Systems – A Technique for Modeling a Class of Fuzzy Objects,” ACM Transactions on Graphics 2:2 (April 1983), 92.
Az 1980-as évek kezdete óta számtalan videojátékban, animációban, digitális műalkotásban és installációban használtak részecskerendszereket szabálytalan természeti jelenségek, mint például tűz, füst, vízesés, köd, fű, buborékok stb. modellezéséhez.
Ez a fejezet részecskerendszerek programozásának megvalósítási stratégiáit járja körül. Hogyan strukturáljuk a kódot? Hol tároljuk az egyedi részecskékre vonatkozó adatokat, és hol azokat, amelyek az egész rendszerre vonatkoznak? A bemutatott példák a részecskerendszerhez kapcsolódó adatok kezelésére fókuszálnak. A részecskék egyszerű alakzatok lesznek, és csak a legalapvetőbb működést fogjuk hozzáadni (pl. a gravitációt). Ha érdekesebb viselkedési módokkal ruházod fel a részecskéket, ennek a keretrendszernek a felhasználásával változatos hatásokat tudsz elérni.
Mint ahogy a fenti idézetből is kiderül, a részecskerendszer egyszerű objektumok halmaza. Már foglalkoztunk objektumhalmazok programozásával – például amikor Moverek tömbjével pattogó labdákat szimuláltunk. De a részecskerendszerek esetében a halmazok összetettebbek. A halmazok különböző méretűek lehetnek: néha az elemszám nulla, máskor tíz, megint máskor tízezer. Nemcsak a halmazokat felépítő részecskéknek vannak működési algoritmusai, hanem maguk a halmazok is rendelkeznek algoritmusokkal. Az a célunk, hogy ilyen programot tudjunk írni:
var ps = new ParticleSystem();

draw = function() {
    background(255, 255, 255);
    ps.run();
};
Egyetlen részecskére sincs hivatkozás ebben a kódrészletben, de az eredmény az lesz, hogy a rajzvászon teli lesz szerteszét röpködő részecskével. Többféle objektumtípust tartalmazó programokat fogunk definiálni, és olyan objektumokat definiálunk, amik más objektumcsoportokat fognak irányítani, ezáltal hatékony részecskerendszereket tudunk építeni, de mindez arra is jó, hogy általában felkészít bonyolultabb programok elkészítésére.
Részecskerendszerek programozásához két fejlett objektumorientált programozási technikát fogunk használni: az öröklődést és a polimorfizmust. Az eddigi példákban mindig olyan tömbökkel dolgoztunk, amik egyetlen típusú objektumokból álltak, például „moverek”, vagy „rezegtetők”. Az öröklés (és a polimorfizmus) segítségével kényelmes lehetőség adódik arra, hogy egy tömbben különböző típusú objektumokat tároljunk. Ily módon a részecskerendszernek nem kell csak egy fajta részecskéből állnia.
Ebben a fejezetben át fogjuk tekinteni a részecskerendszerek tipikus felhasználási területeit, de ne korlátozza a fantáziádat az, hogy a fejezetben a részecskék hogyan néznek ki, vagy hogyan viselkednek. Csak azért, mert a részecskék sokszor csillogók, előre repülnek, vagy leesnek a gravitáció miatt, ez nem jelenti azt, hogy neked is ezeket a tulajdonságokat kell használnod. Itt most arra összpontosítunk, hogy hogyan kell kézben tartani egy sok elemből álló rendszert. Hogy azok az elemek mit csinálnak, és hogy néznek ki, az csak tőled függ.

Szeretnél részt venni a beszélgetésben?

Még nincs hozzászólás.
Tudsz angolul? Kattints ide, ha meg szeretnéd nézni, milyen beszélgetések folynak a Khan Academy angol nyelvű oldalán.