Átalakítás megtekintése (Direct3D 9)
Ez a szakasz bemutatja a nézetátalakítás alapfogalmait, és részletesen ismerteti, hogyan állíthat be nézetátalakítási mátrixot egy Direct3D-alkalmazásban.
A nézetátalakítás megkeresi a megtekintőt a világűrben, és a csúcsokat kameratérbe alakítja át. A kameratérben a kamera vagy a megtekintő áll a forrásnál, és a pozitív z-irányt keresi. Ne feledje, hogy a Direct3D balkezes koordinátarendszert használ, így z pozitív a jelenetben. A nézetmátrix áthelyezi a világ objektumait a kamera pozíciója - a kameratér eredete - és a tájolás körül.
A nézetmátrixok számos módon hozhatók létre. A kamera minden esetben valamilyen logikai pozícióval és tájolással rendelkezik a világűrben, amely kiindulási pontként szolgál egy olyan nézetmátrix létrehozásához, amely a jelenet modelljeire lesz alkalmazva. A nézetmátrix lefordítja és elforgatja az objektumokat, hogy a kameratérbe helyezze őket, ahol a kamera a forrásnál van. A nézetmátrixok létrehozásának egyik módja a fordítási mátrix és az egyes tengelyek forgatási mátrixainak kombinálása. Ebben a megközelítésben a következő általános mátrixegyenlet érvényes.
Ebben a képletben a V a létrejövő nézetmátrix, a T egy fordítási mátrix, amely áthelyezi az objektumokat a világon, az Rz pedig az x-, y- és z tengely mentén elforgató mátrixok. A fordítási és forgatási mátrixok a kamera logikai helyzetén és tájolásán alapulnak a világűrben. Tehát, ha a kamera logikai helyzete a világon 10 20 100><, a fordítási mátrix célja az objektumok -10 egységek mozgatása az x tengely mentén, -20 egységek az y tengely mentén, és -100 egységek mozgatása a z tengely mentén. A képlet forgatási mátrixai a kamera tájolásán alapulnak, ami azt határozza meg, hogy a kameratér tengelyei mennyivel vannak elforgatva a világűrrel való igazodásból. Ha például a korábban említett kamera egyenesen lefelé mutat, a z tengelye 90 fok (pi/2 radián) a világtér z tengelyéhez képest, ahogyan az az alábbi ábrán látható.
A forgatási mátrixok egyenlő, de ellentétes forgást alkalmaznak a jelenet modelljeire. A kamera nézetmátrixa -90 fokos elforgatást tartalmaz az x tengely körül. A forgatási mátrix a fordítási mátrixmal kombinálva létrehoz egy nézetmátrixot, amely a jelenetben lévő objektumok pozícióját és tájolását úgy állítja be, hogy a felső része a kamerával szemben legyen, így a kamera a modell fölött jelenik meg.
Nézetmátrix beállítása
A D3DXMatrixLookAtLH és D3DXMatrixLookAtRH segédfüggvények létrehoznak egy nézetmátrixot a kamera helye és a betekintési pont alapján.
Az alábbi példa egy nézetmátrixot hoz létre a balkezes koordinátákhoz.
D3DXMATRIX out;
D3DXVECTOR3 eye(2,3,3);
D3DXVECTOR3 at(0,0,0);
D3DXVECTOR3 up(0,1,0);
D3DXMatrixLookAtLH(&out, &eye, &at, &up);
A Direct3D a világot használja, és több belső adatstruktúra konfigurálásához tekinti meg a mátrixokat. Minden alkalommal, amikor beállít egy új világot vagy egy mátrixot, a rendszer újraszámítja a kapcsolódó belső struktúrákat. Ezeknek az mátrixoknak a gyakori beállítása számítási szempontból időigényes. Minimalizálhatja a szükséges számítások számát, ha összefűzi a világot, és a mátrixokat egy világnézeti mátrixba alakítja, amelyet világmátrixként állít be, majd a nézetmátrixot az identitásra állítja. Tartsa meg az egyes világ gyorsítótárazott másolatait, és tekintse meg azokat a mátrixokat, amelyeket szükség szerint módosíthat, összefűzhet és alaphelyzetbe állíthat. Az egyértelműség kedvéért a minták ritkán alkalmazzák ezt az optimalizálást.
Kapcsolódó témakörök