Saya mencoba untuk mencapai efek warp yang Anda lihat dalam game seperti Geometry Wars .
Dapatkah seseorang membantu menjelaskan apa yang sedang terjadi di sini? Saya merasa seperti sumbu z grid dimanipulasi dalam beberapa cara, dengan cara apa pun, oleh programmer, tetapi apakah mungkin ada beberapa persamaan matematika yang dikenal untuk benar-benar mendapatkan efek warping yang benar?
Sunting: Untuk lebih spesifik, maksud saya warping dari grid. Bagaimana semuanya terlihat ditarik ke arah sumbu z negatif dan kemudian memantul.
graphics
graphic-effects
Joey Green
sumber
sumber
Jawaban:
Implementasi 10 menit dari sistem pegas sederhana (atau begitulah katanya di blog - nya ;)). Sistem ini dapat menangani beberapa lungsin dan hal-hal lain yang merusak grid.
Diperbarui untuk menambahkan beberapa detail tambahan kecil:
Beberapa detail lainnya. Dari sebuah wawancara yang dulu di-host di situs Aneh Ciptaan (situs itu sekarang telah hilang karena penutupan perusahaan) ada pertanyaan:
T: Salah satu fitur grafis baru yang paling mencolok dalam permainan adalah area bermain "grid gravitasi". Bagaimana Anda membuat ini terlihat sangat keren; apakah setiap objek dalam game benar-benar memiliki gravitasi sendiri? Grid itu sendiri terdiri dari 60.000 poin, masing-masing memberikan sedikit kekuatan pada tetangganya. Simulasi itu sendiri berada di ujung stabilitas yang menyebabkannya berayun begitu banyak ketika salah satu objek game memberinya dorongan kecil! Hanya beberapa jenis objek yang memengaruhi grid. Karena sistem grid agak mahal untuk dihitung, sebenarnya berjalan pada inti kedua bersama dengan sistem audio, (inti pertama didedikasikan untuk gameplay dan partikel, yang ketiga digunakan untuk membuat audio).
sumber
Saya tidak tahu apakah ada cara yang "benar" untuk melakukannya, tetapi kemungkinan itu hanya transformasi linear yang menyenangkan secara estetika yang diterapkan dengan falloff yang dihitung dari jarak ke titik.
Jadi untuk elemen apa pun yang bekerja dengan Anda, Anda akan:
Namun, perang Geometri menerapkannya sebagai belokan yang menyimpang ke beberapa elemen, sedangkan elemen lain seperti partikel hanya dipengaruhi oleh "kekuatan", tanpa terdistorsi. Anda bisa menerapkan distorsi dalam vertex shader, dengan anggapan Anda memiliki cukup simpul untuk sampel efek dengan lancar. Sebagai alternatif, Anda dapat merender semua yang perlu mempengaruhi buffer offscreen terlebih dahulu, dan kemudian memberikan hasilnya ke quad tessellated baik yang Anda gunakan distorsi, sebelum menambahkan semua elemen yang tidak terdistorsi di atas.
Sedangkan untuk transformasi, penskalaan akan memberikan Anda tampilan yang menarik. Jika saya ingat dengan benar, ada beberapa putaran yang terjadi, yang hanya akan sedikit rotasi.
Anda bisa menjadi semakin keren dengan perhitungan faktor intensitas untuk mendapatkan efek yang terlihat lebih aneh. Anda bisa, misalnya, menghitung sudut (a) bahwa suatu elemen relatif terhadap pusat, dan faktor yang masuk. Ambil cos (a) dan Anda dapat membuat gelombang radial dalam efeknya. Yang ingin Anda lakukan adalah mengatur diri Anda dengan kode perancah yang diperlukan dan kemudian pergi ke kota bereksperimen dengan berbagai kombinasi faktor.
sumber