Dönüştürme Matrisi çarpma sırası


21

Son bir dönüşüm matrisi için doğru çarpma sırasını bulmaya çalışırken zorluklarla karşılaşıyorum. Her zaman garip bir hareket ya da çarpık geometri alıyorum. Mevcut modelim aşağıda açıklanmıştır:

Tek bir düğüm için çarpma siparişim:

L = S * R * T

nerede

L = yerel dönüşüm matrisi

S = yerel ölçek matrisi

R = yerel dönme matrisi

T = yerel tercüme matrisi

Bir düğümün dünya dönüşümü için:

W = PW * L

nerede

W = dünya dönüşüm matrisi

PW = ana dünya dönüşüm matrisi

L = yukarıda hesaplanan yerel dönüşüm matrisi

Oluştururken, her düğüm için matrisi hesaplarım:

MV = Inv (C) * KB

nerede

MV = belirli bir düğüm için model görünümü dönüştürme matrisi

Inv (C) = ters kamera dönüşüm matrisi

NW = düğümün yukarıda hesaplanan dünya dönüşüm matrisi.

Son olarak, gölgelendiricide şu dönüşümlü dönüşüm var:

TVP = PRP * MV * VP

nerede

TVP = son dönüştürülmüş tepe konumu

PRP = perspektif matrisi

MV = yukarıda hesaplanan düğümün dünya dönüşüm matrisi

VP = dönüştürülmemiş tepe konumu.

Mevcut modelde, yerel dönüşe sahip alt düğümler, kamerayı dönüştürürken garip bir şekilde dönüyor. Çarpma sırası ile nerede yanlış yaptım?

Yanıtlar:


37

Emrin herhangi bir kombinasyonu S*R*Tgeçerli bir dönüşüm matrisi verir. Bununla birlikte, önce nesneyi ölçeklemek, sonra döndürmek, sonra çevirmek oldukça yaygındır:

L = T * R * S

Bunu bu sırayla yapmazsanız, önceki dönüşten tekdüze olmayan bir ölçekleme etkilenir ve nesneniz eğri görünür. Ve dönüş çeviriden etkilenecek ve nesnenizin son konumunu çevirinin değerinin beklediğinizden çok farklı hale getirecektir.


Bunu biraz daha açıklayabilir misiniz? Alıştığımdan, dönüş, konumdan bağımsız olarak iki kare arasındaki yönelim farkı olduğu için çeviriden etkilenemez. Bunun yerine, çeviri, yeni tanımlanan dönme ekseninde çevrileceğinden, kendisinden önce gerçekleşen bir döndürmeden etkilenebilir. L = TRS'de çeviri önce gerçekleşir, bu nedenle rotasyon tarafından oluşturulan yeni vektörlerden etkilenmez.
user-2147482637

4
Karışıklık, yerel dönüşümlerden (çerçevenin nesneye bağlı kaldığı yerde) konuştuğunuz gerçeğinden kaynaklanırken, burada açıklanan dönüşümler dünya uzayında (sadece tek bir sabit referans çerçevesinin, dünyanın olduğu yerde) gerçekleşir. Kavramsal olarak, şeyleri görme şekliniz geçerlidir ve dönüşümleri ters sırada uygulamakla eşdeğerdir.
sam hocevar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.