Apa pengetahuan yang diperlukan untuk menulis perpustakaan animasi (IK & FK)? [Tutup]

9

Saya tidak dapat menemukan perpustakaan yang bagus untuk animasi, yang saya temukan benar-benar sudah tua dan tidak digunakan lagi, tetapi saya perhatikan bahwa perpustakaan itu relatif kecil, jadi saya berpikir untuk mengkodekannya sendiri: di mana saya harus mulai ? Apa dasar untuk ini? Ada buku tentang ini?

Beberapa catatan lebih lanjut tentang format file yang baik untuk animasi juga sangat dihargai.

Saya menggunakan C ++.

pengguna827992
sumber

Jawaban:

7

Kinematika maju hanyalah prasyarat untuk kinematika terbalik, secara umum.

Untuk kinematika maju, Anda harus memiliki pengetahuan tentang rantai transformasi (apa arti adegan-grafik misalnya). Sebagai contoh, titik awal yang baik untuk memulai adalah konvensi Denavit-Hartenberg. Untuk kinematika terbalik, pelajarilah Cyclic Coordinate Descent (CCD), Jacobian Inverse, Jacobian transpose, dan solusi invers semu . Konsep dan algoritme ini menawarkan kepada Anda gambaran umum yang layak tentang matematika dan sebagian fisika bidang ini. Pustaka, bahasa pemrograman, atau format file tidak pernah menjadi elemen kunci jika Anda juga ingin memahami apa yang terjadi di balik keajaiban.

Jika Anda memerlukan solusi cepat atau komponen untuk beberapa aplikasi yang sedang Anda kerjakan, maka silakan lihat beberapa perpustakaan yang disediakan dalam jawaban lain di sini. Jika Anda menyukai robotika, maka OpenRAVE adalah monster yang layak disebut. Juga, ada Matlab Robotics Toolbox (asalkan Anda masuk ke sisi rekayasa semacam itu).

Semua konsep menghasilkan satu truk penuh hasil yang relevan di mesin pencari favorit Anda, mohon maaf karena tidak memposting banyak tautan ke materi bagus.

teko teh
sumber
1

Artikel Asli: Apa yang perlu saya ketahui tentang Invers Kinematics?

Anda mungkin pernah mendengar Kinematika Invers. IK adalah alat yang populer di Unity dan komputer grafis, tetapi jika ini adalah pertama kalinya Anda mencoba membuat atau menggunakan sistem Kinematika Invers maka Anda mungkin ingin lebih detail. Saya akan menjelaskan apa itu IK, mendefinisikan kosa kata, dan mengulas penggunaannya. Apa kosakata yang diperlukan untuk memahami IK?

Sebelum kita masuk ke jantung IK, kita perlu mendefinisikan beberapa kosakata terkait IK. IK adalah metode yang diterapkan pada benda artikulasi. Apa itu tubuh yang diartikulasikan?

Tubuh Artikulasi

Tubuh yang diartikulasikan dapat mewakili sebagian besar tubuh animasi seperti manusia dan hewan dengan kerangka. Sederhananya, benda artikulasi adalah pohon rantai yang saling terkait. Rantai tertaut terdiri dari sambungan dan sambungan, di mana sambungan merupakan silinder yang kaku.

masukkan deskripsi gambar di sini

Jenis Sendi

Sedangkan untuk sambungan, ada dua jenis. Jenis sambungan pertama adalah sambungan revolute. Terhubung ke tautan yang berputar di sekitarnya.

Sendi revolute mirip dengan pin tengah jam - dengan jarum jam sebagai tautan.

masukkan deskripsi gambar di sini

Sambungan prismatik adalah sambungan sehingga tautan yang terhubung diterjemahkan dari sambungan untuk memperpanjang / mempersingkat tautan.

masukkan deskripsi gambar di sini

Sambungan prismatik berfungsi seperti memperpanjang / menarik panjang pegangan yang bisa ditarik pada bagasi Anda. Jika Anda perhatikan lebih dekat, pegangan bagasi yang dapat ditarik memiliki 4 sambungan prismatik. 2 sambungan prismatik di tengah gagang, dan 2 sambungan prismatik di gagang di bagian atas bagasi.

Jika Anda bingung dengan sendi prismatik, jangan khawatir. Mereka tidak digunakan yang sering dalam Kinematika Invers, dan seperti yang mungkin bisa Anda katakan, tidak ada manusia yang memiliki sendi prismatik - hanya sendi revolute.

Struktur Hirarkis

Tubuh artikulasi memiliki sendi akar. Sambungan akar adalah dasar dari struktur. Sendi akar untuk humanoid biasanya merupakan pusat pinggul. Tubuh yang diartikulasikan terbentuk dari pohon sendi dan tautan, mulai dari sendi akar. Sambungan dan tautan baru mirip dengan cabang baru di pohon. Tautan / sambungan inboard adalah tautan / sambungan yang lebih dekat ke sambungan root dalam hierarki pohon benda yang diartikulasikan, karena ini berkaitan dengan sambungan / tautan yang diberikan. Sambungan / sambungan tempel adalah sambungan / sambungan yang jauh dari sambungan akar dalam hierarki pohon dari badan yang diartikulasikan.

End Effector

End effector adalah posisi pada posisi paling outboard dari tautan outboard terbanyak. Ini adalah ujung bebas dari rantai sambungan dan tautan bolak-balik. Efektor akhir bukanlah gabungan. End effector hanyalah posisi di ujung benda yang diartikulasikan. Tubuh yang diartikulasikan dapat memiliki beberapa efektor ujung, seperti halnya pohon biner dapat memiliki banyak daun.

masukkan deskripsi gambar di sini

End Effector digambarkan sebagai lingkaran hijau di sini.

Artikulasi dan Pose

Artikulasi adalah rotasi / terjemahan sambungan yang menggerakkan tautan yang terhubung. Di sisi lain, pose adalah seperangkat artikulasi sendi yang menghasilkan posisi tubuh artikulasi. Dengan kata lain, pose adalah nilai vektor bukan nilai skalar.

Apa itu Forward Kinematika?

Sebelum kita dapat mengetahui apa itu Invers Kinematics, kita perlu mencari tahu apa itu Forward Kinematics. Fungsi / algoritma Forward Kinematics mengambil pose sebagai input, dan menghitung posisi end effector sebagai output. Forward Kinematics adalah fungsi kebalikan dari Kinematika Invers. Dengan Forward Kinematics, Anda perlu menentukan seluruh pose dari tubuh yang diartikulasikan untuk menyediakan fungsi / algoritma dengan input pose. Ini berarti Anda perlu mendefinisikan artikulasi setiap sendi dalam tubuh artikulasi. Ini mungkin baik-baik saja jika Anda memiliki jumlah sendi yang rendah, tetapi dengan jumlah sendi yang tinggi ini cenderung membosankan.

Apa itu Kinematika Invers?

Sekarang, bayangkan jika Anda ingin efektor akhir tubuh artikulasi Anda mencapai posisi target tertentu. Ini berarti bahwa Anda tahu posisi efektor akhir yang ingin Anda targetkan, tetapi Anda tidak tahu pose tubuh artikulasi apa yang diperlukan agar efektor akhir mencapai posisi target ini. Di sinilah Invers Kinematics bersinar!

masukkan deskripsi gambar di sini

Kinematika Invers adalah fungsi / algoritma terbalik dari Kinematika Maju. Fungsi / algoritma Forward Kinematics mengambil posisi target sebagai input, dan menghitung pose yang diperlukan untuk efektor akhir untuk mencapai posisi target - pose adalah output.

Seperti yang Anda lihat, input dan output dialihkan antara FK dan IK. Dengan Inverse Kinematics, Anda tidak perlu menentukan seluruh pose dari benda yang diartikulasikan - ini akan dihitung untuk Anda dengan algoritma IK. Dengan IK, Anda hanya perlu mendefinisikan posisi sebagai input.

Inverse Kinematics melakukan semua pekerjaan komputasi yang menantang untuk menghitung posenya. Di Sebelum Negara, ada tubuh yang diartikulasikan dengan beberapa pose yang dikenal. Ini mendefinisikan posisi target untuk efektor akhir untuk mencoba mencapai. Setelah algoritme IK diterapkan pada tubuh yang diartikulasikan, kami telah mencapai After State. The After State menunjukkan bahwa pose baru telah dihitung, sehingga efektor akhir sekarang berada di posisi target.

Apa kegunaan IK?

Pada titik ini, kita tahu bahwa IK diterapkan pada benda berartikulasi, kita tahu apa benda berartikulasi, dan kita tahu perbedaan antara IK dan FK. Kami memiliki gambaran umum IK yang baik sejauh ini, tetapi mari kita selesaikan juga dengan beberapa kasus penggunaan IK yang baik. IK dapat digunakan untuk lengan humanoid untuk meraih objek / target, seperti yang telah kita lihat. IK juga dapat digunakan untuk loncatan kaki, sehingga kami memberi tahu kaki di mana harus melangkah dan figur IK bagaimana mengkonfigurasi sambungan kaki. IK biasanya tidak digunakan sebagai animasi itu sendiri (meraih objek), tetapi lebih sebagai alat animasi. Jadi, jika Anda menerapkan siklus berjalan, Anda bisa memposisikan beberapa bingkai kunci menggunakan alat IK.

masukkan deskripsi gambar di sini

Poin kunci lain tentang IK adalah bahwa sasaran / target Anda tidak terbatas pada posisi saja - tujuan Anda dapat didefinisikan sebagai rotasi. Misalnya, jika kaki Anda perlu berputar berdasarkan medan yang tidak rata, sasaran rotasi IK Anda dapat ditentukan berdasarkan normal lantai. Dengan cara ini kaki Anda condong di lantai, seperti saat Anda berjalan menanjak. Perhatikan bahwa Anda juga dapat menggunakan IK untuk membuat kepala Anda (atau bahkan mata) melihat ke arah tertentu. Jika Anda ingin kepala Anda mengikuti objek, Anda dapat menggunakan IK agar kepala mengikuti objek di sekitar.

Luis B
sumber