Ana içerik
Bilgisayar Programlama
Konu: Bilgisayar Programlama > Ünite 5
Ders 8: Parçacık Sistemleri- Parçacık sistemlerine giriş
- Tek bir parçacık
- Zor görev: Düşen yapraklar
- Bir parçacık sistemi
- Zor görev: Balık kabarcıkları
- Parçacık sistemi sistemleri
- Zor görev: Ateş başlatan
- Parçacık türleri
- Zor görev: Büyülü kazan
- Kuvvet içeren parçacık sistemleri
- Zor görev: Nehirdeki taşlar
© 2023 Khan AcademyKullanım ŞartlarıGizlilik PolitikasıÇerez Politikası
Parçacık sistemlerine giriş
1982'de, Lucasfilm Limited'de bir araştırmacı olan William T. Reeves Uzay Yolu II: Khan'ın Gazabı üzerinde çalışıyordu. Filmin çoğu Genesis Aygıtı etrafında geçer, bu aygıt çorak, yaşam olmayan bir gezegene atıldığında, maddeyi yeniden düzenleme ve kolonileşme için yaşanabilir bir dünya yartama yeteneğine sahip bir torpidodur. Sekans sırasında, “terraform" edilirken gezegeni bir ateş dalgası sarar:
Parçacık sistemi terimi, bu özel etkiyi oluşturmak için bulunan, bilgisayar grafiğinde inanılmaz derecede yaygın ve faydalı bir yöntemdir.
“Bir parçacık sistemi, birlikte belirsiz bir nesneyi gösteren birçok minik parçacıktan oluşan bir topluluktur. Zaman boyunca, parçacıklar bir sistem oluşturur, sistemde hareket eder ve değişir, ve sistemde ölür.” —William Reeves, "Particle Systems—A Technique for Modeling a Class of Fuzzy Objects," ACM Transactions on Graphics 2:2 (Nisan 1983), 92.
1980'lerin başından veri, parçacık sistemleri sayısız video oyunu, animasyon, dijital sanat eserleri, ve enstalasyonlarda yangın, duman, şelale, sis, çim, kabarcıklar, vb gibi çeşitli düzensiz doğa olaylarını modellemek için kullanılmıştır.
Bu bölüm bir parçacık sistemini programlama için uygulama stratejilerine ayrılmıştır. Kodumuzu nasıl düzenleriz? Parçacık sistemleriyle ilgili bilgiye karşı sistemin bütünüyle ilgili bilgiyi nerede saklıyoruz? Bakacağımız örnekler, bir parçacık sistemiyle ilişkilendirilmiş verileri yönetmeye odaklanır. Parçacıklar için basit şekiller kullanılacak ve (yerçekimi gibi) en temel davranışlar uygulanacaktır. Ancak, parçacıkları göstermek ve davranışları hesaplamak için bu çerçeveyi kullanarak ve daha değişik yollar oluşturarak, çeşitli efektler geliştirebilirsiniz.
Yukarıdaki alıntıda gösterildiği gibi, bir parçacık sistemi, basit nesnelerden oluşan bir topluluktur. Daha önce, nesne topluluklarını programlamayla uğraşmıştık - örneğin, zıplayan topların benzetimi olan Mover dizileri. Ancak parçacık sistemleri için, topluluklarımız daha karmaşık olacaktır. Toplulukların boyutları farklılık gösterecektir: bazen sıfır parçacık, bazen on, bazen on bin parçacık olacaktır. Toplulukların, oluştukları parçacıkların yanı sıra, kendi davranışları ve özellikleri de olur. Hedefimiz şöyle görünen bir program yazabilmektir:
var ps = new ParticleSystem();
draw = function() {
background(255, 255, 255);
ps.run();
};
Bu kodda bir tek parçacık belirtilmez, ancak sonuç ekranın her yerine uçan bir dolu parçacık olur. Birden çok nesne türüyle, ve diğer nesne koleksiyonlarını izleyen nesnelerle programlar oluşturacağız, bu da güçlü parçacık sistemleri oluşturmamıza yardımcı olacak, ve ayrıca genelde daha güçlü programlar yazmaya bizi hazırlayacaktır.
Parçacık sistemlerini programlamayı öğrenirken iki ileri düzey nesne yönelimli programlama yöntemi kullanacağız: kalıtım ve çok biçimlilik. Şimdiye kadar gördüğümüz örneklerde, hep bir tür nesnenin dizisi vardı "hareketliler" veya “salıngaçlar” gibi. Kalıtım (ve çok biçimlilik) ile, farklı türde nesneleri kapsayan bir diziyi saklamak için uygun bir yöntem öğreneceğiz. Bu şekilde, bir parçacık sistemi, sadece bir tür parçacığın sistemi olmak zorunda değildir.
Bu bölümde parçacık sistemlerinin en tipik kullanımlarına bakacağız, ama bu bölümdeki parçacıkların belirli bir şekilde görünmesi veya davranması hayal gücünüzü sınırlamamalı. Bu parçacık sistemlerinin ışıltılı görünmesi, ileri uçması, ve yer çekimiyle düşmesi, sizinkilerin de aynı özellikte olmasını gerektirmez. Burada odaklandığımız şey, aslında birçok öğeden oluşan bir sistemi izlemektir. Bu öğelerin neler yaptığı ve nasıl göründüğü size bağlıdır.
Tartışmaya katılmak ister misiniz?
Henüz gönderi yok.