Kapan harus menggunakan pohon campuran vs mesin negara untuk animasi

13

Im game dev hobbiest yang berpengalaman membuat game pertama saya dengan karakter animasi 3d (dalam Unity) dan saya berjuang untuk mencari tahu kapan harus menggunakan pohon campuran vs mesin animasi negara. Saya mengerti keduanya secara konseptual tetapi saya telah melihat pohon campuran dan mesin animasi digunakan untuk animasi karakter dalam banyak tutorial baik dari Unity dan dari sumber lain. Saya tidak yakin kapan / mengapa satu lebih baik dari yang lain saya berharap seseorang dapat mengarahkan saya ke arah yang benar.

Game saya adalah aksi orang ketiga rpg a'la WoW atau KOTOR atau Mass Effect (sistem berbeda yang saya tahu tetapi perspektif dan gaya bertarung agak dekat pada level tinggi). Saya memiliki berton-ton animasi untuk serangan, blok, pura-pura, kematian, berjalan, berlari, melompat, menembak dll tapi saya tidak jelas tentang bagaimana mengurutkan mereka secara alami.

Saya telah melihat pohon campuran yang digunakan untuk penggerak yang masuk akal bagi saya ketika mencoba untuk menjaga cairan gerak karakter, tapi saya tidak mengerti bagaimana cara beralih dari pohon campuran itu ke keadaan serangan dan tidak ada yang saya lihat sejauh ini telah melewati penggerak (tidak ada serangan dll). Apakah saya perlu membuat pohon campuran dari gerakan saya untuk menyerang / mati / menghindar? Apakah saya memiliki kontrol lebih banyak menggunakan hanya mesin negara? Saya sedikit berhati-hati dengan mesin negara karena transisi mengasapi yang begitu umum dengan mereka dan karena saya curiga ada potensi yang lebih besar untuk sekuensing animasi janky tanpa blending.

Saya berencana untuk menggunakan pengontrol karakter Unity dan menulis skrip logika saya sendiri untuk mengendarainya. Untuk AI saya akan menggunakan agen mesh built in nav. Apakah animasi pengendali karakter ditangani secara berbeda dari animasi AI?

Wawasan apa pun akan lebih dari sekadar selamat datang!

Terima kasih

weichsem
sumber

Jawaban:

21

Saya telah bekerja sedikit dengan Mecanim di Unity, dan merasa saya memiliki pemahaman yang cukup baik tentang cara kerjanya.

Seperti yang Anda katakan, pohon campuran hampir pasti cara untuk melakukan penggerak. Blend-tree umumnya untuk saat Anda ingin terus - menerus memadukan animasi untuk membuat hasil akhir. Seperti memberi pemain kendali seberapa cepat avatar berjalan.

Semua tindakan tunggal cenderung lebih baik untuk disimpan sebagai kondisi individual, yang dapat Anda transisikan. Bergantung pada seberapa intens permainan Anda, Anda bahkan dapat mempertimbangkan menggunakan Negara Apa pun sebagai titik keberangkatan untuk dengan cepat pergi untuk melompat, menyerang dll, tanpa harus menunggu animasi lain selesai.

Kunci untuk memadukan pohon campuran dengan running adalah menggunakan transisi . Tidak ada keajaiban untuk membuat ini tampak hebat, hanya perencanaan yang cermat, dan mengutak-atik saat melihat pratinjau transisi di Unity. Banyak pekerjaan bergantung pada animator karena memiliki fondasi untuk transisi yang sukses.

Sesuatu yang perlu diingat ketika melakukan transisi adalah menemukan keseimbangan dari mereka tampak hebat, dan memberi pemain umpan balik yang diharapkan. Anda mungkin menemukan bahwa transisi cepat berfungsi paling baik untuk permainan-merasakan, sementara transisi yang lebih lambat mungkin terlihat lebih baik tetapi membuat pemain Anda ingin membuang controller.

Di bawah ini adalah pengaturan yang agak sederhana, di mana panah menunjukkan bagaimana transisi. Transisi didasarkan pada kondisi untuk masuk, dan keluar ketika animasi selesai atau kondisi tertentu terpenuhi. Ini juga berarti bahwa satu negara dapat pergi ke berbagai negara lain tergantung pada kondisi yang berbeda.

Mesin Negara

Apa yang mungkin Anda perhatikan adalah bahwa ini dengan cepat dapat menjadi tumpukan "spageti", dan cara untuk menghindari beberapa kekacauan ini adalah dengan memanfaatkan Negara Apa pun yang juga termasuk dalam gambar di atas.

The Setiap negara memiliki manfaat untuk dapat transisi ke apa pun dari waktu tertentu. Transisi masih dapat digunakan untuk memadukan animasi, namun, Anda bekerja sedikit lebih dalam kegelapan seperti bagaimana tampilannya. Dimungkinkan untuk melakukan pratinjau dari / ke berbagai negara saat mengaturnya.

Sesuatu yang tidak Anda sebutkan adalah Layers , yang bisa sangat berguna untuk membuat karakter Anda terluka atau untuk menimpa tubuh bagian atas untuk membawa senjata yang berbeda sambil menggunakan animasi yang sama untuk kaki untuk semua senjata. Lapisan juga dicampur dan dapat disesuaikan secara bertahap, sehingga karakter bisa lebih atau kurang terluka, misalnya. Contoh lain adalah mengangkat lengan karakter di udara (jika karakter menyerah atau sesuatu), sambil menjaga semua animasi lainnya tetap sama.

Tetapi pengaturan pengendali animasi yang solid bukanlah pekerjaan 1 jam. Dibutuhkan perencanaan dan saya hanya bisa mendorong Anda mencoba menyiapkan mesin negara sederhana dengan dua serangan, lompatan, idle dan berjalan-lari pohon campuran. Anda juga dapat menemukan Perilaku yang diperkenalkan di Unity 5 sangat berguna untuk mengendalikan atau berinteraksi dengan skrip.

Saya 99% yakin bahwa AI akan berperilaku dengan cara yang sama seperti pengontrol pemain, mengingat bahwa itu adalah parameter yang diubah melalui skrip yang mengontrol bagaimana animasi berjalan dari satu negara ke negara.

Ringkasan

  • Blend-tree untuk penggerak.
  • Status untuk tindakan tunggal, yang didefinisikan atau status looping sederhana.
  • Sub-negara bagian untuk mengatur serangkaian negara bagian, seperti lompatan.
  • Transisi untuk blending / transisi antara negara yang berbeda (negara juga bisa menjadi pohon campuran).
  • Layers untuk mengganti atau menambah animasi dasar.

Jadi pikirkan pohon campuran sebagai status diperluas, yang juga bertindak berdasarkan nilai parameter.

Sedikit mengoceh panjang, tapi saya harap itu menyinari subjek :)

Morten Andersen
sumber
Terima kasih atas deskripsi Anda yang luar biasa, ini sangat masuk akal sekarang
weichsem
Fantastis, senang membantu :)
Morten Andersen