Katakanlah saya memiliki kerangka kerja dengan karakter yang dapat berlari dan berjalan dan tentu saja, diam.
Apakah saya benar dalam berpikir bahwa pencampuran animasi adalah proses transisi dengan lancar antara ini dengan menghasilkan animasi dinamis saat runtime?
Jika demikian, apa teori dasar tentang bagaimana ini bekerja, dan bagaimana saya akan menerapkannya?
Jawaban:
Campuran animasi karakter lebih umum dan dapat digunakan untuk:
Ide dasarnya adalah bahwa untuk dua kerangka identik dengan klip animasi yang berbeda, untuk setiap rotasi sambungan, Anda menghitung nilai di antaranya. Klip animasi direpresentasikan dengan rotasi. Jadi interpolasi linier bukan yang harus Anda gunakan jika Anda ingin hasil yang akurat (bahkan jika Anda menggunakan sudut Euler). Anda dapat menggunakan slerp misalnya tetapi ada solusi yang lebih kompleks.
Ini adalah masalah kompleks dengan solusi kompleks. Pada dasarnya, jika Anda memiliki dua klip animasi A dan B:
Jika Anda tertarik, saya sarankan Anda mulai dengan membaca artikel ini sehingga Anda dapat lebih memahami apa kesulitannya: http://graphics.cs.wisc.edu/Papers/2003/KG03/regCurves.pdf
Ini bukan yang terbaru, tetapi mudah dibaca.
Saya harap ini membantu. Salam Hormat.
sumber
Pertama, saya menganggap Anda berbicara tentang animasi kerangka (terutama grafis 3D) karena animasi campuran cukup banyak hanya berlaku untuk animasi kerangka. Jika Anda berbicara tentang animasi berbasis sprite 2D (Anda tidak menentukan dalam pertanyaan Anda) maka Anda dapat melupakan blending animasi.
Dengan itu keluar dari jalan ...
Cukup banyak artinya, ya. Namun demikian, frasa "menghasilkan animasi dinamis" agak menyesatkan; yang mengingatkan animasi prosedural dan itu bukan apa yang Anda lakukan.
"Animation blending" adalah ketika Anda melakukan transisi antara dua klip animasi dengan menggunakan sedikit kedua animasi dengan bobot satu klip naik sementara bobot klip lainnya turun. Ini bekerja paling baik dengan animasi kerangka, sehingga rotasi setiap sambungan diatur ke titik tengah antara animasi sambungan itu dalam dua klip animasi yang berbeda, dengan bobot setiap klip berubah seiring waktu. Artinya, Anda akan menghitung rotasi setiap sendi seperti:
rotCombined = weightA*rotA + weightB*rotB
Sekarang, sementara animasi campuran bekerja paling baik dengan animasi kerangka, Anda juga dapat melakukannya dengan animasi vertex (mis. MD2). Ini lebih merupakan catatan sejarah karena beberapa mesin game modern menggunakan animasi vertex, tetapi Anda dapat mengatur posisi vertex dengan cara yang sama, sebagai pembobotan antara posisi vertex dalam dua animasi yang berbeda. Ini dapat menghasilkan beberapa interpolasi yang tampak aneh (mis. Bagian jala runtuh atau berputar ke dalam) jika kedua animasi terlalu berbeda, sedangkan animasi kerangka memastikan bahwa berbagai bagian jala tetap utuh.
sumber