3. lecke mátrix

A motor nem mozdul a hajót. A hajó még mindig érvényben van, és a motor mozgatja az univerzumot vele kapcsolatban. Futurama

Ez egy nagyon fontos része a leckét, győződjön meg arról, hogy elolvasta, hogy többször, és jól ismert.







Eddig működtethető 3-dimenziós csúcsok, mint a (x, y, z) hármasok. Bemutatjuk másik paraméter w, és fog működni vektorok formájában (x, y, z, w).

Emlékezz mindig, hogy:

  • Ha W == 1, akkor a vektor (x, y, z, 1) - a helyzetben a térben.
  • Ha w == 0, a vektor (x, y, z, 0) - ebben az irányban.

Homogén koordináták lehetővé teszi számunkra egy egységes matematikai képlet, hogy működik vektorok mindkét esetben.

## Bevezetés a mátrix

A legegyszerűbb módja annak, hogy nyújtson be egy mátrix, egy sor számok, egy szigorúan meghatározott számú sort és oszlopot. Például egy 2x3 mátrix a következőképpen:

Azonban a három dimenziós grafika, akkor csak használ egy 4x4 mátrix, amely lehetővé teszi számunkra, hogy átalakítsa a csúcspont (x, y, z, w). A transzformált vertex az eredménye a mátrix szorzás a legtetején:

** A tetején a mátrix x (ebben a sorrendben !!) = átalakított. ** vertex

Elég egyszerű. Fogjuk használni, elég gyakran, így van értelme, hogy bízza meg a számítógépre:

Próbálja kísérletezni töredékek.

átviteli mátrix a következőképpen néz ki:

ahol X, Y, Z - értékeket szeretnénk felvenni a vektor.

Tehát, ha azt akarjuk, hogy mozog a vektor (10, 10, 10, 1), 10 egység irányába X, akkor megkapjuk:

... megkapjuk (20, 10, 10, 1) homogén vektor! Ne felejtsük el, hogy az 1. paraméter w, olyan helyzetet jelent, de nem az irányt, és a mi átalakulás nem változtat azon a tényen, hogy dolgozunk a helyzet.

Most hogy mi történik, ha a vektor (0, 0, -1, 0), a sort:

... és kap az eredeti vektor (0, 0, -1, 0). Amint azt korábban említettük, a paraméter-vektort w = 0 nem vihetők át.

És itt az ideje, hogy helyezze át a kódot.

** A GLSL. ** Sőt, akkor sem teszi a shader, gyakran akkor elvégzi GLM :: lefordítani () C ++, kiszámítható a mátrix, tegyük bele GLSL, és már a shader szaporodnak:

Ez egy speciális mátrix, amely nem csinál semmit, de megérinteni, mert ez fontos megjegyezni, hogy egy szorozni 1,0 ad:

Úgy néz ki, mint egyszerű:

Tehát, ha azt szeretnénk, hogy alkalmazza a vektor skálázás (összesen vagy irány - ez nem fontos) 2,0 minden irányban, akkor:

Vegye figyelembe, hogy w nem változik, valamint figyelni arra, hogy az identitás mátrix - egy speciális esete a méretezés mátrix skálán tényező 1 az összes tengelyre. Szintén az identitás mátrix - egy speciális esete a transzfer mátrix, ahol a (X, Y, Z) = (0, 0, 0), ill.

Bonyolultabb, mint korábban feltételezték. Elhagyjuk a részleteket itt, mert akkor nem kell tudni biztosan, a mindennapi használat során. További információért kérjük, kattintson a linkre Matricák és négyes FAQ (nagyon népszerű erőforrás és ott lehet hozzáférni az Ön nyelvén)

## Összerakva az átalakulás

Tehát, most már el tud fordulni, mozgatni és méretezni a vektorok. A következő lépés az lenne jó ötlet, hogy összekapcsolják az átalakulás, hogy megvalósul a következő képlet:

FIGYELEM! Ez a képlet valójában azt mutatja, hogy skálázás végezzük el először, majd kapcsolja, és csak a legvégső esetben, ha mozog. Így mátrixszorzással működik.

Ügyeljen arra, hogy emlékezzen a sorrendben, amelyben mindez megtörtént, mert a sorrend nagyon fontos a végén, akkor nézd meg magad:

  • Tegyünk egy lépést előre és balra
  • Fordulj balra, és egy lépést előre

A különbség nagyon fontos megérteni, mert akkor folyamatosan szembesülnek ezzel. Például ha dolgozni játék karakter, vagy egy tárgy, akkor először mindig a skála, majd kapcsolja be, majd át.

Szorzás két mátrixok nagyon hasonlít a szorzás a mátrixok és vektorok, ezért elhagyja a leírást, és ha azt szeretné, hogy többet, akkor ismét a linkre kattintva Matricák és négyes FAQ.

Amíg a vége ennek a bemutató, akkor feltételezzük, hogy tudjuk, hogyan kell megjeleníteni a 3D modell kedvenc Blender - majom Suzanne.

Világ, a fajok és vetítés mátrix - egy praktikus eszköz, hogy szét transzformációk.

Ez a modell, valamint a piros háromszög által meghatározott csúcsok halmaza, amelynek koordinátáit vonatkozásában definiált objektum centrum, azaz. E. Vertex koordinátái (0, 0, 0) lesz a központja a tárgyat.







3. lecke mátrix

Ezután szeretnénk mozgatni a modell, mivel a játékos irányít ez a billentyűzet és az egér. Minden, amit teszünk - ez vonatkozik méretezés, forgatás, majd át. Ezeket a műveleteket végezni minden csúcs minden keret (végre GLSL, és nem a C ++!) És így a modell mozog a képernyőn.

3. lecke mátrix

Most a csúcs a világ térben. Ez azt mutatja, a fekete nyíl az ábrán. Mi már kiköltözött a tér objektum (minden csúcsot viszonyítva meghatározott objektum központ) a nemzetközi térben (az összes csúcsot viszonyítva definiáltuk, hogy a központ a világon)

3. lecke mátrix

Vázlatosan, ezt mutatja a következőképpen:

3. lecke mátrix

Ismét idézem Futurama:

A motor nem mozdul a hajót. A hajó továbbra is ugyanazon a helyen, és a motor mozgatja az univerzumot körülötte.

3. lecke mátrix

Próbáld meg elképzelni kapcsolatban a kamerát. Például, ha azt szeretnénk, hogy a képek a hegy, ha nem mozog a kamera, és mozgassa a hegy. Ez nem lehetséges a valós életben, de hihetetlenül egyszerű számítógépes grafika.

Tehát, kezdetben, a kamera található, a központ a világ koordináta-rendszerben. Ahhoz, hogy mozog a világ, akkor kell, hogy vezessenek be egy másik mátrix. Tegyük fel, hogy azt szeretné, hogy a kamera a 3 egység jobbra (+ X), ami megfelel a mozgó szerte a világon 3 egység balra (X). A kód így néz ki:

Ismét a teljes kép mutatja ezt. Elköltöztünk egy világ koordináta-rendszer (minden csúcsot viszonyítva meghatározott a világ közepe rendszer), hogy a kamera koordináta-rendszer (minden csúcsot meghatározása a kamerához képest):

3. lecke mátrix

Nos, amíg az agy megemészti, nézzük a funkció, amely biztosítja számunkra a GLM, hanem GLM :: LookAt:

Itt van egy táblázat, amely megmutatja, hogy mit csinálunk:

3. lecke mátrix

Így most már a kamera térben. Ez azt jelenti, hogy a tetején, amely megkapja a koordinátákat x == 0 és y == 0 jelenik meg a képernyő közepén. Azonban, ha a tárgy megjelenítésére is nagy szerepet játszik, hogy a kamera távolságát (z). A két csomópont azonos X és Y, amelynek nagyobb csúcsértéke Z jelenik meg közelebb van, mint a másik.

Ez az úgynevezett perspektivikus vetítés:

3. lecke mátrix

És szerencsénkre, a 4x4-es mátrix tudja végrehajtani ezt proektsiyu¹:

Elköltöztünk kamerás terület (minden csúcsot viszonyítva meghatározott kamera) a homogén térben (összes csúcs van egy kis kocka Minden, ami belül van a kocka -. Jelenik meg a képernyőn).

3. lecke mátrix

Most nézd meg az alábbi képet, így jobban megérteni, hogy mi történik a vetítés. Mielőtt a vetítés van a kék tárgyakat a térben, a kamra, míg a piros ábra áttekintést ad a kamera, hogy van. E. Minden, amit a kamera lát.

3. lecke mátrix

A használata a nyúlvány mátrix a következő hatása:

3. lecke mátrix

Ezen a képen, egy áttekintő kamera egy kocka, és az összes objektum deformálódott. Tárgyak, amelyek közelebb állnak a kamera az nagyobb, és azok, amelyek távolabb - kicsi. Csakúgy, mint a valóságban!

Így nézne ki:

3. lecke mátrix

A fényképek a tér, így a következő matematikai alkalmazott transzformációt kinyújtja a képet szerint a tényleges méretét az ablak:

3. lecke mátrix

És ez a kép, amit ténylegesen megjelenik.

## Merge átalakulás. ModelViewProjection mátrix

... Csak a szokásos mátrix transzformációk, hogy már szeretem!

  • Az első lépés - a létrehozása is MVP mátrixban. Ezt meg kell tenni az egyes típusokra, hogy jeleníti meg.
  • A második lépés - közvetíteni ezt GLSL:
  • A harmadik lépés - használja a kapott adatokat GLSL, hogy átalakítsa a tetejét.
  • Kész! Most van egy háromszög, a 2. lecke, még található a származási (0, 0, 0), de most azt látjuk, hogy hosszú távon a pont (4, 3, 3).

3. lecke mátrix

6. lecke, akkor megtanulják, hogyan kell változtatni ezeket az értékeket dinamikusan a billentyűzet és az egér, hogy hozzon létre egy fényképezőgép, amit használnak, hogy a játékokban. De először is megtanulják, hogyan kell adni ezt a színt modellt (4. lecke) és a textúra (5. lecke).

  • Próbálja meg módosítani az értékeket GLM :: perspektíva
  • Ahelyett, hogy a perspektivikus vetítés, próbálja meg használni ortogonális (GLM: orto)
  • Változás ModelMatrix fordításhoz, forgatás és méretezés a háromszög
  • Használjon korábbi munkát, de egy másik műveletek sorrendjét. Megjegyzés az eredmény.