Format file untuk model 3D statis dan animasi

22

Saat ini saya sedang menulis game 3D di C ++ dengan OpenGL dan saya datang ke bagian di mana memuat model 3D. Oleh karena itu saya mencari format file dan teknik populer untuk

  • menampilkan jaring statis dan
  • membuat jaring animasi.

Saya telah menemukan cukup banyak format dan teknik yang mungkin, seperti animasi keyframe, animasi kerangka, MD2 hingga MD5, 3DS, X, Collada dll. Hlm.

Untuk kesederhanaan, saya ingin menggunakan format (dan teknik) yang memungkinkan keduanya, yaitu jaring statis dan animasi. Jadi pertanyaan saya adalah apakah ada format cocok untuk tugas itu dan mana yang Anda sarankan. Dan untuk sedikit memperjelas: Saya tidak perlu animasi yang sangat halus atau fitur yang baru.

Sidenote: Karena saya penggemar blender (tapi bukan ahli ;-)) akan sangat membantu jika bisa digunakan dengan itu - tapi tentu saja itu tidak boleh menjadi penghenti acara, di sini.

stschindler
sumber

Jawaban:

16

Biarkan saya mengusulkan Anda untuk menggunakan Collada .

Ini banyak didukung oleh alat DCC dan terstandarisasi dengan baik. Ini mendukung animasi kerangka dan ... well, ia melakukan hampir semua hal, termasuk shader dan fisika - itu tidak akan relevan untuk Anda.

Animasi berbasis vertex seperti dalam format MDL atau MD2 kurang lebih merupakan peninggalan masa lalu. Saat ini, sebagian besar animasi adalah animasi skeletal (yaitu berpikir jika karakternya mulus) dan alat pembuat konten dioptimalkan untuk mereka.

Blender memiliki pengekspor Collada yang berfungsi, tetapi seperti biasa, mengekspor barang dari Blender dapat mengganggu. Anda mungkin perlu mencoba eksportir alternatif atau format file atau meretas skrip secara manual jika Anda mengalami masalah.

Untuk memuat Collada, gunakan pustaka seperti FCollada atau ColladaDOM (Jangan mencoba menguraikannya sendiri, Collada adalah monster XML yang benar - benar gemuk ...). Ada juga Perpustakaan Impor Aset Terbuka , yang memuat ~ 25 format file, termasuk Collada (dan semua format lain yang Anda sebutkan). Ini akan menjadi pilihan yang sangat baik karena bertujuan terutama untuk para pengembang game dan memberikan outputnya dalam format yang sesuai untuk rendering real-time. Tapi jujur ​​saja: Saya salah satu penulis bersama, jadi saya mungkin agak bias.

Terakhir tetapi tidak kalah pentingnya : Format file yang Anda gunakan untuk mengimpor aset Anda seharusnya tidak menentukan kemampuan mesin Anda dan teknik yang digunakannya - itu seharusnya lebih baik sebaliknya. Apakah animasi Anda super-halus bukan masalah format impor, ini tentang teknik yang Anda gunakan untuk menghidupkan jerat dan seberapa baik mereka dimodelkan di tempat pertama. Format impor seharusnya hanya membantu Anda membawa data dari Blender ke dalam gim Anda.

Alexander Gessler
sumber
Terima kasih banyak atas jawaban terinci Anda. Saya mendengar tentang Collada pertama kali hari ini (direkomendasikan oleh seorang teman) dan tidak yakin apakah itu benar-benar siap untuk digunakan dalam lingkungan produksi. Saya akan mencobanya sekarang, terima kasih. :-)
stschindler
2
Saran yang bagus, terutama referensi ke AssImp. Saya tidak akan menyarankan COLLADA, karena tampaknya tidak ada yang secara konsisten dan benar mendukung semua itu, dan itu agak besar untuk tujuan konten yang sebenarnya. Saya sarankan menggunakan sesuatu seperti MD5, yang memberi Anda kerangka dan cukup banyak diterapkan dengan benar (saya pikir). Saya juga tidak akan mengabaikan MD2 dengan mudah; ada banyak model sampel keluar untuk itu, dan Anda dapat dengan sepele menganimasinya dengan murah (meskipun tidak berguna untuk ragdolls atau apa pun).
ChrisE
Saya hanya akan bermain-main dengan format file yang berbeda. Berkat AssImp, itu akan mudah dilakukan. MD2 memang ide pertama saya, tapi itu cukup mahal untuk dibuat, saya pikir, daripada hanya mengekspor tulang yang tepat. Ragdolls tidak diperlukan dalam kasus saya, saya hanya perlu model animasi, tidak ada fisika yang terlibat.
stschindler
Memang ada eksportir Collada yang sangat buruk di luar sana, tetapi setidaknya formatnya terdokumentasi dengan baik sehingga Anda selalu tahu siapa yang harus disalahkan :-). MD5 adalah kandidat yang baik juga, tetapi saya tidak tahu seberapa bagus para eksportir Blender. MD2 memiliki representasi simpul yang sangat terbatas dan menderita dari ukuran dan batas akurasi. Saya benar - benar tidak akan menggunakannya, tidak ada alasan untuk melakukannya.
Alexander Gessler
wazim.com/Collada_Tutorial_1.htm adalah tutorial mendalam yang cukup bagus untuk memuat collada, tapi saya tetap merekomendasikan menggunakan perpustakaan sebagai gantinya.
Exilyth