Transformácia súradníc 3D modelov

Stránka aktualizovaná :
Dátum vytvorenia strany :

látka

predovšetkým

V hrách môžete často vidieť 3D obrázky na televíznych obrazovkách a displejoch, ale ako zobrazíte objekty, ktoré existujú v 3D priestore, ako sú postavy a budovy, ktoré sa pohybujú na obrazovke, na 2D obrazovke?

V 2D hrách sú ako hodnoty súradníc iba dvojrozmerné prvky "X a Y" a displej je tiež 2D, takže ak nakreslíte objekt zadaním polohy súradníc X a Y, intuitívne pochopíte, ako bude nakreslený v ktorej polohe.

V 3D to však nie je také jednoduché. Ako už názov napovedá, 3D je "3-rozmerný" a má tri informácie o súradniciach: "X, Y a Z". Keďže súradnice sa líšia od 2D displeja, nie je možné nakresliť objekt taký, aký je.

Potom treba "previesť trojrozmerné informácie na dvojrozmerné informácie". Toto sa bežne označuje ako "transformácia súradníc". Majte na pamäti, že táto transformácia súradníc je nevyhnutná pre 3D programovanie.

Existuje niekoľko typov transformácií súradníc na konverziu 3D na 2D, ale existujú tri hlavné typy transformácií súradníc, ktoré programátori zvládajú: "transformácia sveta", "transformácia zobrazenia" a "transformácia projekcie". Tu vysvetlíme všetko, čo súvisí s transformáciou súradníc.

Ľavotočivé a pravotočivé súradnicové systémy

V 3D existujú dva súradnicové systémy, "ľavotočivý súradnicový systém" a "pravostranný súradnicový systém", ktoré majú pre každú súradnicu rôzne orientácie, ako je znázornené na obrázku nižšie.

Direct3D primárne používal ľavotočivý súradnicový systém, ale existujú aj funkcie na výpočet pre pravostranné súradnicové systémy. XNA však poskytuje výpočtové metódy iba pre pravostranné súradnicové systémy. Zdá sa, že je to v súlade so skutočnosťou, že iné aplikácie často používajú pravoruké súradnicové systémy.

Všetky tipy XNA na tejto stránke používajú pravostranný súradnicový systém.

Lokálny súradnicový systém (modelový súradnicový systém)

Každý model má súradnicový systém vycentrovaný na počiatok. Pri vytváraní modelu pomocou modelovacieho softvéru si myslím, že je to ľahšie pochopiteľné, ak si predstavíte, že ho vytvoríte s počiatku ako stredom.

Svetový súradnicový systém

Svetový súradnicový systém umožňuje umiestniť model kdekoľvek. Ak v tejto transformácii sveta neurobíte nič, model bude umiestnený na počiatku rovnakým spôsobom ako miestne súradnice. Umiestnenie nie je len pohyb od počiatku alebo otáčanie a mierka.

Zobraziť súradnicový systém

Po umiestnení modelu do svetových súradníc potrebujete informácie o tom, kam sa pozeráte a kde sa pozeráte na 3D priestor. To je to, čo nazývame "transformácie pohľadu". Transformácie pohľadu sú vo všeobecnosti často reprezentované ako kamery.

Parametre potrebné na tento prevod sú "poloha kamery", "bod záujmu kamery" a "smer kamery nahor". Orientácia fotoaparátu je určená týmito tromi parametrami. Obrázok nižšie zobrazuje fotoaparát z pohľadu tretej strany.

Obrázok nižšie je v skutočnosti videný z pohľadu kamery s usporiadaním znázorneným na obrázku vyššie (v tomto bode sme ešte nepreviedli súradnice na obrazovku, takže ide len o obrázok).

V predchádzajúcom vysvetlení sa zdá, že kamera je umiestnená a súradnice sú transformované, ale pri skutočnom výpočte sa svetové súradnice prevádzajú podľa polohy a orientácie kamery. Preto je počiatok poloha kamery, ako je znázornené na obrázku nižšie.

Projektívny súradnicový systém

Keď sa rozhodnete, z ktorej pozície sa pozeráte na 3D priestor, ďalším krokom je spracovanie zobrazenia "malých objektov, ktoré sú ďaleko" a "veľkých vecí, ktoré sú v blízkosti". Toto sa nazýva projektívna transformácia. Existujú dve metódy transformácie projekcie, "perspektívna projekcia" a "ortografická projekcia", ale bežne používaný obraz "perspektívna projekcia" je nasledovný.

Perspektívna projekcia používa nasledujúce parametre: Pozorovací uhol, Pomer strán, Poloha klipu dopredu a Poloha zadného klipu. Na obrazovke sa nakoniec zobrazí oblasť označená ako "frustum" na obrázku vyššie.

"ViewAngle" určuje viewrozsah viditeľný z fotoaparátu. Zmenšením uhla sa priblíži, zväčšením sa oddiali. Pozorovací uhol bude vertikálna hodnota frusta.

Pomer strán sa používa na určenie horizontálneho uhla pohľadu, zatiaľ čo pozorovací uhol je vertikálny uhol. Horizontálny uhol je zvyčajne určený "pozorovacím uhlom × pomerom strán" a pomer strán je v podstate hodnota "šírky ÷ výšky" obrazovky, ktorú sa pokúšate zobraziť. Ak zmeníte túto hodnotu, zobrazený 3D objekt sa bude zdať horizontálne alebo vertikálne.

Poloha predného klipu a poloha zadného klipu sú určené na určenie, či sa objekt zobrazí v prednom alebo zadnom rozsahu. Vzhľadom na povahu počítača nie je možné zobraziť až do nekonečna, preto si nastavíme limit. Táto hodnota ovplyvňuje aj presnosť vyrovnávacej pamäte Z, preto sa neodporúča zahrnúť ju do kresliacej oblasti mimo rozsahu, ktorý nie je potrebné zobrazovať.

Perspektívny transformovaný objekt sa skonvertuje na priestor podobný tomu nižšie. Objekty, ktoré boli blízko fotoaparátu, sa priblížia a objekty, ktoré boli ďaleko, sa zmenšia.

To je znázornené na zrozumiteľnom diagrame nižšie.

Ak sa na to skutočne pozriete z pohľadu fotoaparátu, vyzerá to ako nižšie.

Ďalšou metódou projektívnej transformácie je ortografická projekcia, ktorá premieta viditeľnú oblasť, ako je tá nižšie. Pretože šírka a výška sú konštantné bez ohľadu na hĺbku, veľkosť objektu sa nemení s hĺbkou.

Súradnicový systém obrazovky

Po transformácii projekcie sa prevedie na súradnice skutočnej obrazovky. Aj keď ide o obrazovku, poloha a dosah displeja sa menia v závislosti od nastavení záberu nastaveného na zariadení. V prípade hier sú však klientske súradnice okna často výberom takým, aký je, takže si myslím, že sa nemusíte príliš obávať.

Súradnice obrazovky (0, 0) sa prevedú zo súradníc projekcie (-1, 1, z). Podobne sa súradnice obrazovky (šírka, výška) prevedú zo súradníc projekcie (1, -1 ,z).