Uygun bir dünya matrisi için ölçekleme, döndürme ve çeviri matrislerini çarpma doğru sırası nedir?


62

DirectX'i platform olarak kabul edin, eğer önemliyse. (Olduğundan emin değilim)

Uygun bir ölçek, rotasyon ve çeviri matrisine sahip olduğumu varsayarsak, onları hangi sırayla uygun bir dünya matrisi ile sonuçlandırabilirim ve neden?

"Doğru" derken, "Onları doğrudan DirectX'e atabilir ve en çok kullanılan 3B kareyi elde edebilirim" anlamına gelir.


6
İşte bir açıklama (yörüngedeki) "o zaman döndürmek tercüme" vs (eğirme) "döndürmek sonra tercüme" nin
bobobobo

bağlantı iyidir, ancak küçük bir hata ile. dönme etkisi olmalı ve dönmemelidir, çünkü kürenin çevirerek konumundan (eksende kalan) uzaklaşmaya meyillidir.
18'de

Yanıtlar:


77

Genellikle ölçeklendirilir, sonra döndürülür ve son olarak çevrilir. Matris işaretiyle (yani çeviri matrisi için T, dönüş matrisi için R ve ölçekleme matrisi için S) şöyle olacaktır:

T * R * S

Ancak, bir nesneyi belirli bir nokta etrafında döndürmek istiyorsanız, ölçek, nokta çevirisi, döndürme ve son olarak da nesne çevirisidir.

Neden: İlk önce nesneyi, çevirilerin düzgün çalışması için ölçeklendirmek istiyorsunuz. Sonra eksenleri çevirin, böylece çeviri ayarlanan eksenlerde gerçekleşsin. Sonunda nesneyi konumuna çevirirsiniz.

OpenGL'de bir aramada tam kamera dönüşümü elde etmek için gluLookAt'ı kullanabilirsiniz. DirectX için de benzer bir çağrı olabilir.


11
Ve unutmayın, merkezin etrafında dönüşüm yapmak istiyorsanız, önce orijin merkezini dengelemek için çevirmek zorundasınız, daha sonra user392858'in söylediği gibi yapın, sonra tekrar o kökenden aynı miktarda geri çevirin. Genel olarak olsa da, bu sadece başlangıçta solda kalan bir sprite'ın bulunduğu 2D'de gereklidir.
Mühendis

Harika. :) Şimdi sadece modelimin neden yatay görünüşte ters döndüğünü ve dikey görünüşte ters yönlü yön ışığı üzerindeki nokta ürüne ihtiyaç duyduğumu anlamam gerekiyor. Bunu daha önce yapmadım, sonra biraz matematik
düzeltdim

Sadece şunu not edin, yanlış yerleştirilmiş negatif işaretlerden nefret ederim . Her neyse, teşekkürler ve bu soruyu yapılanlarla düşünebilirsiniz. :)
Fare Narf

Sorun değil, her zaman yardım etmekten mutluluk duyarım.
Raphael R.

2
@Matthias Bildiğim kadarıyla, bu daha sonra dönüştürmek istediğiniz vektör ile çarpma şeklinize bağlıdır. M * v ile çarptığınızda evet, cevap sırasını değiştirmiştir.
bialpio

-4

çeviri döndürme ve ölçekleme işlemi gerçekleştirme sırasıdır


-5

Çeviri Döndürme ve Çevirme olduğuna inanıyorum


2
Bu, mevcut cevaplardan daha fazla açıklama sağlamaz.
DMGregory
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.