Atunci când se lucrează cu grafică tridimensională utilizate mai multe tipuri de sisteme de coordonate. Pentru a afișa obiectele bidimensionale avem nevoie de un sistem corespunzător de coordonate cu două axe - o axă orizontală X și axa verticala Y. Reamintim că sistemul de coordonate ecran pentru grafica bidimensionale are un început (punctul 0.0), în colțul din stânga sus al monitorului, partea pozitivă a axei X la dreapta originii, partea pozitivă a axei Y - din partea de jos.
Pentru a lucra cu obiecte tridimensionale avem nevoie de o altă axă - se numește axa Z. Există mai multe variante ale sistemelor tridimensionale de coordonate, în special, așa-numitele sisteme laterale laterale și laterale sunt comune. Vom folosi sistemul cu mâna dreaptă - este folosit în cadrul XNA. Imaginea sa schematică este prezentată în Fig. 1.
Fig. 1. Sistemul de coordonare față-dreapta
Particularitatea acestui sistem de coordonate constă în faptul că originea poate fi asociată cu colțul din stânga jos al monitorului, partea pozitivă a axei X este la dreapta de la origine, partea pozitivă a axei Y - partea superioară și axa Z pozitivă - partea din față. Și aceasta înseamnă că partea vizibilă a axei Z este partea sa negativă. Această parte a axei este ca și cum ar fi "în adâncul monitorului", în timp ce partea pozitivă este "în fața monitorului". În Fig. 1. linia punctată prezintă partea negativă a axei Z.
În sistemul de coordonate bidimensional, există un punct de conceptul - coordonatele sunt definite de cele două valori - există X și Y. puncte într-un sistem de coordonate tridimensional - ele sunt deja definite prin trei valori - X, Y, Z.
Punctele sunt folosite pentru a specifica coordonatele vârfurilor de poligoane (poligoane), în special triunghiurile. Astfel, triunghiul prezentat în Fig. 1. Având în vedere trei puncte - A, B, C.
De regulă, obiectele tridimensionale mai complexe sunt construite din triunghiuri.
În grafica tridimensională, există un astfel de lucru ca o față. Acesta este un obiect plat care definește mai multe noduri. În cazul nostru, un triunghi obișnuit este doar o față. De la mai multe fețe plane puteți colecta un obiect tridimensional.
Cele mai multe triunghiuri utilizate în construcția modelului - cu cât sunt mai detaliate. Punctele corespunzătoare vârfurilor unui triunghi, care pot fi reprezentate în spațiul tridimensional, se numesc noduri. Poate că veți întâlni pluralul cuvântului vertex: "vertex" arata ca "vertices" în engleză. Uneori, pentru o desemnare a topurilor se folosește o hârtie de urmărire cu limbajul englez.
Triunghiul nu este ales accidental ca formele geometrice de bază - în primul rând - aceasta este întotdeauna un poligon este convexă, iar în al doilea rând - este imposibil să aranjeze cele trei puncte, astfel încât acestea să nu fac parte din același plan. Adică, triunghiul - o cifră care este întotdeauna convexă și plat, ceea ce face posibil să-l folosească cu succes în scopul graficii tridimensionale.
Mai multe fețe, dintre care un obiect tridimensional sunt compuse, sunt numite mesh. "Grilă" este un set de triunghiuri.
Un alt concept care vă este util pentru lucrul cu grafica 3D este conceptul unui vector. Un vector, ca un punct, poate fi definit de trei parametri, dar nu descrie poziția în spațiu, ci direcția și viteza mișcării.
Vectorul are un început și un sfârșit, pentru definiția sa completă este necesar să cunoaștem coordonatele punctului de început și sfârșit al vectorului, adică în locul celor trei valori de coordonate, avem deja nevoie de șase valori. Cu toate acestea, dacă, în mod implicit, originea originii este considerată ca origine (punctul 0,0,0) - atunci pentru definiția sa vor fi suficiente și trei puncte.
De exemplu, un vector cu coordonate (1,0,0) înseamnă: "direcția - spre dreapta, viteza - 1". Dacă vom amâna acest vector de la origine, se vede clar că este îndreptat spre dreapta (Figura 2).
direcția vectorului determinat de poziția celui de al doilea punct în raport cu primul (în cazul nostru - poziția vectorului punct final, în care vectorul este definit în raport cu originea), iar viteza - lungimea vectorului - adică - diferența dintre punctul inițial și final. În cazul nostru, lungimea vectorului coincide cu coordonatele capătului său.
Fig. 2. Vectorul (1,0,0)
Există un tip special de vectori - normali. Normele pot fi construite pentru fețe și pentru vârfuri ale unui obiect. Normalele pentru fețe sunt perpendiculare pe aceste fețe. Ele sunt folosite la calcularea culorii unui obiect.
Transformări în spațiul tridimensional
Cunoscând coordonatele vârfurilor poligoanelor care alcătuiesc obiectul, îl putem aranja în spațiu. Acum trebuie să înțelegem schimbarea poziției obiectelor în spațiu. Există mai multe operații de bază care pot fi folosite pentru a muta obiecte în spațiul tridimensional. Aceasta este traducerea, rotația și scara.
Rezultatele subsistemului grafic al jocului 3D pe care îl vedem pe un monitor cu ecran plat - o scenă tridimensională modelată pe calculator este proiectată pe o suprafață bidimensională. Când proiectați, trebuie să selectați un punct care să acționeze ca o cameră, permițându-vă să vedeți spațiul tridimensional. La rândul său, obiectele din spațiul tridimensional se pot deplasa în conformitate cu anumite reguli. Pentru a gestiona toate acestea, sunt utilizate mai multe matrici. Este o matrice mondială (Matricea Lumii), o Matrice de Vizualizare și o Matrice de Proiecție.
Matricea poate fi reprezentată ca o tabelă formată din rânduri m și coloane n. În matricele de computere 4x4 sunt utilizate. Primele trei coloane ale acestei matrice sunt responsabile pentru modificarea coordonatelor X, Y, Z ale vârfurilor obiectului care participă la transformare.
Matricea mondială vă permite să specificați transformările - obiecte în mișcare, rotire și transformare.
Matricea de vizualizare vă permite să controlați camera.
Matricea de proiecție este utilizată pentru a regla proiecția scenei tridimensionale pe ecran.
Să presupunem că există un triunghi dat de următoarele noduri (Tabelul 1).
Tabelul 1. Vertexele unui triunghi înainte de deplasare
Atunci când se deplasează acest triunghi cu 10 poziții de-a lungul axei X, trebuie să adăugăm 10 la fiecare dintre coordonatele X ale vârfurilor. Rezultatul este o matrice de acest fel (Tabelul 2).
Tabelul 2. Vertexurile unui triunghi după deplasare
Același efect poate fi obținut prin înmulțirea coordonatelor fiecărui vârf cu matricea mondială. Pentru aceasta, coordonatele vârfului sunt reprezentate ca o matrice formată dintr-un rând și patru coloane. Primele trei coloane conțin coordonatele X, Y, Z, în a patra - 1. Matricea mondială este prezentată sub forma unei tabele de 4x4. Iată cum arată funcția de multiplicare a matricei (formula 1.):
Formula 1. Înmulțirea matricei vertexului și a matricei mondiale
La transformare, fiecare dintre noduri se înmulțește cu matricea mondială.
Fiecare dintre transformările în spațiu necesită o ajustare specială a matricei mondiale. În formula 2. este rezultatul șablonului matricei mondiale care permite mutarea obiectelor în spațiu.
Formula 2. Matricea mondială pentru mutarea obiectului
aici # 916; X, # 916; Y și Z - creșteri ale coordonatelor X, Y și Z.
Matricea mondială pentru obiectele rotative în jurul axei X arată astfel (formula 3.).
Formula 3. Matricea mondială pentru rotație de-a lungul axei X.
aici # 945; - unghiul de rotație în radiani
Matricea mondială pentru rotirea obiectelor de-a lungul axei Y arată astfel (formula 4.)
Formula 4. Matricea mondială pentru rotație de-a lungul axei Y
Matricea pentru obiectele rotative în jurul axei Z este dată în formula 5.
Formula 5. Matricea mondială pentru rotație de-a lungul axei Z
Formula 6. reprezintă o matrice care servește la transformarea obiectelor.
# 966; x, , Z sunt factorii de scalare care se aplică vârfurilor. Ele vă permit să "comprimați" sau să "întindeți" obiecte.
Alte tipuri de matrice:
Matricea de proiecție vă permite să controlați proiecția scenei pe ecran.
Prima este o proiecție în perspectivă (proiecție perspectivă). În această proiecție, obiectele arată la fel cum le vedeam în lumea reală. Obiectele care se află în continuare, par mai puțin obiecte mai aproape.
Al doilea tip de proiecție este o proiecție ortogonală. Aici, obiectele sunt proiectate pe planul ecranului fără a ține cont de perspectivă.
Iluminarea obiectelor în jocuri joacă același rol pe care îl atribuie în lumea reală. Există multe tipuri de iluminat.
Lumina ambientală ambientală este o lumină care luminează toate obiectele din scenă cu aceeași intensitate. Sursa luminii împrăștiate nu are loc.
Lumina punctului este sursa care emite lumină în toate direcțiile. Se poate compara cu lumina provenită de la un bec care nu este acoperit de o umbră.
Lumină direcțională (lumină direcțională). Această sursă, spre deosebire de sursa punctuală, nu are nicio locație, dar are o orientare
Zona de lumină (spot light) sau lumina reflectoarelor are o locație, o orientare și fluxul său de lumină este limitat sub forma unui con.
Sursele de lumină pot avea intensități diferite, diferite culori, când se aprind scene care pot utiliza mai multe surse diferite. Toate acestea fac ca iluminatul să fie cel mai important element al graficii tridimensionale.
Shadere sau programe shader - sunt programe care vă permit să aplicați diferite efecte modelelor. Acestea sunt scrise într-un limbaj de programare special, de obicei nu manual, ci utilizând software-ul corespunzător. Shaderele sunt împărțite în vertex și pixel. Variabilele de vârf vă permit să aplicați diferite efecte la vârfurile modelelor, shaderele de pixeli procesează culoarea fiecărui pixel al modelului înainte de a fi afișate pe ecran.
Texturile sunt imagini raster (bidimensionale) care sunt suprapuse pe modele tridimensionale. De exemplu, vehiculul model tridimensional poate fi o mașină, care așa cum au fost „tăiat“ din materialul solid și apoi suprapuse pe vehicul modelul devine de culoare textură adecvată, creând iluzia că a avut mici clearance-ul piese etc. Unitatea minimă de textură se numește texel. Cu cât există mai mulți pixeli pe texel, cu atât rezoluția texturii este mai mare - cu atât mai mult va fi modelul modelului după aplicarea unei texturi.