Xna cikkek cikkek () - cikkek a háromdimenziós grafika alapjairól

Előadás száma 5. Háromdimenziós grafikák


Ez a laboratóriumi papír a háromdimenziós grafikákkal való együttműködés alapjaira koncentrál. Itt fogunk beszélni a háromdimenziós koordináta-rendszerről, a háromdimenziós objektumok alkotóelemeiről, a háromdimenziós grafikákban használt mátrix-számításokról. Megvizsgáljuk az XNA objektummodell releváns részeit is.

Az előadás célja

  • Ismerje meg az XNA-ban a 3D grafika használatának alapjait

Az előadás célja
  • Tekintse meg a jobbkezes koordináta-rendszert.
  • Egy pont fogalmának megismerése, csúcs, vektor, sokszög háromdimenziós térben.
  • Megismerkedni a világ, a fajok és a projekciós mátrixok alkalmazásával.
  • A mátrix transzformációk megismerése háromdimenziós térben.
  • Megismerni a világítási tárgyak fogalmát.
  • Ismerkedjen meg a háromdimenziós grafikával végzett munka során használt XNA objektumok legfontosabb tulajdonságaival és módszereivel

Koordinátarendszer

Amikor dolgozik a háromdimenziós grafika alkalmazott többféle koordináta rendszer. Megjeleníti a két dimenziós tárgyak mi szükség van egy megfelelő koordináta-rendszer két tengelyre - a vízszintes tengely az X és a függőleges tengely Y. Emlékezzünk vissza, hogy a képernyő koordináta-rendszert a két-dimenziós grafika már a kezdet (pont 0.0) a bal felső sarokban, a pozitív része az X-tengely található közvetlenül a származási, a pozitív rész az Y-tengely - az alján.

Együttműködik háromdimenziós tárgyak, szükségünk van egy másik tengely - ez az úgynevezett Z tengely Számos változata a háromdimenziós koordináta-rendszer, különösen a közös úgynevezett jobbkezes és balkezes rendszer. A jobbkezes rendszert használjuk - az XNA keretrendszerben használják. A vázlatos képet az 1. ábrán mutatjuk be. 5.1.


Ábra. 5.1. Jobboldali koordináta-rendszer

A különlegessége ennek a koordináta-rendszer abban a tényben rejlik, hogy az eredete lehet társítva a bal alsó sarokban a monitor, a pozitív rész az X-tengely, hogy a közvetlenül a származási, a pozitív rész az Y tengely - a felső rész és a pozitív Z-tengely - az elülső. Ez azt jelenti, hogy a látható része a Z tengely - az a negatív része. Ez a része a tengely, mint a „figyelemmel kíséri a mélység”, míg a pozitív része „a monitor előtt.” Az 1. ábrán. 5.1. a szaggatott vonal azt mutatja, a negatív részt a Z tengellyel

A kétdimenziós koordináta-rendszer, van egy koncepció pont - a koordináták által meghatározott két érték - X és Y pontok léteznek háromdimenziós koordinátarendszerben - ők már meghatározott három érték - X, Y, Z.
A pontok meghatározzák a sokszögek (poligonok) csúcsai, különösen a háromszögek koordinátáit. Így a 3. ábrán látható háromszög. 5.1. három pontot kap - A, B, C

A háromszögek általában bonyolultabb háromdimenziós objektumokat alkotnak.

A háromdimenziós grafikákban van olyan, mint egy arc. Ez egy sík tárgy, amely több csúcsot definiál. A mi esetünkben a szokásos háromszög csak egy arc. Számos sík felületről gyűjthet egy háromdimenziós tárgyat.

Minél több háromszög van a modell megépítésében - annál részletesebben kiderül. A háromszög csúcspontjainak megfelelő, háromdimenziós térben ábrázolható pontokat csúcspontnak nevezik. Az XNA grafika 3D-s grafikájával gyakran találkozhatsz az angol vertex vertex szóval. Talán találkozik a vertex szó többesével: a "csúcs" úgy néz ki, mint a "vertices" angolul. Néha a felsők megjelölésére angol-csúcsú nyomkövetési papírt használnak.
A háromszög nem véletlenül választották az alapvető geometriai formák - első - ez mindig egy sokszög konvex, másrészt - lehetetlen, hogy gondoskodjon a három pontot, így azok nem tartoznak azonos síkban. Azaz, a háromszög - ez a szám, ami mindig domború és sima, amely lehetővé teszi, hogy sikeresen használja céljára háromdimenziós grafika.

Számos arcot, amelyből egy háromdimenziós objektum áll, hálónak nevezik. A "rács" háromszögek készlete.

Egy másik koncepció, amely akkor hasznos, ha a 3D grafikával dolgozik, egy vektor fogalma. Egy vektor, mint egy pont, három paraméterrel definiálható, de nem írja le a helyzetet a térben, hanem a mozgás irányát és sebességét.

A vektor kezdete és vége van, teljes definíciójának ismeretében ismerni kell a vektor kezdetének és végeinek koordinátáit, azaz a három koordinátaérték helyett már hat értékre van szükségünk. Ha azonban eredetileg a származás eredete származik (0,0,0 pont), akkor a meghatározásnak három pontja van.

Például egy vektor, amelynek koordinátái (1,0,0) jelentése: "irány - jobbra, sebesség - 1". Ha elhalasztjuk ezt a vektort a származásról, egyértelműen látható, hogy jobbra van irányítva (5.2. Ábra).

vektor által meghatározott irányban a helyzetét a második pont képest az első (a mi esetünkben - a helyzet a végpont vektor, ahol a vektor viszonyítva meghatározott eredetű), és a sebessége - a hossza a vektor - amely - a különbség a kezdeti és a végső pont. Esetünkben a vektor hossza egybeesik a végének koordinátáival.


Ábra. 5.2. A vektor (1,0,0)

Van egy speciális vektor - normál. Normálok építhetők az arcok és a csúcsok egy objektum. Az arcok normáljai merőlegesek ezekre az arcokra. Ezeket egy objektum színének kiszámításakor használják.

Transzformációk háromdimenziós térben

Az objektumot alkotó sokszögek csúcspontjainak koordinátáit ismerjük, űrbe rendezhetjük. Most meg kell értenünk a térbeli tárgyak helyzetének változását. Számos alapvető művelet használható objektumok háromdimenziós térben történő mozgatására. Ez a fordítás, a forgatás és a skála.

A 3D-s játék grafikus alrendszerének eredményei egy síkképernyős monitoron - egy számítógépes modell háromdimenziós jelenetét kétdimenziós felületre tervezzük. A kivetítés során ki kell választania egy olyan pontot, amely kameraként működik, és így láthatja a háromdimenziós teret. A háromdimenziós térben lévő objektumok viszont bizonyos szabályok szerint mozoghatnak. Ennek kezelése érdekében több mátrixot használnak. Ez egy világmátrix (World Matrix), egy View Mátrix és egy vetítési mátrix.

A mátrixot m sorokból és n oszlopokból álló táblázatként ábrázolhatjuk. A számítógépes grafikus mátrixok 4x4 használják. Ennek a mátrixnak az első három oszlopa felelős az átalakításban résztvevő objektumok csúcspontjainak X, Y, Z koordinátáinak módosításáért.

  • A világmátrix lehetővé teszi a transzformációk - mozgó, forgó és átalakító objektumok - meghatározását.
  • A nézet mátrix lehetővé teszi a kamera vezérlését.
  • A vetületi mátrix a háromdimenziós jelenet vetítésének beállítására szolgál a képernyőre.

Tegyük fel, hogy van egy háromszög, amelyet a következő csúcsok adnak (5.1. Táblázat).

5.1 táblázat. A háromszög csúcsai az elmozdulás előtt

Ugyanaz a hatás érhető el, ha mindegyik csúcs koordinátáit megszorozza a világmátrix. Ehhez a csúcs koordinátái egy sorból és négy oszlopból álló mátrixként jelennek meg. Az első három oszlop tartalmazza az X, Y, Z koordinátákat a negyedik - 1. A világmátrix 4x4-es táblázat formájában jelenik meg. Így néz ki a mátrixszaporítás mûködése (5.1. Képlet):

Képlet 5.1. A csúcs mátrixának és a világmátrix szorzása

A konvertálás során az egyes csúcsokat a világmátrix szorozza meg.

Minden térbeli átalakuláshoz szükség van a világmátrix speciális beállítására. Az 5.2. Megadja a világmátrix sablont, amely lehetővé teszi a tárgyak térben történő mozgatását.

Az 5.2. Egy világmátrix az objektum mozgatásához

Az X tengely körül forgó tárgyak világmátrixa így néz ki (5.3. Képlet).

Az 5.3. Világmátrix az X tengely mentén való forgatáshoz

itt # 945; - rotációs szög a radinokban

Az Y tengely mentén az objektumok forgatására szolgáló világmátrix így néz ki (5.4. Képlet).

Képlet 5.4. Világmátrix az Y tengely mentén való forgatáshoz

A Z tengely körüli forgó tárgyak mátrixát az 5.5. Képlet tartalmazza.

Az 5.5. Világméretű mátrix a Z tengely mentén történő forgatáshoz

A 5.6. olyan mátrixot jelent, amely objektumok átalakítására szolgál.

# 966; x. # 966; y, # 966; z a csúcspontokra vonatkozó skálázási tényezők. Lehetővé teszik, hogy "összenyomja" vagy "nyúzza" az objektumokat.

A játékok tárgyainak megvilágítása ugyanolyan szerepet játszik, mint amilyet a való világban hozzárendeltek. Sokféle világítás létezik.
  • A környezeti környezeti fény olyan fény, amely ugyanolyan intenzitással világítja meg a jelenet minden tárgyát. A szétszórt fényforrásnak nincs helye.
  • A pontfény a forrás, amely minden irányba fényt bocsát ki. Összehasonlítható az árnyékban nem szereplő izzólámpa fényével.
  • Irányított fény (irányított fény). Ez a forrás, ellentétben a pontforrással, nincs helye, de iránya van
  • A zónafény (spotlámpa) vagy a spotlámpa helye, iránya, és a fényáram csak kúp alakú.
A fényforrások különböző intenzitásúak, különböző színűek lehetnek, amikor világító jeleneteket használ, többféle forrást használhat. Mindez megkönnyíti a háromdimenziós grafika legfontosabb elemét.

Shaders vagy shader programok - olyan programok, amelyek lehetővé teszik, hogy különböző hatásokat alkalmazzanak a modellekre. Egy speciális programozási nyelven íródnak, általában nem manuálisan, hanem a megfelelő szoftver használatával. Az árnyékolók csúcsra és pixelre vannak felosztva. A Vertex árnyékolók lehetővé teszik, hogy különböző hatásokat alkalmazzanak a modellek tetejére, a pixel árnyékolók a modell minden egyes képpontjának színét feldolgozzák, mielőtt megjelenítenék a képernyőn.

A textúrák raszteres (kétdimenziós) képek, amelyek háromdimenziós modelleken helyezkednek el. Például a háromdimenziós modell jármű lehet egy autó, amely mintha „cut” a szilárd anyagot, majd vetíteni a modellhordozóban válik a megfelelő struktúra szín, ami azt az illúziót, hogy volt kis alkatrészek hézag stb A textúrák minimális egységét texelnek nevezik. Minél több képpont létezik texelenként, annál nagyobb a textúra felbontása - annál jobb minőséget kap a modell, mint egy textúra alkalmazása.

XNA objektumok a 3D grafikával való munkához

Az XNA objektummodellben számos olyan objektum van, amelyeket intenzíven használnak a 3D grafika használatához.

A Mátrix osztály lehetővé teszi, hogy egy mátrix, felhasználni, hogy a tárgyak a térben, hogy ellenőrizzék a kamera és háromdimenziós vetítés a jelenet a képernyőn. Ez az osztály, amely - mint általában a .NET-keretrendszerben van - szintén adattípus, és tartalmazza a mátrixok létrehozásához használt statikus módszereket. Általános szabály, hogy szükség van rá, például a „kézzel”, hogy módosítsa a világ mátrix szervezni az elmozdulását vagy forgását a modell - az összes szükséges műveleteket lehet végrehajtani a statikus módszerek a Mátrix osztály, csakúgy, mint a Mátrix osztályú objektumok a különböző hasznos tulajdonságait. Nézzük meg néhányat.

  • Tulajdonságok Mxy visszatérési értékek vannak elrendezve egy sorban a x index, és az oszlopot y index, amely megváltoztatja 1-től 4 Például, M11 tulajdonság értékét adja vissza metszéspontjában az első sor és az első oszlop a mátrix, M23 - második sor és a harmadik oszlopban , M44 - a negyedik sor és a negyedik oszlop.
  • A CreateLookAt módszer lehetővé teszi egy nézeti mátrix (kamera) létrehozását.
  • A CreateOrthographic módszer lehetővé teszi ortogonális vetítési mátrix létrehozását.
  • A CreatePerspective módszer lehetővé teszi egy perspektivikus vetületi mátrix létrehozását.
  • A CreateRotationX, CreateRotationY, CreateRotationZ módszerek lehetővé teszik forgatómátrixok létrehozását a megfelelő tengely körül.
  • A CreateScale módszer egy objektum skálázásának (átméretezésének) létrehozására szolgál.
  • A CreateTranslation módszer lehetővé teszi objektumeltolódási mátrix létrehozását.
  • A CreateWorld módszer világmátrixot hoz létre.

A Vector3 osztály a pontok koordinátáinak tárolására szolgál a térben, vektorok és más feladatok meghatározásához, például - a mátrixparaméterek beállításához.

A BasicEffect osztály számos elemet tartalmaz, amelyek fontosak egy háromdimenziós jelenet létrehozásakor. Ez az osztály tárgya a mátrixok leírását, a játékban lévő fényforrások leírását és számos más fontos tulajdonságot és módszert. Lényegében ez az osztály shader-készlet, melyeket az alábbi tulajdonságoktól függően használunk:

  • A AmbientLightColor tulajdonság lehetővé teszi, hogy a környezeti megvilágítást szétszórt fényben állítsa be
  • Tulajdonságok DirectionalLight0, DirectionalLight1, DirectionalLight2 lehetővé teszi az irányított színforrások beállítását
  • FogColor, FogEnabled, FogEnd, FogStart tulajdonságok lehetővé teszik a köd hatásának szabályozását
  • A LightingEnabled tulajdonság lehetővé teszi a világítást
  • PreferPerPixelLighting tulajdonság teszi, hogy ellenőrizzék a hatása per-pixel megvilágítás - Ez a fajta fedezet rendelkezésre áll a grafikus kártyák, amelyek támogatják a Pixel Shader Model 2.0 (Pixel Shader Model 2.0.)
  • A Projection tulajdonság lehetővé teszi a vetítési mátrix vezérlését.
  • A Texture tulajdonság a textúra szabályozására szolgál
  • A TextureEnabled tulajdonság lehetővé teszi a textúra használatát
  • A View tulajdonság lehetővé teszi a nézeti mátrix (kamera)
  • A világ tulajdonának célja a világmátrix ellenőrzése
  • A Begin and End módszerek segítségével megadhatja a hatásfeldolgozó blokk kezdetét és végét.
  • Az EnableDefaultLighting módszer alapértelmezés szerint világítást biztosít.

MathHelper osztály

Hasznos módszerek különböző matematikai műveletek elvégzésére. Például a ToRadians statikus módszere lehetővé teszi, hogy az értékeket foktól radianokig lefordítsa.

Amikor 3D-s grafikával dolgozik, más XNA objektumokat használnak, amelyekkel megismerkedhetnek a további munkával.