O koordinatni transformaciji 3D-modelov

Stran posodobljena :
Datum ustvarjanja strani :

snov

predvsem

Na televizijskih zaslonih in zaslonih v igrah lahko pogosto vidite 3D slike, toda kako na 2D zaslonu prikažete predmete, ki obstajajo v 3D prostoru, kot so liki in zgradbe, ki se premikajo po zaslonu?

V 2D igrah obstajajo samo dvodimenzionalni elementi "X in Y" kot koordinatne vrednosti, zaslon pa je tudi 2D, tako da, če narišete predmet z določitvijo koordinatnega položaja X in Y, boste intuitivno razumeli, kako bo narisan na katerem mestu.

Vendar pa v 3D to ni tako enostavno. Kot že ime pove, je 3D »3 dimenzija« in ima tri koordinatne informacije: »X, Y in Z«. Ker se koordinate razlikujejo od zaslona, ki je 2D, ni mogoče narisati predmeta, kakršen je.

Nato je treba "pretvoriti tridimenzionalne informacije v dvodimenzionalne informacije". To se običajno imenuje "koordinatna transformacija". Ne pozabite, da je ta transformacija koordinat bistvenega pomena za 3D programiranje.

Obstaja več vrst koordinatnih transformacij za pretvorbo 3D v 2D, vendar obstajajo tri glavne vrste koordinatnih transformacij, ki jih programerji obravnavajo: "transformacija sveta", "transformacija pogleda" in "transformacija projekcije". Tukaj bomo razložili vse, kar je povezano s koordinatno transformacijo.

Levičarski in desničarski koordinatni sistemi

V 3D obstajata dva koordinatna sistema, "levičarski koordinatni sistem" in "desni koordinatni sistem", ki imata različne usmeritve za vsako koordinato, kot je prikazano na spodnji sliki.

Direct3D je v prvi vrsti uporabljal levičarski koordinatni sistem, vendar obstajajo tudi funkcije za izračun za desničarske koordinatne sisteme. Vendar pa XNA ponuja samo metode izračuna za desničarske koordinatne sisteme. Zdi se, da je to v skladu z dejstvom, da druge aplikacije pogosto uporabljajo desničarske koordinatne sisteme.

Vsi nasveti XNA na tej strani uporabljajo desničarski koordinatni sistem.

Lokalni koordinatni sistem (koordinatni sistem modela)

Vsak model ima koordinatni sistem, osredotočen na izvor. Ko ustvarjate model s programsko opremo za modeliranje, mislim, da je lažje razumeti, če si predstavljate, da ga ustvarite z izvorom kot središčem.

Svetovni koordinatni sistem

Svetovni koordinatni sistem vam omogoča, da model postavite kjerkoli. Če v tej svetovni transformaciji ne storite ničesar, bo model postavljen na izhodišče na enak način kot lokalne koordinate. Postavitev ni samo premik od izvora, ampak tudi vrtenje in skaliranje.

Ogled koordinatnega sistema

Ko postavite model v svetovne koordinate, potrebujete informacije o tem, kje gledate in kje gledate 3D prostor. Temu pravimo »preobrazbe pogledov«. Pretvorbe pogleda so na splošno pogosto predstavljene kot kamere.

Parametri, potrebni za to pretvorbo, so »položaj kamere«, »točka zanimanja kamere« in »smer kamere navzgor«. Usmerjenost kamere je določena s temi tremi parametri. Spodnja slika prikazuje kamero z vidika tretje osebe.

Spodnja slika je dejansko vidna z vidika kamere z razporeditvijo, prikazano na zgornji sliki (na tej točki koordinat še nismo pretvorili v zaslon, zato je to samo slika).

V prejšnji razlagi se zdi, da je kamera nameščena in koordinate preoblikovane, vendar se v dejanskem izračunu svetovne koordinate pretvorijo glede na položaj in orientacijo kamere. Zato je izvor položaj kamere, kot je prikazano na spodnji sliki.

Projektivni koordinatni sistem

Ko se odločite, iz katerega položaja si želite ogledati 3D prostor, je naslednji korak obdelava prikaza "majhnih predmetov, ki so daleč" in "velikih stvari, ki so v bližini". To se imenuje projektivna transformacija. Obstajata dve metodi projekcijske transformacije, "perspektivna projekcija" in "ortografska projekcija", vendar je pogosto uporabljena slika "perspektivna projekcija" naslednja.

Projekcija perspektive uporablja te parametre: Kot gledanja, Razmerje stranic, Položaj posnetka naprej in Položaj zadnjega posnetka. Območje z oznako "frustum" na zgornji sliki se bo končno pojavilo na zaslonu.

»Vidni kot« določa razpon gledanja, ki ga vidi fotoaparat. Če zmanjšate kot, povečate ga in pomanjšate. Vidni kot bo navpična vrednost frustuma.

Razmerje širine in višine se uporablja za določanje vodoravnega vidnega kota, medtem ko je vidni kot navpični kot. Vodoravni kot je običajno določen z "kotom gledanja × razmerjem stranic", razmerje stranic pa je v bistvu vrednost "širine ÷ višine" zaslona, ki ga poskušate prikazati. Če spremenite to vrednost, se bo prikazani 3D-predmet raztegnil vodoravno ali navpično.

Položaj sprednjega posnetka in položaj zadnjega posnetka sta določena za določitev, ali je predmet prikazan v sprednjem ali zadnjem obsegu. Zaradi narave računalnika ni mogoče prikazati do neskončnosti, zato bomo nastavili omejitev. Ta vrednost vpliva tudi na natančnost Z-medpomnilnika, zato ga ni priporočljivo vključiti v območje risanja izven obsega, ki ga ni treba prikazati.

Perspektivni spremenjeni objekt se pretvori v prostor, kot je spodnji. Predmeti, ki so bili blizu kamere, se povečajo, predmeti, ki so bili daleč, pa se zmanjšajo.

To je prikazano v enostavno razumljivem diagramu spodaj.

Če ga dejansko pogledate z vidika kamere, je videti kot spodaj.

Druga metoda projektivne transformacije je ortografska projekcija, ki projicira vidno območje, kot je spodnje. Ker sta širina in višina konstantni ne glede na globino, se velikost predmeta ne spreminja z globino.

Koordinatni sistem zaslona

Po projekcijski transformaciji se pretvori v koordinate dejanskega zaslona. Čeprav gre za zaslon, se položaj in obseg zaslona spreminjata glede na nastavitve vidnega vrata, nastavljene v napravi. Vendar pa so v primeru iger koordinate odjemalca okna pogosto vidno polje, kot je, zato mislim, da vam ni treba preveč skrbeti.

Koordinate zaslona (0, 0) se pretvorijo iz projekcijskih koordinat (-1, 1, z). Podobno se koordinate zaslona (širina, višina) pretvorijo iz koordinat projekcije (1, -1, z).