Programozás directx9 objektumok forgatásával - szoftver termékek
Az objektumok (vagy a fényképezőgép) forgatásához komoly matematikai alapra van szükség, amelynek segítségével az összes objektum koordinátáit kiszámítják, amikor a számítógép "lapos" képernyőjére kerülnek. Csak azt akarom mondani, hogy nem szabad félni, minden matematikai könyvtárat már írt nekünk, csak azokat használjuk. Mindenesetre nem kell kihagynia a következő szöveget, függetlenül a matematika tudásszintjétől.
1. Mátrixok, általános fogalmak
Mik a mátrixok? Emlékeztetünk a magasabb matematikára: a mátrix ¬ a sorok és oszlopok ismert dimenzióival rendelkező számok halmaza.
Mátrixokat lehet hozzáadni, szorozni egy számmal, szorozni egymással és sok más érdekes dolgot, de ebben a pillanatban kihagyjuk, mert Részletesen le van írva bármely magasabb matematika tankönyvben (a tankönyveket a google.com oldalon lehet keresni). Fogjuk használni mátrixok programozók, akkor töltse ki, és azt mondják nekik, hogy minden a számítások előállítani a Direct3D matematikai könyvtár, így meg kell, hogy tartalmazza a projekt d3dx9.h fejléc modul (d3dx9.lib könyvtár).
Feladatunk egy olyan objektum létrehozása, azaz töltse ki a mátrixot az objektum csúcsainak koordinátáival. Minden csúcs egy vektor (X, Y, Z) háromdimenziós térben. Most, hogy valamilyen műveletet hozzunk létre, meg kell ragadnunk az objektumunkat (vagyis a mátrixot), és azt a transzformációs mátrix segítségével szorozzuk meg, ennek a műveletnek az eredménye egy új, mátrix formájában meghatározott objektum.
A Direct3D-ben három fő mátrix van definiálva és felhasználva: a világmátrix, a nézeti mátrix és a vetítési mátrix. Nézzük részletesebben.
World Matrix (World Matrix) - lehetővé teszi az objektum forgatását, átalakítását és méretezését, valamint az egyes objektumok helyi koordinátarendszerrel történő hozzárendelését.
A világmátrixmal való együttműködés funkciói:
Projection Matrix - a 3D-s jelenet vetítése a monitor képernyőjén. Segítségével a tárgy átalakul, az eredet átkerül az elülső részre, és meghatározza az elülső és a hátsó vágógörgőt.
E mátrixok kitöltésével és az átalakítások elvégzésével háromdimenziós jelenetet hozhat létre, amelyben az igényeinek függvényében mozoghat, forgathat, zoomolhat, törölhet és végrehajthat más tárgyakat.
2. Objektum létrehozása
Adjon hozzá egy fejlécfájlt és egy könyvtárat a mátrixfunkciók használatához
Szükségünk van standard funkciókra is az idővel való munkavégzéshez, ezért csatlakoztatjuk a megfelelő fejlécfájlt:
Módosítsuk a csúcsformáció formátumát:
Nem konvertált vertex típust fogunk használni, mert átalakításokat fogunk végezni mátrixokkal.
Az InitDirectX () függvény kódját megváltoztatjuk. Ebben a funkcióban meg kell adnia két kijelzési mód beállítását.
Kapcsolja ki a kivágási módot úgy, hogy forgatás közben láthassa az objektum összes oldalát:
Jelenleg nem használjuk a világítást, hanem a festékeket egy bizonyos színnel festjük, ezért kapcsoljuk ki a világítást:
Egyszerűsítsük szívünket három háromszög formájában. A helyi koordinátarendszert fogjuk használni.
3. Transzformációs mátrixok létrehozása
Írjuk le a SetupMatrix () függvényt a render.h fájlban, amelyben a mátrixok összes művelete megtörténik.
A világmátrix beállítása
Ahhoz, hogy az objektum elfordulhasson, meg kell szerezni a rendszeridőt és az egyes "azonnali" értékeket a helyi koordinátarendszer és a világkoordináta rendszer közötti szög megváltoztatásához. Az X tengely körül forgatjuk, ezért a D3DXMatrixRotationX funkciót használjuk. A világmátrix kiszámítása után az értékeket a SetTransform függvény segítségével kell megadnia:
Megtekintési mátrix beállítása
Állítsa a fényképezőgépet a megfelelő helyre, és helyezze az objektumra
Számítás után a kapott értékeket kell alkalmazni:
A vetítési mátrix beállítása
D3DXMatrixPerspectiveFovLH (- a vetítési mátrix számításának funkciója MatrixProjection, - számítás eredménye D3DX_PI / 4, - a látómező az irányt az Y-tengely (radiánban) 1.0f, - tömörítés koefitsient 1.0f, - Front 100.0f jelenet vágás); - háttér jelenet megszakítása
A számítás után a kapott értékeket kell alkalmazni:
A mátrix-számítási függvény hívását a RenderScene () jelenet renderelés funkcióba helyezzük.
Fuss az összeállításon és figyelje a forgatást :)
Letöltések