Transform matrisleri nedir? Local space ile world space arasında nasıl dönüşüm yapılır?

Cevap

Bir nesnenin konumu, rotasyonu ve ölçeği 4x4'lük bir transform matrisi ile ifade edilir. Bu matris TRS (Translation × Rotation × Scale) çarpımıdır. Homojen koordinatlar (4. bileşen w) sayesinde öteleme de matris çarpımıyla yapılabilir: nokta için w = 1, yön için w = 0 (yönler ötelemeden etkilenmez).

Uzaylar

  • Local (object) space: Nesnenin kendi orijinine ve eksenlerine göre koordinatlar.
  • World space: Sahnenin global koordinatları.
  • Hiyerarşide çocuk nesnenin dünya matrisi: World = ParentWorld × ChildLocal.
  • Render'da devamı: World → View (kamera uzayı) → Projection (clip space). Bu zincire MVP matrisi denir.

Unity'de dönüşümler

// Nokta: konum, rotasyon ve ölçek uygulanır
Vector3 worldPos = transform.TransformPoint(new Vector3(0, 1, 2));
Vector3 localPos = transform.InverseTransformPoint(enemy.position);

// Yön: sadece rotasyon (ölçek ve konum yok)
Vector3 worldDir = transform.TransformDirection(Vector3.forward); // = transform.forward

// Vektör: rotasyon + ölçek, konum yok
Vector3 worldVec = transform.TransformVector(Vector3.right);

// Matris ile
Matrix4x4 m = transform.localToWorldMatrix;
Vector3 p = m.MultiplyPoint3x4(localPoint);

Pratik örnekler

  • Düşman önümde mi, sağımda mı? InverseTransformPoint(enemy.position) sonucunda z > 0 önde, x > 0 sağda demektir.
  • Silah namlusundan mermi: Namlunun yerel ucundaki noktayı dünya konumuna çevirmek.
  • Matris çarpım sırası önemlidir: Önce ölçek, sonra rotasyon, sonra öteleme uygulanır; sıra değişirse sonuç değişir.
  • Ters matris (inverse) dünya uzayından yerele geri dönmeyi sağlar; ölçeksiz ortogonal rotasyonlarda tersi transpozuna eşittir ve ucuzdur.
  1. Vektörlerde dot product ve cross product oyunlarda ne için kullanılır?OrtaOyun MatematiğiGame Dev
  2. AABB ve sphere çarpışma testleri matematiksel olarak nasıl yapılır? Hangisi ne zaman tercih edilir?OrtaOyun MatematiğiGame Dev
  3. Quaternion ile Euler açıları arasındaki fark nedir? Gimbal lock nedir?ZorOyun MatematiğiGame Dev
  4. Lerp ve Slerp nedir? Lerp'ü Update içinde yanlış kullanmak neden sorun yaratır?OrtaOyun MatematiğiGame Dev
  5. Vektör normalize etmek ne demektir? Çapraz harekette neden gereklidir?KolayOyun MatematiğiGame Dev

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle