Home
published on: mar 7, 2024
• updated on: may 18, 2024
• 12 min read
Mengkonversi kuaternion menjadi matriks rotasi
Pada kesempatan kali ini saya akan memperlihatkan bagaimana saya menggunakan kuaternion untuk merotasi objek 3 dimensi, dan sebelumnya jika barangkali teman-teman belum familiar dengan kuaternion dan transformasi matriks, teman-teman bisa menyimak video berikut:
Transformasi matriks
Kuaternion
Nah, jadi disini saya akan mentransformasi objek 3 dimensi dan dengan menggunakan kuaternion yang saya konversi menjadi matriks.
Sebelumnya saya ingin memperlihatkan potongan kode dari salah satu repository keren yang ada di github:
Tahukah teman-teman potongan kode apa di atas? Itu adalah bagian kode dari karakter di game GTA. Mungkin bagi sebagian orang itu sesuatu yang belum tentu menarik, tapi bagi saya itu adalah sesuatu yang sangat keren. Tapi kode di atas adalah versi “re-implementation”, sebenarnya ada versi “leaked” cuman saya yakin akan lebih baik pada tulisan ini jika saya membagikan yang versi “re-implementation” ketimbang yang versi “leaked”.
Pertama kali saya bermain GTA itu di PS2 sewaktu SD, dan pertama kali saya modding di GTA menggunakan komputer sewaktu SMP. Dan dari SD sampai sekarang saya belum pernah menamatkan game GTA, jadi saya cuman jalan-jalan di map dengan berbagai macam MOD yang saya pasang. Dari yang awalnya suka berwisata alam di GTA, kemudian modding, sampai akhirnya di titik saya menyukai kode-kode C++ yang berkaitan dengan game engine. Jadi bisa di bilang ketertarikan saya pada perkodingan berawal dari pecinta alam (alam nya GTA), itulah sebabnya menurut saya potongan kode di atas terlihat keren, karena berasa seperti mengetahui rahasia alam (alam nya GTA).
Nah, kali ini saya akan membuat objek karakter 3 dimensi, tapi yang akan saya perlihatkan lebih simpel dibandingkan karakter utama di game GTA, yaitu lebih ke pengenalan konsep movement dan animation nya saja. Tentunya dari class yang saya buat bisa teman-teman kembangkan lagi di rumah, ini dia class nya:
Kemudian dimana bagian mengkoversi kuaternion nya? Jadi pada class di atas itu kan ada variabel _rotation yang dimana merupakan kuaternion, nah jadi sebelum kuaternion itu kita kalikan dengan matriks lainnya yang digunakan untuk mentransformasi matriks, kuaternion itu harus kita konversi ke dalam bentuk matriks. Udah, inti dari tulisan ini cuman begitu doang sebenernya, dan kode nya sepert ini:
Mengkonversi kuaternion menjadi matriks rotasi
Transformasi matriks
Dan hasil rotasi nya seperti ini:
Dari konsep dasar movement dan animation yang saya bagikan ini tentunya bisa teman-teman kembangkan lagi di rumah menjadi game utuh, full source code nya bisa teman-teman unduh di: