Animasi kerangka efisien

11

Saya melihat mengadopsi format animasi kerangka ( seperti yang diminta di sini ) untuk game RTS. Representasi individu dari masing-masing model di layar akan kecil tetapi akan ada banyak dari mereka!

Dalam animasi skeletal misalnya file MD5, setiap vertex individu dapat dilampirkan ke sejumlah sendi yang berubah-ubah.

Bagaimana Anda dapat secara efisien mendukung ini saat melakukan interpolasi di GLSL? Atau apakah mesin melakukan animasinya pada CPU?

Atau apakah mesin menetapkan batas sewenang-wenang pada sambungan maksimum per titik dan memanggil multiplikasi nop untuk sambungan yang tidak menggunakan jumlah maksimum?

Apakah ada game yang menggunakan animasi skeletal dalam pengaturan seperti RTS sehingga membuktikan bahwa pada kartu grafis terintegrasi saya tidak perlu khawatir dalam menempuh rute tulang?

Akan
sumber
+1, Ini pertanyaan yang bagus. Saya selalu bertanya-tanya apakah animasi harus dilakukan dalam bahasa shading atau pada CPU ...
James
RTS Games menggunakan mesin SAGE EA (C&C 3 dan yang lebih baru, seri BFME) menggunakan animasi skeletal, tetapi di sana simpul terikat hanya pada satu tulang (setidaknya dalam BFME)
Bart van Heukelom

Jawaban:

6

Membatasi jumlah pengaruh tulang adalah hal biasa, ya. Anda dapat mempengaruhi 0-weight pengaruh yang tidak digunakan, atau memiliki mekanisme loop / early-out untuk melewati.

Mengenai apakah itu berfungsi untuk RTS, saya tidak punya referensi untuk Anda, tapi saya kira Anda akan membutuhkan LOD jika bekerja dengan sejumlah besar karakter di layar, dan juga jika karakter itu kecil.

LODing karakter kerangka sama dengan LODing apa pun, kecuali Anda mungkin ingin LOD mempengaruhi tulang dan kerangka serta mesh.

Sebagai contoh, level detail yang rendah mungkin hanya menggunakan satu tulang dengan pengaruh tertinggi per-verteks (juga dikenal sebagai "pengerasan kulit").

Anda mungkin juga akan membatasi jumlah tulang dalam kerangka untuk model LOD rendah.

Akhirnya - mempertimbangkan apakah Anda pernah perlu untuk membuat karakter close-up. Anda mungkin hanya ingin memodelkan, menguliti, dan menghidupkan karakter untuk jarak tampilan terdekat ... tentu Anda tidak ingin menyimpan semua data runtime pada resolusi yang jauh lebih tinggi daripada yang pernah Anda render. Anda mungkin menemukan bahwa Anda hanya tidak membutuhkan lebih dari kerangka yang sangat mendasar dan beberapa pengaruh per-simpul untuk situasi Anda.

JasonD
sumber
Saya berharap seseorang mungkin berkata "Anda benar-benar tidak ingin tulang untuk menara di rts jika potongan Anda kecil; pertimbangkan MD3 dengan fitur model yang terhubung sebagai gantinya" atau sesuatu
Will
Yah saya tidak akan menggunakan menguliti untuk jenis jerat dalam situasi seperti itu, tetapi "tulang" hanyalah nama mewah untuk transformasi hierarkis. Tidak ada yang menghentikan Anda dari hanya menempelkan jerat ke mereka daripada simpul bobot. (dengan kata lain, untuk turet Anda mungkin hanya memiliki dua tulang dan dua jerat, dan tidak ada skining / weighting sama sekali).
JasonD
2

Saya tidak berpikir animasi kerangka baik untuk game RTS, animasi kerangka akan membutuhkan proses ekstra untuk semua karakter, sementara animasi keyframe mengkonsumsi lebih banyak memori tetapi Anda akan menggunakan yang sama untuk banyak karakter, juga permainan rts memerlukan sedikit animasi per karakter

james
sumber