Lütfen, affet beni, ama yardıma ihtiyacım var ve birkaç haftadır buna bağlı kaldım, ilerleme kaydedemiyorum ve gittiğim her yerde ve farklı bir cevap görüyorum, denediğim her şey çalışmıyor. Yeteri kadar tavsiyem ve tavsiyem oldu, şimdi sadece geriye doğru çalışmam için bana cevap verecek birine ihtiyacım var çünkü bunu anlayamıyorum.
Bu konuyu en karmaşık hale getiren şey, herkesin farklı bir dizi sözleşme veya kural kullanma biçimidir ve yanıtları, ne olduklarını tanımlamaksızın kendi sözleşmelerine dayanır.
İşte en yaygın ve mantıklı görünen şeylere dayanarak oluşturduğum bir dizi sözleşme:
- Eksen için Sağ El Kuralı.
- Pozitif Y yukarıda, Pozitif Z izleyiciye, Pozitif X sağda.
- Row Gölgelendiricilere gönderildiğinde aktarılan büyük matrisler.
- Pitch: X ekseni etrafında dönüş
- Sapma: y ekseni etrafında dönüş
- Rulo: z ekseni etrafında dönüş
- Döndürme sırası: Roll, Pitch, Yaw (bu doğru mu? Birisi beni bu konuda kontrol edebilir mi?)
- Eksenin pozitif ucundan aşağıya bakıldığında pozitif dönüş değerleri saat yönünde dönüş ile sonuçlanır.
- Tüm eksen boyunca 0 dönüş için varsayılan yön, negatif Y'yi gösteren bir vektördür.
.. bu sözleşmeler göz önüne alındığında (yanlışsa beni düzeltin!), nasıl olur:
- LookAt işlevi yazılsın mı? (lookAt (vektör konumu, vektör göz odak, vektör yukarı))
- Bir dönme matrisi hesaplayın. (döndürme (x, y, z))
Bu iki soruyu en az son 3 hafta boyunca kendim cevaplamaya çalıştım, LookAt & Rotation Matrix işlevimi en az 30 kez yeniden yazdım, düzinelerce yöntemi test ettim ve üzerinde gördüğüm materyalleri okudum yüzlerce web sitesi ve birçok soru cevaplandı, diğer insanların kodlarını kopyaladı ve şimdiye kadar yaptığım hiçbir şey işe yaramadı, her şey yanlış sonuç verdi. Bazıları doğru rotasyona bile yakın olmayan bazı tuhaf çıktılar üretti.
Dün gece hariç her gece bu konuda çalışıyorum çünkü tekrar tekrar başarısızlıkla o kadar sinirli oluyordum ki durup bir mola vermek zorunda kaldım.
Lütfen, bana doğru yöntemin ne olduğunu gösterin, böylece geriye doğru çalışabilir ve nasıl çalıştığını anlayabilirim, sadece doğru cevabı alamıyorum ve bu beni biraz deli ediyor!
Java ile yazıyorum ama herhangi bir dilde yazılmış kodu alacağım, 3D render kodumun çoğu aslında oldukça parlak çalışıyor, sadece anlayamadığım matematik.
GÜNCELLEME: ÇÖZÜLDÜ
Yardımın için teşekkürler! Şimdi gerçekten anladığım çalışan bir LookAt işlevi var ve daha mutlu olamazdım (eğer herkes elbette görmek istiyorsa sor).
Saha / yaw / roll değişkenlerine dayanan bir döndürme matrisi oluşturmayı tekrar denedim ve yine başarısız gibi görünüyordu, ancak serbest görüş kamerası için euler açılarını kullanmaya çalışırken denemeye karar verdim. rol, bunun yerine bir quaternion sınıfı oluşturacağım, bu yolda gidiş daha iyi şans olabilir, aksi takdirde pitch / yaw küresel koordinatlar olarak kullanmak için başvurur ve rotasyon için yeni çalışan LookAt işlevine güvenirim.
Başka biri benzer bir sorunla karşı karşıya kalırsa ve bana soru sormak istiyorsa, çekinmeyin.
En azından artık sıkışıp kalmadım, yardım için teşekkürler!