Tolong, maafkan saya, tapi saya butuh bantuan dan saya sudah terjebak dalam hal ini selama beberapa minggu sekarang, saya tidak membuat kemajuan dan ke mana pun saya pergi dan saya melihat jawaban yang berbeda, semua yang saya coba tidak berhasil. Saya sudah memiliki cukup tips dan saran, sekarang saya benar-benar hanya membutuhkan seseorang untuk memberi saya jawaban bagi saya untuk bekerja mundur karena saya tidak dapat memahami hal ini.
Apa yang membuat subjek ini paling membingungkan adalah cara setiap orang menggunakan seperangkat konvensi atau aturan yang berbeda, dan jawaban mereka didasarkan pada konvensi mereka sendiri tanpa mendefinisikan apa itu.
Jadi inilah seperangkat konvensi yang saya bentuk berdasarkan apa yang tampaknya paling umum dan logis:
- Aturan Tangan Kanan untuk sumbu.
- Positif Y naik, Positif Z mengarah ke pemirsa, Positif X di sebelah kanan.
- Matriks-matriks baris utama, ditransformasikan ketika dikirim ke shader
- Pitch: rotasi sekitar sumbu X
- Yaw: rotasi tentang sumbu y
- Roll: rotasi tentang sumbu z
- Urutan rotasi: Roll, Pitch, Yaw (apakah ini benar? Dapatkah seseorang memeriksa saya tentang ini?)
- Nilai rotasi positif, melihat ke bawah dari ujung positif sumbu, menghasilkan rotasi searah jarum jam.
- Arah default untuk 0 rotasi di semua sumbu adalah vektor yang mengarah ke negatif Y.
.. mengingat konvensi-konvensi itu (tentu saja perbaiki saya jika mereka salah!), bagaimana caranya:
- Tulis fungsi LookAt? .
- Hitung matriks rotasi. (rotasi (x, y, z))
Saya sudah mencoba menjawab dua pertanyaan ini sendiri setidaknya selama 3 minggu terakhir, saya telah menulis ulang fungsi LookAt & Rotation Matrix setidaknya 30 kali, saya telah menguji puluhan metode dan membaca materi yang telah saya lihat di ratusan situs web dan membaca banyak pertanyaan terjawab, menyalin kode orang lain, dan sejauh ini tidak ada yang berhasil, semuanya menghasilkan hasil yang salah. Beberapa di antaranya telah menghasilkan beberapa keluaran aneh yang anehnya bahkan tidak mendekati rotasi yang benar.
Saya telah mengerjakan ini setiap malam dengan pengecualian tadi malam karena saya menjadi sangat frustrasi dengan kegagalan berulang sehingga saya harus berhenti dan beristirahat.
Tolong, tunjukkan saja kepada saya apa metode yang benar sehingga saya dapat bekerja mundur dari itu dan mencari tahu cara kerjanya, saya hanya tidak mendapatkan jawaban yang benar dan ini membuat saya sedikit gila!
Saya menulis di Jawa tetapi saya akan mengambil kode yang ditulis dalam bahasa apa pun, sebagian besar kode rendering 3D saya benar-benar berfungsi dengan sangat baik, hanya saja matematika yang tidak saya mengerti.
UPDATE: ASK
Terima kasih untuk bantuannya! Saya sekarang memiliki fungsi LookAt yang berfungsi yang saya benar-benar mengerti dan saya tidak bisa lebih bahagia (jika ada yang ingin melihatnya dengan segala cara bertanya).
Saya memang mencoba lagi membuat matriks rotasi berdasarkan variabel pitch / yaw / roll dan sepertinya gagal, tapi saya memutuskan untuk tidak mencoba menggunakan sudut euler untuk kamera freelook karena sepertinya tidak cocok untuk peran, sebagai gantinya saya akan membuat kelas angka empat, mungkin lebih beruntung melalui jalan itu, kalau tidak saya akan menggunakan pitch / yaw sebagai koordinat bola dan bergantung pada fungsi LookAt yang berfungsi untuk rotasi.
Jika ada orang lain yang menghadapi masalah yang sama dan ingin bertanya kepada saya, silakan saja.
Setidaknya saya tidak terjebak lagi, terima kasih atas bantuannya!
float[16]
.