Saya mencoba menulis kode dengan memutar objek.
Saya menerapkannya sebagai:
Rotasi tentang sumbu-X diberikan oleh jumlah perubahan dalam koordinat y mouse dan Rotasi tentang sumbu-Y diberikan oleh jumlah perubahan dalam koordinat x mouse.
Metode ini sederhana dan bekerja dengan baik sampai pada sumbu bertepatan dengan sumbu Z, singkatnya terjadi kunci gimble.
Bagaimana saya bisa memanfaatkan putaran arount Z-axis untuk menghindari kunci gimbal.
Jawaban:
Solusi sederhana adalah tidak menyimpan orientasi objek sebagai sudut di sekitar sumbu (sumbu X-, Y-, Z), seperti misalnya dalam sudut euler.
Simpan orientasi objek sebagai matriks atau angka empat.
Ini dapat menyebabkan kunci gimbal, menggunakan sudut euler:
Tidak ada kunci gimbal:
Tidak ada kunci gimbal:
Sekarang setiap kali mouse diubah, gandakan m_orientation dengan perubahan orientasi yang berasal dari gerakan mouse setiap frame.
sumber
Buku ini (rendering waktu-nyata) banyak membantu saya! Lihat di halaman 66 dan 70. Grafis dan penjelajahannya sangat bagus. Pertanyaan juga ada di halaman 72! :)
Rotasi tentang Sumbu Sewenang-wenang
Ini membuat kamera dengan rotasi dilakukan oleh input mouse:
Dengan input mouse Anda memodifikasi yaw (head), pitch and roll.
sumber