Kamis, 04 Juli 2013

Artikel cloud computing dan analisis perusahaan yang menggunakannya

Cloud Computing, Efektivitas Bisnis Dan Reduksi Biaya


Migrasi IT dari tradisional ke sistem komputasi awan (cloud computing) merupakan hal yang dianggap perlu bila perusahaan ingin maju dan cepat berkembang.



Cloud Computing adalah suatu istilah yang banyak digunakan oleh Industi IT yang memiliki arti yang berbeda bagi setiap orang. Namun pada intinya Cloud Computing adalah suatu pergeseran dari perusahaan dalam membeli dan memelihara server dan aplikasi on-premise yang mahal, dan bergerak menuju metode penyewaan IT, sesuai dengan kebutuhan, dari satu penyedia layanan publik.

Cloud Computing adalah suatu istilah yang banyak digunakan oleh Industi IT yang memiliki arti yang berbeda bagi setiap orang. Namun pada intinya cloud computing adalah suatu pergeseran dari perusahaan dalam membeli dan memelihara server dan aplikasi on-premise yang mahal, dan bergerak menuju metode penyewaan IT, sesuai dengan kebutuhan, dari penyedia layanan public cloud.



Ada beberapa keuntungan dan kemudahan yang ditawarkan oleh teknologi cloud computing. Pemakaian teknologi cloud computing bisa dibayarkan secara bertahap. Hal ini berarti sebuah perusahaan dapat melakukan penghematan. Selain dapat mengurangi anggaran biaya, dengan penerapan cloud computing juga dapat meningkatkan efektivitas bisnis. Efektivitas itu bisa terjadi karena berbagai alasan (Jain & Bhardwaj), diantaranya adalah:
a. Meningkatan Kapasitas
Dengan cloud Computing sebuah perusahaan bisa menyimpan data lebih dari kapasitas penyimpanan yang dimiliki oleh komputer mereka di perusahaan namun bisa disimpan di server provider. Sehingga tidak dibutuhkan lagi upgrade memori dan tentu saja sangat membantu menekan biaya bagi perusahaan.
b. Sangat Otomatis
Staf TI tidak lagi perlu khawatir meng-update software dan perusahaan tidak perlu lagi mengeluarkan biaya untuk meng-upgrade satu server atau lebih. Server akan selalu di update oleh pihak vendor penyedia teknologi cloud computing sesuai permintaan. Sehingga setiap orang yang menggunakan layanan selalu mendapatkan update tanpa memperbarui apapun di komputer yang mereka pakai.
c. Fleksibel
Cloud computing menawarkan fleksibilitas yang lebih tinggi daripada metode komputasi yang ada di masa lalu dan menghemat waktu sekaligus uang untuk orang-orang yang sibuk dan tidak punya banyak waktu.
d. Mobilitas tinggi
Seorang staf dapat mengakses informasi di manapun mereka berada. Hal ini memungkinkan staf tersebut untuk terhubung bahkan tanpa komputer mereka sendiri, yang berarti pekerjaan bisa dilakukan di mana saja selama memiliki koneksi dan akses ke internet.
e. Memungkinkan IT untuk tetap fokus
Dengan cloud computing perusahaan tidak lagi harus khawatir tentang update server yang secara reguler dilakukan dan masalah komputasi lain, perusahaan akan bebas untuk berkonsentrasi pada inovasi dan pengembangan bisnis.
f. Berbagi Sumber Daya
Sebuah kunci dari cloud computing adalah adanya kemampuan untuk berbagi sumber daya di dalam perusahaan. Sehingga memungkinkan semua karyawan untuk mengakses sumber daya melalui cloud computing. Dengan ini kita dapat menghemat waktu dan uang dengan menempatkan sumber daya dalam satu lokasi yang mudah bagi para karyawan untuk mencari dan mengaksesnya.
g. Bisnis Agility
Salah satu keuntungan cloud computing adalah memungkinkan perusahaan untuk menjadi lebih lincah. Kecepatan pemesanan kapasitas dan layanan yang disediakan oleh pihak vendor adalah elemen penting
TEKNOLOGI, VOL. 1, NO. 2, JULI 2011
102
dari cloud computing. Penambahan kapasitas media penyimpanan, bandwidth jaringan, memori, dan sumber daya komputasi yang lain dapat dilakukan dengan cepat dan bahkan seketika. Kebanyakan vendor cloud computing menggunakan infrastruktur perangkat lunak yang dapat dengan mudah untuk ditambahkan, dipindahkan, atau diubah aplikasinya sesuai dengan kebutuhan. Sifat, dinamis dan elastis dari cloud computing itulah yang akan memberi keuntungan yang sangat besar bagi pengguna.
h. Back-up dan Pemulihan Bencana
Dengan cloud computing, beban untuk mengelola teknologi ditempatkan pada vendor termasuk semua hal yang menyangkut perlindungan data, toleransi kesalahan, recovery dan pemulihan bencana. Biaya pemulihan bencana secara normal diperkirakan dua kali lipat dari biaya infrastruktur. Dengan model berbasis cloud, biaya pemulihan bencana diperkirakan kurang dari satu kali biaya, sebuah penghematan yang sangat signifikan.




website gemscool.com (PT. Kreon)

kesimpulan :
setelah melihat isi dari website ini, saya merasa web ini sudah cukup bagus dan tidak ada kekurangan. penggunaan cloud computing pada website ini sangat efektif terutama untuk meminimalkan waktu yang digunakan dan memaksimalkan feedback dari pihak perusahaan kepada konsumen yang sedang bertransaksi. overall website gemscool dari perusahaan PT. Kreon ini sudah cukup baik dalam penerapan cloud computing.

Cloud Computing

Istilah cloud tentunya sudah tidak asing lagi bagi kita karena teknologi dari cloud ini sering kita gunakan. Misalnya saja, saat ini kita tidak perlu lagi membawa flashdisk kemana-mana, cukup terkoneksi dengan internet kita dapat menyimpan data di cloud. Data tersebut aman, dan tersedia dimanapun kita berada.
Tetapi apakah cloud computing hanya berfungsi seperti itu saja? Tentu saja tidak, teknologi cloud computing dapat lebih dari itu.

Pengertian Cloud Computing

Cloud computing adalah kumpulan dari beberapa resources yang terintegrasi menjadi satu dan digunakan melalui web.
Sebenarnya, cloud computing ini didasarkan pada teknologi grid computing yang membuat skalabilitas suatu sistem komputasi menjadi sangat besar dengan cara menggabungkan beberapa sumber daya komputer menjadi satu resource.
Sehingga tidak salah jika ada orang yang megnatakan cloud computing adalah grid computing yang digabungkan dengan virtualisasi.

Perkembangan Cloud Computing

Cloud computing telah berkembang sejak tahun enam puluhan berdampingan dengan perkembangan internet dan web. Internet lebih cepat berkembang karena perkembangan bandwidth yang semakin besar. Perkembangan internet inilah yang menjadi pendorong berkembangnya teknologi cloud computing
pengertian cloud computing
Pada tahun di tahun 1999, Salesforce.com menjadi pencetus pertama aplikasi perusahaan yang dijalankan melalui internet. Selanjutnya diikuti oleh Amazon Web Services di tahun 2006 yang menggunakan teknologi Elastic Compute Cloud (EC2). Teknologi EC2 menyebabkan adanya situs layanan web yang dikomersialkan, sehingga memungkinkan perusahaan kecil / individu untuk menyewa komputer atau server agar dapat menjalankan aplikasi komputer mereka.
Di tahun 2009, Google memulai menawarkan aplikasi berbasis browser melalui Google Appsnya, yang salah satunya adalah Google Docs yang sering kita gunakan. Sampai saat ini, cloud computing masih terus berkembang dengan pesat mengingat manfaatnya yang begitu besar jika teknologi ini digunakan.
Menurut Jamie Turner, perkembangan cloud computing ini dipengaruhi oleh matangnya teknologi visual, perkembangan bandwidth berkecepatan tinggi, dan software yang bersifat universal.


referensi : http://azuharu.net

core techniques and algorithms in game programming

 Dalam bab-bab sebelumnya, kita membahas bagaimana untuk mewakili berbagai lingkungan yang berbeda dalam permainan komputer.Dari penjara ke dataran yang luas bersama dengan karakter yang mengisi, kami telah menjelajahi bagaimana membusukgrafis ke dalam segitiga array, sehingga mereka dapat efisien diberikan oleh subsistem grafis. Semakin segitiga kita gunakan, semakin kaya dan lebih menarik representasi. Sebagai tanda yang jelas dari pengabdian kepada segitiga, ingat kutipan terkenal oleh salah satu anggota pendiri dari jalan Pixar kembali pada 1980-an, "Realitas Segitiga 80m per detik. " Namun, beberapa efek sulit untuk membayangkan dalam hal segitiga. Berapa banyak segitiga yang memiliki api unggun? Dan bagaimana dengan kabut yang menempel puncak gunung? Dan pohon? Ini adalah barang yang kami butuhkan untuk mewakili, tetapi trivial untuk mengungkapkan segi segitiga. Kita cenderung berpikir dalam hal struktur padat sederhana diwarisi dari platonis padatan (kubus, bola, dan sebagainya). Tapi kehidupan sehari-hari terus-menerus menantang ini kesederhanaan, membuat kita memikirkan cara kreatif menggambarkan kekayaannya. Bab ini (bersama dengan bab-bab berikutnya) mencoba mengeksplorasi teknik yang dirancang untuk membuat "maju" efek seperti yang baru saja disebutkan serta banyak lainnya. Dalam bab ini, kita akan mengeksplorasi partikel sistem, yang merupakan formalisme matematis yang dapat digunakan untuk mewakili dinamis, perilaku kompleks seperti asap dan gelombang. Bab selanjutnya secara khusus akan berurusan dengan teknik render organik, meliputi fenomena yang paling alami, baik statis atau dinamis pada dasarnya. Bab berikutnya akan membahas paradigma prosedural, yang merupakan alat yang ampuh digunakan untuk mewakili geometri yang kompleks dalam cara yang efisien.

Anatomi Sistem Partikel
Sebuah sistem partikel pada dasarnya adalah sebuah formalisme matematis yang digunakan untuk menggambarkan fenomena yang  Dinamis dan tergantung waktu Sangat paralel dengan komponen individu kecil
l. Complex
Contoh perilaku tersebut termasuk asap dari cerobong, kebakaran, burung terbang dalam kawanan, kepingan salju, dan ratusan fenomena lain. Sistem partikel adalah konteks sensitif, yang berarti mereka dapat digunakan untuk Model situasi yang sangat berbeda. Sistem partikel adalah alat, tetapi tidak berarti penggunaan-kasus tertentu di sendiri. Dengan mengubah beberapa komponen dalamnya, dapat cocok untuk setiap masalah, asalkan mengikuti filsafat global yang diuraikan sebelumnya.Sistem partikel diperkenalkan pada awal tahun 1980 oleh Pixar (kemudian bagian dari Lucasfilm efek khusus kelompok) untuk film Star Trek II: The Wrath of Kahn. Secara khusus, sistem partikel yang digunakan untuk mewakili ledakan reaksi berantai pada permukaan planet, sehingga planet berubah dari mati, terlihat tandus ke ekosistem hidup penuh.Sebuah sistem partikel fundamental terdiri dari berbagai partikel, masing-masing berubah dinamis sesuai beberapa didirikan rutinitas. Anda dapat model hujan individu bereaksi terhadap gravitasi dan angin, burung melaksanakan rutinitas AI sederhana, dan sebagainya. Semua partikel memiliki parameter yang sama mengendalikan penampilan mereka dan perilaku. Tapi saat mereka berkembang dalam ekosistemnya, masing-masing mengikuti evolusi yang sedikit berbeda, dan diinginkan kompleksitas muncul secara alami.
Sistem Partikel Lokal Versus global
Sistem partikel secara umum dapat dibagi menjadi dua kelompok besar, yang akan saya sebut sebagai lokal dan global. Sebuah sistem lokal terdiri dari sekelompok partikel yang berperilaku seolah-olah masing-masing sendirian. Dengan demikian, interaksi antara partikel tidak dipertimbangkan, dan semua perhitungan lokal untuk partikel saat ini. Di ujung lain spektrum, sistem partikel global yang melibatkan partikel yang berinteraksi dan bereaksi terhadap setiap lainnya. Dalam sistem partikel, perilaku setiap partikel individu sebagian bergantung pada sendiri karakteristik, tetapi juga pada interaksi dengan anggota kelompok lainnya. Banyak kali sistem lokal hanyalah penyederhanaan sistem global. Sebagai contoh, perhatikan kelompok daun jatuh dari pohon, tertiup oleh angin. Jika Anda ingin model dengan akurat, Anda perlu mempertimbangkan perubahan dalam lintasan jika dua atau lebih daun bertabrakan, membuat perilaku daun tunggal tergantung pada sisanya. Jelas, ini akan menghasilkan sistem partikel global. Tapi banyak game lebih memilih untuk mengabaikan tabrakan daun dan, dengan menyederhanakan simulasi, menerapkannya sebagai sistem partikel lokal. Ketika Anda akan segera menemukan, kedua kelompok memiliki kelebihan dan masalah yang berbeda, dan memerlukan spesifik teknik pemrograman. Jelas, sistem partikel global yang menghasilkan jauh lebih kompleks dan menarik perilaku. Tapi kekayaan tidak datang secara gratis. Menghitung pengaruh partikel lainnya biasanya akan meningkatkan biaya komputasi kami secara signifikan. Jadi, sistem partikel global harus ditangani dengan hati-hati.
Partikel Struktur Data
Mendefinisikan struktur data partikel berarti menjawab "apa" pertanyaan: Apa yang kita pemodelan? Apakah akan menjadi api, asap, atau air? Jelas, fenomena yang berbeda akan membutuhkan parameter partikel yang berbeda. Ketika memilih struktur data partikel, adalah penting untuk membuat satu set parameter yang bersifat cukup tapi tidak kembung. Mengingat sifat paralel sistem partikel, memiliki parameter berlebihan akan meningkatkan jejak memori, sedangkan memiliki parameter kontrol terlalu sedikit akan menurunkan kualitas visual sistem. Sistem partikel secara tradisional ditangani dengan barang bergerak cepat dengan tidak ada interaksi antara mereka. Jadilah itu percikan ledakan, hujan, atau air, struktur yang mendasari hampir identik. Berikut adalah partikel asli Struktur diambil dari mani Reeves SIGGRAPH Kertas (lihat referensi di Lampiran E, "lanjut Membaca "):
l Posisi
l Velocity (vectorial)
l Ukuran
l Warna
l Transparansi
l Bentuk
l Lifetime
Struktur ini digunakan untuk membuat beberapa efek yang agak maju di Star Trek II: The Wrath of Kahn. Kita bias luas membagi parameter menjadi dua kelompok yang berbeda:
l Parameter yang berhubungan dengan perilaku partikel
l Parameter yang berhubungan dengan tampilan partikel
Perilaku parameter harus cukup untuk mengimplementasikan simulator partikel menarik. Dengan demikian, adalah penting untuk menganalisis jenis perilaku kita mencoba untuk mensimulasikan, untuk memahami parameter yang diperlukan. Itu Tempat terbaik untuk mengumpulkan informasi ini dari fisika buku panduan, terutama yang berkaitan dengan dinamika untuk partikel atau badan kaku. Mempelajari kekuatan Anda akan berlaku untuk partikel. Apakah Anda perlu gesekan? Kecepatan? Percepatan? Cobalah untuk memahami peran konstanta global lingkup. Misalnya, tidak masuk akal untuk memiliki setiap partikel menyimpan gravitasi konstan. Nilai itu akan sama dalam semua mereka. Di sisi lain, bobot setiap partikel mungkin berguna dalam beberapa keadaan. Begitu Anda telah menentukan mana perilaku parameter membutuhkan simulator, Anda akan perlu untuk menentukan orang-orang parameter yang berhubungan dengan tampilan partikel. Berikut kemungkinan hampir tak terbatas. Anda pasti akan membutuhkan warna partikel, blending mode, ukuran, dan tekstur identifier, namun kebanyakan sistem partikel perlu banyak lebih banyak parameter. Untuk partikel padat, Anda mungkin perlu untuk menentukan jala akan Anda gunakan untuk melukis partikel counter animasi, lingkaran cahaya, dan puluhan fitur lainnya. Berikut saran terbaik adalah untuk memisahkan partikel render dari lingkaran simulasi, sehingga Anda dapat menguji lukisan partikel tunggal dalam program yang terpisah. Ini cara Anda dapat memperbaiki hasil visual dan menentukan parameter membutuhkan partikel Anda penyaji untuk menyampaikan tampilan yang tepat.
Sistem Partikel Generik
Sekarang bahwa kita memiliki pemahaman global apa sistem partikel, mari kita melihat lebih dekat bagaimana kitadapat menerapkannya. Pertimbangkan definisi kelas berikut untuk sistem partikel dasar:
kelas particlesystem
{
partikel * data;
int numparticles;
publik:
membatalkan menciptakan (int); / / menciptakan sistem n partikel
batal recalc ();
membatalkan render ();
private:
kekosongan bibit (int); / / memunculkan partikel n
membatalkan mempengaruhi (int) / / n partikel mempengaruhi oleh kekuatan luar
};
Perhatikan bagaimana kita perlu bertelur dan mempengaruhi rutinitas secara partikel. Kedua rutinitas menerapkan inti sistem: bagaimana partikel dilahirkan dan apa simulasi proses mereka menjalani. Kedua rutinitas bias benar-benar menjadi bagian dari kelas partikel, jika diperlukan, untuk lebih memperjelas kode.
Partikel pemijahan
Partikel dibuat pada beberapa jenis emitor, yang menginisialisasi parameter mereka. Jika kita ingin sistem kami untuk berperilaku dalam cara yang menarik, kuncinya adalah untuk menghasilkan setiap partikel dengan nilai awal yang sedikit berbeda, sehingga aturan perilaku (yang dimiliki oleh semua partikel) membuat masing-masing terlihat seperti elemen yang unik. Berbagai emitter telah sering digunakan. Yang paling terkenal adalah emitor titik, yang menghasilkan semua partikel pada suatu titik dalam ruang, seperti dalam ledakan. Tapi ledakan tidak lahir di satu titik dalam ruang. Di Bahkan, hanya Big Bang terjadi seperti ini, dan kami bahkan tidak yakin tentang hal itu. Ledakan di dunia nyata memiliki volume dan bentuk, sebagai partikel api muncul dari obyek meledak. Jadi, kadang-kadang kita akan mengacaukan titik, sehingga partikel yang lahir di daerah sekitarnya, tetapi tidak cukup pada titik. Ini adalah sangat pendekatan umum dalam penciptaan sistem partikel: menambahkan jumlah keacakan sehingga hasilnya tidak terlihat terlalu teratur dan algoritmik. Sebagai contoh, untuk emitor titik kami, kami akan menggunakan sesuatu seperti ini:
titik pos (3,5,4); / / partikel lahir di 3,5,4
pos.x + = ((float) rand ()% 2000-1000) / 1000;
pos.y + = ((float) rand ()% 2000-1000) / 1000;
pos.z + = ((float) rand ()% 2000-1000) / 1000;
Tiga baris terakhir menerapkan distorsi satu di setiap arah, positif atau negatif. Jadi sebenarnya Volume partikel muncul dari sebuah kubus sepihak berpusat di 3,5,4. Filosofi ini berakar kuat dalam disiplin ini yang bahkan memiliki nama: jittering, yang menggambarkan penambahan jumlah terkontrol kebisingan untuk mengurangi tampilan algoritmik simulasi. Ada juga bentuk lain dari emitter. Untuk mensimulasikan salju atau hujan, misalnya, Anda mungkin akan menggunakan 2D poligon sejajar pada bidang XZ. Berikut adalah source code untuk menghitung poligon seperti:
titik pos (3,5,4); / / partikel lahir di 3,5,4
pos.x + = ((float) rand ()% 2000-1000) / 1000;
pos.z + = ((float) rand ()% 2000-1000) / 1000;
Dalam hal ini saya telah membuat sebuah persegi, yang sangat umum. Bentuk 2D lainnya dapat diterapkan juga. Jenis ketiga emitor dirujuk berkaitan dengan posisi pemain. Bayangkan bahwa Anda perlu untuk mensimulasikan hujan. Sangat mungkin, Anda tidak akan mengisi tingkat seluruh permainan dengan ratusan ribu hujan individu. Ini hanya tidak masuk akal karena hujan yang jauh tidak akan terlihat. Dalam skenario ini, itu akan menjadi besar untuk menghasilkan hujan tepat di mana pengguna dapat melihat itu sebagian besar, yang langsung di depannya. Dengan demikian, kita menghasilkan hujan dalam koordinat reguler kami, dan kemudian menerjemahkan dan memutar ke posisi akhir sistem partikel dan  rotasi. Berikut adalah contoh bagaimana untuk menghasilkan partikel-partikel ini. Saya berasumsi fov adalah aperture horizontal kamera, dan distnear dan distfar adalah rentang jarak kita inginkan untuk mengisi dengan partikel:
mengapung dist = distnear + (distfar-distnear) * ((float) rand ()% 1000) / 1000;
mengapung angle = fov * (((float) rand ()% 2000) -1000) / 1000;
titik p (dist * cos (sudut), 0, dist * sin (sudut));
p.rotatey (camera_yaw);
p.translate (camera_position);
Kode ini menghasilkan partikel tepat di depan kamera, sehingga mereka mengisi layar tapi angan pergi ke mana pun lain. Hanya partikel kita benar-benar perlu dipertimbangkan. Tipe lain dari emitor adalah emitor berbasis layar, yang digunakan untuk efek partikel yang dihitung dalam ruang layar, seperti jejak air ditinggalkan oleh tetes hujan di permukaan kamera. Partikel ini lahir di mana saja, tapi selalu dirujuk ke viewport kamera. Jadi, menghasilkan mereka sedikit berbeda. Sebuah 2D sistem partikel diberikan dengan pipa 3D dimatikan, seperti mesin sprite dari masa lalu. Generasi partikel tidak terlalu kompleks, melainkan hanya partikel pada persegi panjang 2D. Berikut adalah kode:
pos.x + = SCREENX * ((float) rand ()% 2000-1000) / 1000;
pos.y + = SCREENY * ((float) rand ()% 2000-1000) / 1000;
Kode ini mengasumsikan bahwa SCREENX, SCREENY memegang resolusi dalam piksel pada layar. Jelas, sebagian besar kompleksitas dari sistem ini adalah tidak dalam pemijahan partikel, tetapi dalam render yang sebenarnya. Anda dapat melihat berbagai jenis emitter. Emitter untuk efek yang berbeda. Setelah kita memiliki emitor, sekarang saatnya untuk beralih ke parameter berikutnya. Kecepatan awal harus ditentukan. Beberapa pilihan populer di sini adalah kecepatan arah (semua partikel bergerak ke arah yang sama), kecepatan radial (partikel menjauh dari pusat), rotasi (seperti dalam tornado), atau acak. Masing-masing harus dilaksanakan dengan tingkat tertentu jitter, partikel begitu berbeda memiliki sedikit berbeda parameter dan karenanya evolusi.Parameter lainnya dapat disetel serta: Warna, alpha (sangat penting jika partikel memudar karena mereka mati), texturing koordinat, dan sebagainya semua harus diatur. Selain itu, kita perlu menetapkan usia partikel dan parameter siklus hidup. Ini dapat diimplementasikan dengan dua cara: Anda dapat mengatur usia partikel ke nol dan memiliki parameter kedua itu adalah waktu untuk hidup partikel. Pada setiap tick simulasi, Anda meningkatkan usia sampai waktu untuk hidup (yang tidak lain adalah sebuah counter) tercapai, dan partikel dibunuh dan respawned tempat lain. Karena simulasi kutu biasanya tetap panjang, kita mendapatkan perangkat-independen kecepatan. Sebuah alternatif adalah untuk menetapkan bukan usia, tapi instan di mana partikel itu melahirkan. Anda akan mendapatkan bahwa dari sistem dengan panggilan untuk timeGetTime (), menyimpannya, dan kemudian menggunakannya untuk perhitungan usia. Pada dasarnya, pada setiap loop Anda akan recompute waktu saat ini dengan timeGetTime (), kurangi waktu lahir dari nilai kedua ini (sehingga menghitung usia dalam milidetik partikel), dan membandingkannya dengan waktu untuk hidup, yang juga merupakan jangka waktu tidak hanya loop counter seperti dalam kasus sebelumnya. Seperti biasa, programmer yang berbeda lebih memilih satu pendekatan atau yang lain karena alasan pribadi.
Perilaku partikel
Jika struktur partikel mencoba untuk menentukan apa yang akan kita mensimulasikan, mesin perilaku harus berusaha untuk meniru bagaimana fenomena tertentu berkembang dari waktu ke waktu. Apakah ini akan menjadi simulasi berbasis fisik, atau akan itu stokastik? Pilihan yang paling umum adalah untuk menerapkan semacam dinamika pada partikel sehingga mereka meniru fenomena dunia nyata. Mari kita lihat beberapa contoh meningkatnya kompleksitas. Untuk mulai dengan, bayangkan bahwa kita harus membuat sistem partikel hujan, mencoba untuk mendapatkan efek hujan deras meyakinkan. Air hujan bergerak dengan kecepatan yang sangat tinggi karena mereka jatuh ke tanah, sehingga kita dapat membuat asumsi bahwa mereka tidak terpengaruh oleh angin atau kekuatan eksternal lainnya. Membuat obyek cepat mengubah arah sulit, karena kekuatan kita perlu untuk memasok ke meningkat dengan kecepatan. Dengan demikian, hujan kita melahirkan dengan algoritma yang sama dengan yang dijelaskan pada bagian sebelumnya, dan kita hanya perlu recompute posisi mereka. Sekarang, dari fisika yang sangat dasar Anda tahu bahwa Posisi = posisi awal + kecepatan * waktu Mengambil ini sebagai persamaan diferensial untuk jangka waktu singkat, kita dapat menulis ulang untuk membentuk dPosition = Velocity * dt mana dPosition adalah perubahan posisi, Velocity adalah kecepatan sesaat pada suatu titik waktu tertentu, dan dt adalah diferensial waktu kita ingin mengevaluasi perbedaan posisi masuk Berikut kita mengasumsikan bahwa
Velocity berlaku sepanjang dt detik, yang umumnya palsu. Kami mengambil satu sampel dan generalisasi ke interval sepanjang waktu. Hal ini membuat jenis simulator, disebut Euler Integrator, sangat stabil dalam sistem yang lebih kompleks. Tapi untuk sistem partikel, ini adalah cara untuk pergi karena kesederhanaan dan keanggunan mereka. Jadi bagaimana kita mengubahnya menjadi kode yang berjalan? Kami mengganti dt untuk diferensial antara
berturut-turut simulasi kutu dan menggunakan kecepatan arus sebagai parameter kecepatan. Sekarang, kita dapat menggabungkan fisika Newton dasar ke dalam persamaan. Mari kita meninjau bagaimana ini bisa bekerja, dimulai dengan persamaan F = m * a yang berubah menjadi = F / m
Tapi tetap percepatan adalah turunan kedua dari posisi, seperti dalam = d2x/dt2
Jadi sekarang kita memiliki hubungan mendasar antara cinematics (akselerasi) dan dinamika (kekuatan). Hukum dasar cinematics kemudian dapat ditulis kembali sebagai
v = dx / dt
a = dv / dt
Dan dengan demikian yang harus kita lakukan adalah mewakili kekuatan dan menghitung percepatan berdasarkan pada mereka. Ambil, misalnya, gravitasi, sebagaimana diatur dalam ekspresi f = m * g mana g = (0, -9.8,0). Lainnya, pasukan lebih menarik dapat direpresentasikan juga. Berikut adalah ekspresi untuk tarik kental, yang disebabkan oleh proyektil mencoba untuk menyeberang media yang menawarkan beberapa perlawanan. Tarik kental sebanding dengan kecepatan, sehingga objek lebih cepat memiliki kekuatan yang lebih besar menentang mereka. Dalam persamaan ini, kd adalah konstanta menengah-dependen yang disebut koefisien hambatan: F =-kd * (dx / dt) =-kd * v, Sepertiga, menarik hukum mengatur perilaku partikel dihubungkan dengan pegas elastis. Setiap musim semi memiliki
panjang yang ideal, jadi jika kita kompres dengan menggerakkan dua partikel lebih dekat untuk beristirahat panjang ini, kekuatan akan mencoba untuk memisahkan mereka. Jika kita mencoba untuk memisahkan mereka melebihi panjang istirahat, kekuatan akan menentang itu juga. Hukum ini disebut Hukum Hooks Musim Semi dan sangat menarik karena merupakan titik awal dari banyak menarik teknik simulasi fisika. Berikut adalah persamaan lengkap: Ini sepotong mengesankan matematika, tapi jangan menunda oleh itu. Prosedur kami akan selalu menjadi jenis same.Several kekuatan digambarkan pada Gambar 19.2. Berikut adalah algoritma untuk menghitung keseluruhan sistem partikel fisika berbasis:
1. Hitung jumlah pasukan berinteraksi dengan partikel pada suatu titik waktu tertentu.
2. Turunkan percepatan dari pasukan.
3. Gunakan perbedaan waktu untuk menghitung perubahan posisi dan kecepatan menggunakan integrasi Euler. Gambar 19.2. Beberapa pasukan mungkin bisa bertindak atas partikel.
Berikut ini adalah, misalnya, kode yang dibutuhkan untuk mengimplementasikan mesin perilaku yang mengambil gravitasi dan gaya lateral konstan (seperti vektor angin) menjadi pertimbangan. Hal ini dapat digunakan untuk membuat semacam efek geyser:
untuk (i = 0; i {
elapsed_time = (timeGetTime ()-time_last_call) / 1000.0; / / dalam hitungan detik
/ / Pertama, pasukan menghitung
Titik gravity_force = partikel [i] berat * gravitasi.;
Titik WIND_FORCE = (...) / / menghitung angin
Titik total_force = gravity_force + WIND_FORCE; / / menghasilkan gaya pada partikel
/ / Detik, berasal percepatan
Titik accel = total_force / partikel [i] berat badan.;
/ / Ketiga, mengintegrasikan
partikel [i] + = kecepatan accel * elapsed_time.;
partikel [i] + = posisi partikel [i] kecepatan * elapsed_time..;
}
Jadi itu sebenarnya cukup mudah untuk membuat simulasi fisik berbasis partikel. Namun, banyak perilaku didefinisikan estetis, tidak secara fisik. Perlu diingat bahwa ketika Anda membuat sistem partikel Anda. Ambil, misalnya, kolom asap. Lintasan asap benar-benar sulit untuk mensimulasikan fisik. Arah Asap tergantung pada suhu, angin, bahan kimia yang terkandung dalam asap, dan sejumlah faktor kita tidak bisa mempertimbangkan dalam permainan real-time. Jadi, asap biasanya simulasi estetis, tidak secara fisik. Jika Anda berpikir tentang hal itu, segumpal asap pada dasarnya adalah serangkaian partikel asap (masing-masing diberikan baik dengan asap tekstur quad). Partikel-partikel ini memancarkan dari satu titik dengan kecepatan dalam arah vertikal positif. Saat mereka naik, mereka dipengaruhi oleh kekuatan yang kompleks, yang membuat bentuk kolom entah bagaimana menarik tetapi juga sulit untuk mensimulasikan. Berikut adalah simulator asap cukup populer:
untuk (i = 0; i {
elapsed_time = (timeGetTime ()-time_last_call) / 1000.0; / / dalam hitungan detik
/ / Pertama, pasukan menghitung
Titik WIND_FORCE = noise (partikel [i] posisi.);
Titik raise_force (0,1,0); / / karena asap suhu selalu naik
Titik total_force = WIND_FORCE, kekuatan / / dihasilkan pada partikel
/ / Detik, berasal percepatan
Titik accel = total_force / partikel [i] berat badan.;
/ / Ketiga, mengintegrasikan
partikel [i] + = kecepatan accel * elapsed_time.;
partikel [i] + = posisi partikel [i] kecepatan * elapsed_time..;
}
Dalam simulator ini, kebisingan () adalah panggilan yang populer rutin kebisingan Perlin, yang menghasilkan kebisingan terus-menerus dalam ruang 3D. Kebisingan memungkinkan kita untuk membuat pola gerakan, yang entah bagaimana terlihat seperti asap, berputar-putar dan naik dari tanah. Jelas, pendekatan ini adalah murni estetika didorong, tapi setelah semua, game merupakan industri estetika berbasis pada inti.
 Partikel Kepunahan
 Partikel dalam sistem yang tidak dimaksudkan untuk hidup lama. Setelah siklus hidup mereka habis, mereka akan dihapus dan respawned di emitor. Ini biasanya berarti partikel telah melintasi layar atau melakukan siklus penuh dan dengan demikian dapat masuk kembali dalam satu lingkaran. Beberapa sistem partikel, dengan ledakan menjadi contoh nyata, akan nonlooping. Partikel diciptakan, hidup, mati, dan kemudian sistem partikel secara keseluruhan dimatikan.
Meskipun demikian, kita sekarang akan fokus pada sistem-sistem di mana partikel-partikel harus diregenerasi untuk memahami kode yang diperlukan untuk melakukan itu. Umumnya, partikel meninggal setelah umurnya melampaui waktu untuk hidup. Ketika saat ini tiba, yang harus kita lakukan adalah memanggil rutin bertelur lagi, melewati ini identifier partikel sebagai parameter. Dengan demikian, kita mendapatkan sebuah partikel baru dengan parameter segar di mana kita memiliki yang lama. Dengan demikian, tidak ada penghapusan memori atau realokasi yang sebenarnya dibutuhkan. Semua yang kita lakukan adalah mendaur ulang posisi dalam array untuk elemen baru. Dari sudut pandang estetika pandang, sangat penting untuk memudar partikel entah bagaimana ketika mereka mendekati kematian mereka. Kegagalan untuk melakukannya akan membuat hilangnya partikel terlihat menjengkelkan karena partikel cerah tiba-tiba menghilang. Sejumlah teknik dapat digunakan untuk menangani situasi ini dengan benar. Dalam sistem partikel hujan, misalnya, hujan tidak dibunuh oleh usia, tetapi tewas ketika mereka menyeberangi tanah pesawat. Dengan demikian, tidak ada kemungkinan partikel "muncul keluar" dari tempat kejadian, karena mereka akan menyeberangi lantai dasar dalam bingkai tepat sebelum kehancuran mereka. Mengambil kolom asap, misalnya. Di sini, kita perlu cerdik menggunakan nilai alpha memudar partikel masuk dan keluar. Partikel akan buram di masa kejayaan mereka dan kemudian akan lahir dan mati hampir transparan. Perhatikan bahwa
perawatan yang sama kita ambil dengan kematian partikel harus diambil dengan kelahiran mereka juga. Kami tidak ingin partikel untuk pop tiba-tiba entah dari mana. Sebuah trik yang bagus untuk memastikan bahwa partikel alpha blend dengan baik ketika mereka memasuki dan meninggalkan panggung adalah untuk memodulasi alpha mereka sebagai fungsi dosa, seperti
alpha = sin (PI * Usia / maxage);
Argumen ke panggilan dosa mengembalikan nilai floating-point dalam kisaran dari 0 sampai Pi. Kemudian, fungsi dosa mengevaluasi ke nol (dengan demikian, benar-benar transparan) pada kedua nilai, dan naik lancar ke 1 di antara untuk mewakili opacity di tengah partikel dari life.Rendering Partikel The kepercayaan dari sistem partikel tergantung pada render sebanyak karena tergantung pada simulasi yang sebenarnya dari perilaku. Kita dapat mengubah massal penduduk ke air yang mengalir dengan hanya menyesuaikan render partikel kami
engine.Given dengan sejumlah besar fenomena yang dapat dimodelkan menggunakan partikel, seharusnya tidak mengejutkan bahwa banyak pendekatan rendering yang berbeda ada. Tapi ada beberapa tips umum untuk mengikuti, yang tercakup dalam bagian berikut.
Hitung Partikel Cheaply Rendering partikel dapat menjadi bermasalah, terutama ketika berhadapan dengan sejumlah besar elemen. Jangan lupa kita harus memutar dan menerjemahkan setiap partikel individu sehingga wajah penonton dan memberikan ilusi yang tepat. Rotating memiliki biaya, terutama ketika Anda melakukannya berkali-kali. Kita bisa memilih untuk membuat
partikel satu per satu, berputar masing-masing dengan tumpukan matriks yang terdiri dari rotasi dan terjemahan. Tetapi karena transformasi hanya bisa dilakukan di luar bagian rendering, kita perlu untuk membuat partikel secara terpisah, dan dengan demikian menghilangkan pilihan untuk mengirim mereka dalam batch, yang selalu lebih efisien. Dengan demikian, metode yang berbeda akan digunakan. Pendekatan pertama adalah untuk menyelaraskan mereka ke kamera sendiri dengan merancang hak
dan sampai vektor, dan kemudian mendefinisikan partikel berdasarkan pada mereka. Di dunia dengan hanya yaw, vektor kanan (berkaitan dengan kamera dan layar) dapat didefinisikan sebagai titik yang tepat (cos (yaw + pi / 2), 0, sin (yaw + pi / 2));
Dan vektor up hanya
Titik up (0,1,0);
Kemudian, layar-blok billboard ukuran S pada posisi pos dapat didefinisikan sebagai
P1 = pos kanan * S * S-up;
P2 = pos + kanan * S * S-up;
P3 = pos + kanan * S + up * S;
P4 = pos kanan * S + up * S;.
 Komputasi vektor dan tepat untuk partikel. Metode ini dapat dengan mudah diperluas untuk kamera penuh dengan roll, pitch, dan yaw. Dalam hal ini, menghitung vektor diri sendiri adalah bukan ide yang baik, karena Anda bisa mendapatkannya dari modelview matriks, seperti yang ditunjukkan dalam kode berikut:
glGetFloatv (GL_MODELVIEW_MATRIX, tikar)
right.create (mat [0], tikar [4], tikar [8]);
up.create (tikar [1], tikar [5], tikar [9]);
Sebuah alternatif yang lebih baik adalah untuk membiarkan API menyelaraskan billboard menggunakan fungsi hardware. Kartu video yang paling modern dapat menangani billboard internal, sehingga semua kita melewati bus adalah koordinat partikel dan tidak banyak lagi. Kartu ini juga mengurus membangun paha depan dan membuat mereka ke layar. Ini memberikan hasil yang lebih baik karena kita menghemat sumber daya bus dan menghindari transformasi. Fungsi ini adalah
hadir di kedua OpenGL dan DirectX bawah bentuk Sprite Point. Dalam OpenGL itu adalah bagian dari sebuah ekstensi, dan DirectX itu dibangun ke API inti. Gunakan Blending Mode kekuatan ekspresif Tepat besar tersedia jika Anda belajar bagaimana untuk melepaskan itu. Banyak mode blending yang tersedia bagi Anda untuk bereksperimen dengan dan menciptakan sistem tampak unik. Dua mode dasar yang disaring dan campuran aditif. Campuran disaring didefinisikan oleh nilai-nilai alpha:
SRC_ALPHA, ONE_MINUS_SRC_ALPHA
Ini memberikan tampilan partikel semitransparan, seperti hujan. Partikel ini tidak menerangi diri, sehingga menambahkan lebih banyak lapisan tidak akan membuat adegan tampak lebih cerah. Itu dapat dicapai dengan aditif pencampuran, seperti
SRC_ALPHA, SATU
Jadi kita tidak menyaring latar belakang, tetapi menambahkan komponen kita untuk itu. Mode ini digunakan untuk apa pun yang melibatkan cahaya, api, ledakan, dan sebagainya. Hati-hati: nilai Alpha harus tetap rendah, sehingga tidak menjenuhkan gambar akhir terlalu cepat dan mempertahankan beberapa warna.
Tekstur animasi
Banyak sistem partikel perlu Anda pergi satu langkah lebih hanya menghidupkan partikel menggunakan simulator berkualitas tinggi. Bayangkan bola api, misalnya. Dinamikanya terlalu cepat dan kompleks untuk membuat setiap partikel sebagai quad statis. Dengan demikian, kita perlu menggabungkan simulator yang baik dengan partikel-tingkat animasi, sehingga setiap partikel memiliki beberapa frame animasi, biasanya disimpan dalam tekstur yang sama seperti ubin. Kemudian, partikel akan siklus
melalui frame animasi selama siklus hidupnya, membuat tampilan keseluruhan jauh lebih dinamis. Jika Anda memilih untuk mengikuti jalan ini, hanya membuat partikel yakin tidak sinkron dalam loop animasi mereka, atau efek akan benar-benar hancur. Partikel yang berbeda harus berada di frame yang berbeda dalam animasi pada suatu titik waktu tertentu.
Sistem dirantai / hirarkis
Dinamika dunia nyata sering menggabungkan beberapa tahapan untuk menciptakan ilusi komposit kompleks. Ambil ledakan diciptakan oleh penembakan roket, misalnya. Api muncul dari knalpot, dan kemudian awan besar asap dan uap air yang dihasilkan. Selain itu, partikel kecil es terpisah dari struktur utama,
mengikuti lintasan yang berbeda. Bagaimana kita bisa mencirikan itu? Apakah sistem partikel? Cukup jelas tidak, karena ada beberapa jenis partikel, masing-masing diatur oleh simulator yang berbeda dengan mesin rendering yang berbeda. Namun sistem dapat dilihat secara keseluruhan: sistem sistem partikel. Dengan demikian, kita harus merancang sistem partikel kami sehingga kami dapat agregat dan rantai mereka ke dalam kelompok. Kita perlu array sistem dan
Kebijakan pesan-passing yang memungkinkan chaining berlangsung. Sebagai contoh, itu adalah ide yang baik untuk menambahkan "memadamkan perilaku" pada partikel, yang mendefinisikan tindakan apa yang dilakukan setiap kali kita perlu respawn partikel. Perilaku ini akan kosong secara default, tapi kita bisa memutuskan untuk membuat sebuah partikel dari jenis yang berbeda dari satu ini memadamkan. Pikirkan elemen api yang, setelah kehancuran, memicu asap
sistem. Ini jenis arsitektur keseluruhan diperlukan untuk menciptakan efek lebih kaya.
Parameter visual Fungsi Waktu Semua parameter visual fungsi waktu. Lihatlah api, misalnya. Api inti biasanya biru, dan ketika bergerak menjauh, ternyata kuning, kemudian putih, dan perlahan-lahan lenyap. Sistem partikel realistis perlu parameter timevarying. Warna dan alpha yang jelas, tetapi ada orang lain. Spin (kecepatan rotasi), bingkai dalam tekstur animasi, dan sebagainya menciptakan efek yang jauh lebih meyakinkan jika waktu yang dimasukkan ke dalam persamaan. Jika setiap partikel memiliki kurva waktu-respon yang sedikit berbeda, efek yang benar-benar akan meningkatkan.
Beberapa Catatan tentang Arsitektur
Beberapa cara akal sehat coding sistem partikel telah berevolusi selama bertahun-tahun. Pada dasarnya, dua "pola" yang ada, yang cocok dalam skenario yang berbeda. Pada salah satu ujung spektrum, beberapa tim kode sistem partikel sebagai hirarki kelas, jadi kami memiliki kelas "particlesystem" abstrak, dari mana kelas sistem partikel tertentu akan diturunkan melalui warisan. Particlesystem akan mendeklarasikan anggota virtual seperti recalc dan render, yang akan disediakan oleh setiap sistem individu atau bahkan oleh partikel
kelas itu sendiri. Berikut adalah contoh dibangun menggunakan teknik ini:
kelas particlesystem
{
publik:
titik posisi;
partikel * data;
int numparticles;
/ / Metode dieksekusi dari particlesystem kelas dasar
membatalkan menciptakan (int, point); / / menciptakan sistem N partikel
batal recalc (); / / recalcs semua partikel
/ / Metode yang akan didefinisikan oleh kelas tertentu
cat virtual void (); / / cat partikel N.
virtual void respawn (int); / / re-menghasilkan partikel i
kekosongan maya mempengaruhi (int); / / menghitung interaksi partikel i dengan
lingkungan
};
Curah hujan kelas: particlesystem publik
{
publik:
/ / Params tertentu
Titik throwv;
titik pos;
mengapung initvel;
int texid;
maxttl ganda;
minttl ganda;
maxvel ganda;
minvel ganda;
xrand ganda;
yrand ganda;
zrand ganda;
ganda movx;
ganda movz;
warna Ocol;
warna fcol;
angin titik;
ganda kepadatan;
curah hujan (): particlesystem () {}
/ / Ditulis ulang metode
loadparams kekosongan maya (char *, point);
virtual void respawn (int);
virtual void mempengaruhi (int);
void paint virtual ();
}; Menggunakan pendekatan ini memungkinkan kita untuk mengatur semua sistem di dunia game dalam array dan mengaksesnya linear menggunakan antarmuka umum. Setiap sistem masih bisa berbeda, dari parameter ke simulator fisika. Tapi semua detail yang tersembunyi dari programmer, yang bisa mengaksesnya menggunakan antarmuka homogen. Sistem partikel hirarkis, menunjukkan abstrak dan filosofi classes.Another diturunkan adalah untuk menciptakan mendalam, kompleks partikel kelas sistem, di mana sistem individu hanyalah obyek data-driven yang parameterisasi kelas dalam banyak cara. Dalam kasus ini, kita akan memiliki parameter yang akan menentukan hampir segala sesuatu, karena semua sistem partikel dalam permainan kami akan dilaksanakan di kelas yang sama. Kita akan membutuhkan nilai Boolean untuk menghidupkan atau mematikan pasukan khusus, koordinat tekstur, dan sebagainya.
Keuntungan dari metode kedua ini adalah kesederhanaan. Setelah semua, banyak sistem partikel dapat diimplementasikan dari bagian utama kode, mungkin menggunakan beberapa saklar konstruksi sepanjang jalan untuk memilih parameter seperti jenis emitor atau kecepatan, dan seterusnya. Keuntungan lain adalah bahwa Anda dapat membuat alat editing grafis yang memungkinkan Anda untuk parameterisasi objek sistem partikel, dan dengan demikian mudah menguji ide-ide baru sistem partikel dari perspektif pengembang artis / konten. Pada akhirnya, perbedaan terletak tidak begitu banyak dalam kecepatan mentah, karena kedua metode memiliki kelebihan dan kekurangan dalam hal ini. Ini lebih merupakan masalah apa yang Anda inginkan. Artinya, apakah Anda ingin banyak sistem
yang sangat berbeda satu sama lain dan berbagi hampir tidak ada kode sama sekali, atau sistem di mana kita dapat mendaur ulang sebagian besar sumber, dan dengan demikian dapat diimplementasikan dalam satu file yang dapat sangat parameterized?
Teknik Speed-Up
Setiap hardware dikutuk menjadi kinerja terbatas, sehingga tujuan sistem kami 'harus cukup terbatas. Tapi kadang-kadang kita bisa mencapai yang lebih tinggi dan lebih cepat dengan perencanaan yang cermat dan analisis dari sistem kita ke model. Banyak teknik dapat digunakan untuk mempercepat perhitungan kami, dan dengan demikian memungkinkan kita untuk dapat membuat unik, sistem partikel yang kompleks. Pada bagian ini, saya akan detail berbagai tips dan trik yang dapat
kalikan kekayaan dan kualitas hasil Anda. Catatan, bagaimanapun, bahwa tidak ada peluru perak dalam nasihat ini. Hanya pengetahuan yang mendalam tentang apa yang Anda pemodelan dapat membantu Anda menentukan mana dari teknik ini mungkin bekerja terbaik bagi Anda. Hindari Malloc dan Gratis
Optimasi pertama untuk sistem partikel didasarkan pada pengamatan bahwa mengalokasikan dan membebaskan memori adalah proses yang lambat. Dengan demikian, panggilan ke rutinitas manajemen memori di dalam loop sistem harus dihindari sebisa mungkin. Meskipun manajer memori yang sangat efisien memiliki overhead yang signifikan untuk setiap alokasi
atau dealokasi memori. Mereka harus memindai blok bebas dari memori, pilih yang paling cocok (sesuai dengan kebijakan yang berbeda), dan sebagainya. Jadi, mengambil beberapa waktu untuk merencanakan kode Anda adalah cara terbaik untuk mencapai kinerja puncak. Misalnya, membebaskan memori setiap kali sebuah partikel mati (atau mengalokasikan lebih banyak memori untuk partikel baru lahir) dapat memiliki hit kinerja yang signifikan, terutama dalam sistem-sistem dengan nomor partikel besar atau masa hidup yang pendek. Sebuah alternatif untuk malloc dan bebas (atau baru dan menghapus, jika Anda berbaring di C + + tanah) harus ditemukan untuk menghindari biaya mereka. Pendekatan termudah adalah untuk memetakan sistem kami untuk array statis partikel. Kemudian, setiap kali partikel terbunuh, kita akan menandainya (menggunakan satu bendera Boolean). Dengan cara ini rutin penghapusan dapat dilewati.
Kita tidak perlu mengalokasikan memori untuk partikel baru setiap saat. Mereka ditempatkan di posisi array yang sama sebagai partikel mati sebagai gantinya. Dengan menggunakan teknik ini, sistem partikel dapat berisi sejumlah konstan partikel, menghindari panggilan ke malloc dan bebas. Dari pembahasan sebelumnya, Anda mungkin berpikir kita perlu loop array untuk menentukan di mana untuk menempatkan sebuah partikel baru lahir. Tapi itu tidak perlu terjadi. Satu loop dapat menghitung ulang, membunuh, dan respawn secara efisien. Berikut adalah ide kode:
untuk setiap partikel dalam sistem
jika partikel sudah mati
respawn partikel [i]
lain
recalc partikel [i]
end if
end untuk
Indexing spasial
Pengindeksan spasial (dijelaskan secara rinci dalam Bab 4, "Design Patterns") memungkinkan kita untuk dengan cepat melakukan query yang harus dilakukan dengan lokasi spasial. Tes seperti menghitung jarak dari satu titik ke titik satu set objek, memilih pasangan terdekat dalam satu set spasial, dan sebagainya dapat dipercepat jauh dengan menggunakan mereka. Jadi, dengan menggunakan indeks spasial harus memungkinkan kita untuk mempercepat sistem partikel global yang signifikan. Ingat bahwa, pada dasarnya, sistem partikel dengan efek global memiliki biaya terburuk O (# partikel ^ 2) ini berasal dari fakta bahwa setiap partikel harus diuji terhadap orang lain untuk memperhitungkan saling ketergantungan. Jadi, indeks spasial memungkinkan kita untuk melacak hubungan tetangga, mengurangi biaya untuk O (# partikel * k) di mana k adalah konstanta yang tergantung pada kualitas indeks spasial.
Misalnya, untuk grid, 2D
sistem dengan distribusi homogen dari partikel, kita memiliki K = # partikel / (Xs * Zs) di mana Xs dan Zs adalah jumlah sel dalam grid di X dan Z masing-masing. Jelas, kotak halus dapat membantu banyak dalam mengurangi biaya perhitungan kembali sistem partikel.
LOD Sistem Partikel
Sistem partikel sering terdiri dari beberapa ratusan atau ribuan elemen, masing-masing membutuhkan update dinamis. Selain itu, metode yang digunakan untuk membuat mereka sering mahal (alpha blending, multipass teknik). Tapi kita bisa mencapai perbaikan yang signifikan dalam kinerja dengan menggunakan tingkat-of-detail (LOD) paradigma.
Bayangkan segumpal asap dari api unggun dimodelkan menggunakan teknik partikel. Dilihat dari kejauhan, kita mungkin dapat melewatkan beberapa perhitungan dan masih mendapatkan hasil yang realistik. Kemudian, seperti yang kita bergerak lebih dekat, dan lebih partikel lebih dapat melahirkan, dan model interaksi yang lebih baik dapat diterapkan untuk realisme ekstra. Jelas, sistem harus hati-hati diuji untuk memastikan konsistensi visual yang sepanjang pendekatan. Tapi
kinerja ditambahkan kemungkinan akan mengkompensasi artefak kecil yang mungkin muncul.
Sekarang, mari kita lihat sistem partikel LOD secara umum. Jelas, ada dua daerah kita dapat bekerja pada segi LODs. Pertama, kita bisa mencoba untuk mengoptimalkan kode rendering. Kedua, kita bisa mencoba untuk mengoptimalkan recalc / respawn lingkaran.
Mengoptimalkan kode render untuk sistem partikel bisa rumit. Selain itu, mengingat kecepatan akselerator saat ini di pasar, render biasanya tidak kemacetan. Memperbarui partikel dan membuat yang baru dengan yang lama mati secara signifikan lebih mahal. Jadi, saya akan berkonsentrasi pada teknik kedua.
Mengoptimalkan recalc () dengan cara LODs relatif sederhana. Kita hanya perlu mendefinisikan apa yang akan bervariasi tergantung pada jarak / resolusi dan bagaimana hal itu akan bervariasi. Teknik termudah adalah dengan memvariasikan jumlah partikel, interpolasi dari sistem partikel dasar dengan hanya beberapa partikel ketika kita berada jauh, ke sistem fullblown ketika kita dekat. Urutan kita akan mengikuti akan
1. Hitung jumlah ideal partikel tergantung jarak.
2. Hitung Ulang partikel yang ada.
3. Jika partikel mati, respawn hanya jika kita berada di bawah jumlah partikel yang ideal kita.
4. Jika kita masih di bawah jumlah partikel yang ideal kita, memindai partikel kosong di array untuk respawn sesuai.
Jadi, kita memiliki ukuran sistem ideal yang kita berkumpul di dengan cara tidak partikel respawning (untuk mengurangi ukuran) atau dengan membuat yang baru (untuk meningkatkan detail). Sebuah peringatan pada teknik ini adalah bahwa ia memerlukan kecepatan pemirsa menjadi lambat dibandingkan dengan frekuensi respawn partikel. Sebagai counterexample, bayangkan simulator jet tempur di mana kita menggunakan teknik ini untuk mensimulasikan asap berasal dari ledakan tanah. Pesawat "melihat" sistem partikel lima mil di depan, di mana terdiri dari
hanya sekitar 10 partikel. Karena jet tempur sangat cepat, dan bulu-bulu asap relatif kecil, pesawat bisa mendekati terlalu cepat untuk sistem untuk membuat partikel baru, menghasilkan sistem yang buruk yang tampak. Cara lain untuk mengoptimalkan recalculations melibatkan menyederhanakan perhitungan dalam dilakukan untuk setiap partikel. Beberapa sistem menghitung persamaan yang kompleks untuk memastikan tampilan fisik dan visual yang benar. Tapi untuk
sistem yang jauh, beberapa perhitungan dapat dimatikan, sehingga menghemat siklus clock berharga. Saya akan memberikan dua contoh di sini.
Bayangkan sebuah sistem partikel berbasis fisik, seperti bulu asap berinteraksi dengan angin. Pada dasarnya, bulu-bulu naik menggunakan gelombang sinus untuk menggantikan di X dan Z, dan beberapa kebisingan Perlin ditambahkan ke dalam campuran untuk memberikan bagus, berputar-putar kaya. Pengaruh Kebisingan meningkat dengan tinggi, sehingga bagian atas bulu-bulu lebih kacau. Tapi ingat bahwa kebisingan Perlin adalah fungsi mahal: Setiap penilaian membutuhkan matematika trivial seperti
interpolasi trilinear dan interpolators Linear Bulat (SLERPs). Jelas, bukan jenis matematika yang ingin Anda lakukan berdiri lima mil jauhnya dari sistem. Jadi, keputusan kami bisa untuk mematikan suara Perlin dengan jarak. Sebuah contoh yang berbeda akan menjadi sistem partikel global atau interaktif, di mana setiap partikel berinteraksi dengan
orang lain atau dengan lingkungan untuk menciptakan perilaku yang kompleks. Sering kali, interaksi interparticle memberikan detail halus, seperti tabrakan partikel, atraksi, dan tolakan: daun jatuh dan bertabrakan dengan satu sama lain, hujan bertabrakan dengan skenario, dan sebagainya. Di sisi lain, mereka sangat mahal. Ingat bahwa partikel klasik recalc lingkaran memiliki biaya O (jumlah partikel) Tapi sistem interaktif menimbulkan bahwa untuk O (# partikel * # dari interactors) Kita telah melihat bagaimana teknik pengindeksan spasial dapat digunakan untuk mengurangi anggota kedua biaya
persamaan. Tapi banyak perhitungan global atau interaktif dapat diperkecil (atau bahkan dihilangkan) dengan jarak. Hal ini tidak mungkin bahwa penonton akan melihat jika daun tidak bertabrakan ketika berdiri cukup jauh dari sistem.

Shader Berbasis Sistem Partikel sistem partikel adalah untuk mengimplementasikan simulator fisika mahal di shader (shader yang dibahas dalam Bab 21, "Teknik Prosedural"), sehingga dapat dijalankan secara paralel ke CPU. Hal ini menyebabkan beberapa pembatasan pada apa yang sebenarnya dapat dihitung, tetapi kebanyakan efek dapat dicapai dengan cara ini. Shader adalah subjek maju, dan meliputi mereka di sini akan mengganggu struktur buku. Tapi bagian yang lengkap pada sistem partikel dan shader dapat ditemukan di Bab 21. Saya sarankan Anda menelusuri bagian tersebut untuk belajar bagaimana untuk mempercepat perhitungan sistem partikel menggunakan shader.





referensi : http://hafizh130493.blogspot.com