Matrisler

Matrisler birçok alanda kullanılan matematiksel bir yapıdır. 3 boyutlu grafiklerde ise dönüşüm (transformation) işlemleri sırasında kullanılır. Dönüşüm işlemleri temel olarak şunlardır:

  • Öteleme (translation, movement)
  • Dönme (rotation)
  • Ölçekleme (scaling)

Bir cismin hareket ettirilmesi aslında o cismin bütün noktalarının öteleme matrisi ile çarpılması (*) işlemidir. Böylece modelin bütün noktalarının yeni konumları hesaplarak, cisim hareket ettirilmiş olur.

İşlem yaptıran bu matrisler birbirleri ile çarpılarak bileşik bir hareket işlemi de oluşturulabilir. Bu, tek bir matris ile hem dönme hem de öteleme işlemi yapılabileceği anlamına gelir. Ancak matris çarpım işlemlerinde işlem sırası önemlidir. İşlemler birçok programlama dilinde olduğu gibi XNA’da da sağdan sola yapılır. Yani en sağa yazılan işlem aslında modele ilk uygulanacak işlemdir. Bu da elimizdeki modeli önce döndürüp, sonra ilerletmek ile önce ilerletip sonra döndürmenin aynı şekilde gerçekleşmeyeceğini söyler. Özel bir amacımız yoksa tercihen matris çarpımı sırasını şöyle yapmak çoğu durum için istenen sonucu verecektir.

“ölçekleme * döndürme * öteleme”

XNA 3D Basit Matris Dönüşümleri

“3D Graphics with XNA Game Studio 4.0 | Sean James, Packt Publishing”‘e aittir.

Ekrana 3 Boyutlu grafikler çizdirmek için genellikle üç teeml matrislerin hesaplanması yeterli olmaktadır. Bunlar world (evren), view (görünüm) ve projection (projeksiyon) matrisleridir.

Burada evren matrisi (world matrix) bütün dönüşüm işlemlerinin çarpımlarının bileşiminden oluşur. Bu dönüşümler sonucu model “local” (yerel) yada “object space” (obje uzayı)’ndan “world space” (evrene) taşınmış olur. Bir sahnedeki her obje farklı konumda ve yönde oldukları için, her modelin kendi evren matrisleri vardır. Bu özellik tek bir objenin parçalarına (mesh’lerine) de uygulanabilir. Yani örneğin bir insan modelinin elleri ve başı farklı matrislere sahip olup, modelin merkezinden (kökünden, root) ayrı yerlere hareket ettirilmesi sağlanabilir. Yoksa insan modeli kalıp olarak hareket ederdi. Bir model çizildiği zaman, modelin her bir parçası (mesh’i) modelin evren matrisi ile çarpılıp son hali bulunur.

Görünüm matrisi (view matrix) evrendeki nesneleri görünüm uzayına taşıyarak bir açıdan bakılan görünüme göre hesaplar. Evrendeki her model görünüm matrisi ile çarpılarak bu işlem yapılmış olur. Görünüm matrisi 3 boyutlu uzaydaki herşeyin ekrana çizilmek üzere 2 boyutlu projeksiyonlarını çıkartır.

Son olarak ise evren matrisi ile görünüm matrisinin çarpımından elde edilen matris projeksiyon matrisi (projection matrix) ile çarpılarak düz hale getirilip, ekrana çizdirilebilir.