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

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Wprowadzenie do systemów cząstek

W 1982 roku, William T. Reeves, naukowiec z Lucasfilm Ltd pracował nad filmem Star Trek II: Gniew Khana. Znaczna część filmu skupia się na Urządzeniu Genesis - torpedzie, która wystrzelona w martwą, jałową planetę potrafi przetworzyć wszelką obecną na niej materię, tworząc dzięki temu świat nadający się do kolonizacji. Podczas sceny użycia tej torpedy ściana ognia otacza planetę w czasie, gdy jest ona “terraformowana":
Filmy wideo na Khan Academy
System cząstek, bardzo popularna i przydatna technika grafiki komputerowej została stworzona na potrzeby tej konkretnej sceny.
“ System cząstek to kolekcja wieku drobnych cząstek, które wspólnie stanowią rozmyty obiekt. W pewnym okresie czasu cząstki są generowane przez system, przenoszone i modyfikowane wewnątrz systemu, oraz umierają w tym systemie.” —William Reeves, " Particle Systems—A Technique for Modeling a Class of Fuzy Objects," ACM Transactions on Graphics 2:2 (Kwiecień 1983), 92.
Od wczesnych lat osiemdziesiątych system cząstek został użyty w olbrzymiej ilości gier, animacji, cyfrowych obrazach i wizualizacjach odwzorowujących różne nieregularne typy zjawisk naturalnych, takich jak ogień, dymy, wodospady, mgły, trawa, bąbelki i tym podobne.
Ten dział będzie poświęcony przeglądowi różnych metod implementacji systemu cząstek. Jak zorganizować nasz kod? Gdzie możemy przechowywać informacje powiązane z poszczególnymi cząsteczkami, a gdzie te odnoszące się do systemu jako całości? Przykłady, na których się skupimy opisywać będą zarządzanie danymi powiązanymi z systemem cząsteczek. Będą one używać prostych kształtów dla cząstek i odwzorowywać tylko najbardziej podstawowe zachowania(takie jak grawitacja). Jednak używając tego frameworka i tworząc coraz ciekawsze sposoby renderowania cząsteczek i obliczania ich zachowania, możecie otrzymać naprawdę wiele różnych efektów.
Zgodnie z powyższym cytatem, system cząstek to zbiór prostych obiektów. Zajmowaliśmy się już programowaniem z użyciem kolekcji obiektów - tak jak w przypadku tablic obiektów typu Mover, które symulowały odbijanie piłek. Jednak dla systemu cząsteczek nasze kolekcje są trochę bardziej skomplikowane. Zbiory będą różnić się rozmiarem: czasami będą puste, czasami zawierać dziesięć cząstek, a czasami dziesięć tysięcy. Same kolekcje będą miały swoje własne zachowania i właściwości, nie są to rzeczy ograniczone tylko do cząstek, z których się składają. Naszym celem jest nauczenie się pisania programów wyglądających tak:
var ps = new ParticleSystem();

draw = function() {
    background(255, 255, 255);
    ps.run();
};
Pojedyncze cząstki nie są nawet wspomnianie w tym kodzie, a jednak mimo tego wynikiem będą cząstki latające po całym ekranie. Będziemy tworzyć programy zawierające wiele typów obiektów oraz obiekty monitorujące inne kolekcje obiektów, co pozwoli nam na stworzenie bardzo zaawansowanego systemu cząstek, ale także przygotuje nas ogółem na pisanie bardziej zaawansowanych programów.
W celu zrozumienia jak zaprogramować systemy cząstek, użyjemy dwóch technik programowania obiektowego: dziedziczenia oraz polimorfizmu. W dotychczasowych przykładach zawsze posiadaliśmy tablicę przechowującą obiekty jednego typu, tak jak obiekty typu "Mover" albo “oscylatory.” Za pomocą dziedziczenia(i polimorfizmu) nauczymy się wygodnego sposobu, który umożliwia przechowywanie w jednej tablicy obiektów różnych typów. Dzięki temu system cząsteczek nie musi składać się tylko z jednego typu cząsteczek.
Skupimy się na najbardziej popularnych sposobach użycia systemu cząsteczek w tym rozdziale, ale to, że cząsteczki z tego rozdziału zachowują się lub wyglądają w pewien konkretny sposób nie powinno ograniczać waszej wyobraźni. To, że te systemy cząsteczek wyglądają w ten sposób, lecą do przodu i spadają poprzez grawitację nie oznacza, że wszystkie wasze systemy powinny się tak zachowywać. W tym rozdziale skupiamy się tylko i wyłącznie na tym, jak monitorować system składający się z wielu elementów. Co te elementy robią i jak wyglądają zależy tylko i wyłącznie od Was.

Chcesz dołączyć do dyskusji?

Na razie brak głosów w dyskusji
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.