Merusak permukaan


10

Saya mencoba untuk mencapai perilaku fisik cacat untuk permukaan level, tetapi tidak tahu bagaimana memulainya dengan implementasi sejauh ini.

Terlepas dari bentuk permukaannya (pesawat, kubus, bola ...), saya ingin memiliki lekukan kecil pada posisi dari entitas permainan (pemain, musuh, benda ...).

Agak rumit untuk dijelaskan, jadi saya ilustrasikan apa yang saya bicarakan, berikut ini adalah contoh dengan sebuah bola:

ilustrasi merusak permukaan game

Jadi, permukaannya harus sedikit berubah bentuk (agar terlihat seperti tempat tidur atau sofa yang sangat empuk). Permukaan saya mungkin perlu jumlah simpul yang tinggi untuk mendapatkan deformasi yang halus, tetapi masalah besar saya adalah matematika untuk menghitung deformasi ini.

Saya pemrograman di C / C ++ dengan OpenGL, tetapi saran apa pun di arah yang benar akan baik-baik saja.

Jawaban:


5

Untuk deformasi sederhana, Anda dapat memilih titik pada permukaan / objek untuk dimanipulasi, kemudian menerapkan transformasi (misalnya terjemahan) untuk itu. Kemudian, ubah semua titik dalam jarak tertentu dari titik itu dengan cara yang sama, tetapi miliki kekuatan longgar transformasi yang semakin jauh dari titik yang Anda pilih.

Jadi, untuk membuat hal-hal indentasi di bawah karakter, pilih titik dia berdiri dan pindahkan ke bawah.

Bergantung pada efek apa yang ingin Anda arsipkan, Anda mungkin ingin menerapkan transformasi secara global, lokal atau menuju / jauh dari pusat objek dan / atau menggunakan fungsi yang berbeda untuk mensimulasikan materi yang berbeda.

Contoh sederhana indentasi sebuah pesawat menggunakan fungsi fall / cos falloff dapat ditemukan di antara www.lighthouse3d.com/opengl/terrain/


1
Saya mendapatkan 403 kesalahan terlarang pada tautan.
George Duckett

1
Baiklah ... 'lil hack sedang dalam urutan (juga, langsung ke bagian yang dimaksud): web.archive.org/web/20100927141645/http
Exilyth
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.