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

თუ ვებფილტრს იყენებთ, დარწმუნდით, რომ *.kastatic.org და *.kasandbox.org დომენები არ არის დაბლოკილი.

ძირითადი მასალა

კურსი: კომპიუტერული პროგრამირება > თემა 5

გაკვეთილი 8: ნაწილაკთა სისტემები

შესავალი ნაწილაკთა სისტემებში

1982 წელს უილიამ რივსი, მკვლევარი Lucasfilm Ltd.-ში, მუშაობდა ფილმზე Star Trek II: The Wrath of Khan („ვარსკვლავური გზა 2: ხანის მრისხანება“). ფილმის დიდი ნაწილი ვითარდება „გენეზისის აპარატის“ გარშემო — იმ ტორპედოსი, რომელსაც ცარიელ, უსიცოცხლო პლანეტაზე გატყორცნის შემდეგ აქვს უნარი, გარდაქმნას მატერია და შექმნას საცხოვრებლად ვარგისი გარემო კოლონიზაციისათვის. ფილმში პლანეტას მისი „ტერაფორმირების“ დროს ცეცხლის კედელი მოედება:
ხანის აკადემიის ვიდეოების მომთავსებელი
ტერმინი ნაწილაკების სისტემა, საოცრად გავრცელებული და გამოყენებადი ტექნიკა კომპიუტერულ გრაფიკაში, გაჩნდა ამ კონკრეტული ეფექტის შექმნისას.
„ნაწილაკების სისტემა არის კოლექცია ბევრი ცალკეული ნაწილაკისა, რომლებიც ერთად ბუნდოვან ობიექტს წარმოადგენენ. დროთა განმავლობაში ნაწილაკები გენერირდებიან სისტემად, მოძრაობენ და იცვლებიან სისტემაში და კვდებიან სისტემიდან“ — უილიამ რივსი, „ნაწილაკების სისტემა — ბუნდოვანი ობიექტების კლასის მოდელირების ტექნიკა“, ACM სიახლეები გრაფიკაზე (ACM Transactions on Graphics) 2:2 (1983 წლის აპრილი), 92.
1980-იანი წლებიდან ნაწილაკების სისტემა გამოიყენება უამრავ ვიდეოთამაშში, ანიმაციაში, ციფრულ ხელოვნების ნიმუშსა და სხვადასხვა ტიპის ბუნებრივი ფენომენის მოდელირებაში, როგორებიცაა ცეცხლი, კვამლი, ჩანჩქერები, ნისლი, ბალახი, ბუშტულები და ა.შ.
ეს სექცია დაეთმობა ნაწილაკების სისტემის დაპროგრამების იმპლემენტაციის სტრატეგიებს. როგორ დავგეგმოთ ჩვენი კოდი? სად ვინახავთ ცალკეულ ნაწილაკებთან დაკავშირებულ ინფორმაციას და რით განსხვავდება იმ ინფორმაციის შენახვისგან, რომელიც დაკავშირებულია სისტემასთან, როგორც ერთ მთლიანობასთან? მაგალითები, რომელთაც გადავხედავთ, კონცენტრირდება ნაწილაკების სისტემასთან დაკავშირებული მონაცემების მართვაზე. ისინი ნაწილაკებისთვის გამოიყენებენ მარტივ ფიგურებს და გამოიყენებენ მხოლოდ უმარტივეს ქცევებს (როგორიცაა გრავიტაცია). მიუხედავად ამისა, ამ სამუშაო გარსის გამოყენებით და ნაწილაკებისა და კომპიუტერის ქცევების დამუშავებისთვის (render) მეტი საინტერესო გზის ჩაშენებით შეგიძლიათ, მიიღოთ მრავალნაირი ეფექტი.
როგორც ზემოთ აღვწერეთ, ნაწილაკების სისტემა მარტივი ობიექტების კოლექციაა. ჩვენ უკვე ვიმუშავეთ ობიექტების კოლექციების დაპროგრამებასთან — როგორიცაა Mover-ების მასივები, რომლებიც ბურთის ხტუნვის სიმულაციას აკეთებენ — მაგრამ, ნაწილაკების სისტემების შემთხვევაში, ჩვენი კოლექციები უფრო რთულია. კოლექციები იქნება სხვადასხვა ზომის: ზოგჯერ იქნება 0 ნაწილაკი, ზოგჯერ — ათი, ზოგჯერ — ათი ათასი. თვითონ კოლექციებს ექნებათ არა მხოლოდ ნაწილაკები, რომლებისგანაც შედგებიან, არამედ ქცევა და თვისებებიც. ჩვენი მიზანია, დავწეროთ პროგრამა, რომელიც შემდეგნაირად გამოიყურება:
var ps = new ParticleSystem();

draw = function() {
    background(255, 255, 255);
    ps.run();
};
ამ კოდში არ მივმართავთ არცერთ ცალკეულ ნაწილაკს, მაგრამ შედეგი სავსე იქნება მთელ ეკრანზე მფრინავი ნაწილაკებით. ჩვენ შევქმნით პროგრამებს რამდენიმე ობიექტის ტიპით და ობიექტებით, რომლებიც თვალყურს ადევნებენ სხვა ობიექტების კოლექციებს, რომლებიც დაგვეხმარება ძლიერი ნაწილაკების სისტემების შექმნაში და აგრეთვე შეგვამზადებს ზოგადად უფრო ძლიერი პროგრამების დაწერისთვის.
ნაწილაკების სისტემის დაპროგრამების სწავლისას გამოვიყენებთ ობიექტზე ორიენტირებული პროგრამირების ორ რთულ ტექნიკას: მემკვიდრეობითობასა და პოლიმორფიზმს. აქამდე ნანახ მაგალითებში ყოველთვის გვქონდა ერთი ტიპის ობიექტის მასივი, როგორიცაა „მოხეტიალეები" („movers") ან „ოსცილატორები" („oscillators"). მემკვიდრეობითობით (და პოლიმორფიზმით) ვისწავლით მოსახერხებელ გზას ცალკეული მასივის შესანახად, რომელიც შეიცავს სხვადასხვა ტიპის ობიექტებს. ამ გზის საშუალებით არ იქნება აუცილებელი, რომ ნაწილაკების სისტემა იყოს მხოლოდ ერთი ტიპის ნაწილაკების სისტემა.
ჩვენ გადავხედავთ ნაწილაკების სისტემების ყველაზე ხშირ გამოყენებას ამ სექციაში, მაგრამ იმ ფაქტმა, რომ ნაწილაკებს ამ განყოფილებაში ახასიათებთ კონკრეტული ქცევა, არ უნდა შეზღუდოს თქვენი წარმოსახვა. ეს ნაწილაკების სისტემები ბრწყინავენ, მიფრინავენ წინ და ვარდებიან გრავიტაციის გამო, მაგრამ ეს არ ნიშნავს, რომ თქვენს ნაწილაკების სისტემებსაც იგივე თვისებები უნდა ჰქონდეს. ჩვენ ვკონცენტრირდებით ბევრი ელემენტის მქონე სისტემისთვის თვალყურის დევნებაზე. რას აკეთებენ ეს ელემენტები და როგორ გამოიყურებიან ისინი - ეს თქვენი გადასაწყვეტია.

გსურთ, შეუერთდეთ დისკუსიას?

პოსტები ჯერ არ არის.
გესმით ინგლისური? დააწკაპუნეთ აქ და გაეცანით განხილვას ხანის აკადემიის ინგლისურენოვან გვერდზე.