Articole de știri Xna () - Articole de bază ale graficelor tridimensionale

Numărul cursului 5. Grafica tridimensională


Această lucrare de laborator este dedicată principiilor de lucru cu grafică tridimensională. Aici vom vorbi despre sistemul tridimensional de coordonate, părțile constitutive ale obiectelor tridimensionale, calculele matricei folosite în grafica tridimensională.





Vom analiza, de asemenea, părțile relevante ale modelului de obiect XNA.

Scopul prelegerii

  • Aflați elementele de bază ale lucrului cu grafica 3D în XNA

Obiectivele conferinței
  • Vizualizați sistemul de coordonate drepte.
  • Să se familiarizeze cu conceptul unui punct, a unui vârf, a unui vector, a unui poligon în spațiul tridimensional.
  • Să se familiarizeze cu aplicarea lumii, a speciilor și a matricelor de proiecție.
  • Să se familiarizeze cu transformările matricei în spațiul tridimensional.
  • Să se familiarizeze cu conceptele de obiecte de iluminat.
  • Familiarizați-vă cu cele mai importante proprietăți și metode ale obiectelor XNA utilizate în lucrul cu grafica tridimensională







Sistem de coordonate

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 vertical Recall axa Y. că sistemul de coordonate ecran pentru grafica bidimensionale are un început (punctul 0.0), în colțul din stânga sus al ecranului, partea pozitivă a axei X este situat chiar de la origine, partea pozitivă a axei Y - în 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. 5.1.


Fig. 5.1. Sistem de coordonate drepte

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. 5.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. 5.1. este dat de 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. Lucrul cu grafica 3D în XNA, adesea trebuie să îndepliniți cuvântul englez vertex - vertex. 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 5.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. 5.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 5.1.).

Tabelul 5.1. Vârfurile triunghiului înainte de 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 5.1.):

Formula 5.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 5.2. Se dă modelul matricei mondiale, care permite mutarea obiectelor în spațiu.

Formula 5.2. O matrice mondială pentru mutarea unui obiect

Matricea mondială pentru obiectele rotative în jurul axei X arată astfel (formula 5.3.).

Formula 5.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 5.4.)

Formula 5.4. Matricea mondială pentru rotație de-a lungul axei Y

Matricea pentru obiectele rotative în jurul axei Z este dată în Formula 5.5.

Formula 5.5. Matricea mondială pentru rotirea de-a lungul axei Z

Formula 5.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.

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.

Obiecte XNA pentru lucrul cu grafica 3D

În modelul de obiect XNA, există mai multe obiecte care sunt utilizate intens pentru lucrul cu grafica 3D.

Clasa Matrix vă permite să creați o matrice care este folosit pentru a converti obiectele în spațiu pentru a controla aparatul de fotografiat și proiecția tridimensională a scenei de pe ecran. Această clasă, care, așa cum se obișnuiește în NET Framework, este același tip de date și cuprinde o metodă statică utilizată pentru a crea matrici. De regulă, este necesar, de exemplu, „de mână“ pentru a modifica matricea mondială pentru a organiza rotația sau mișcarea modelului - toate operațiunile necesare pot fi efectuate folosind metodele statice ale clasei Matrix, la fel ca și obiectele din clasa Matrix au o varietate de proprietăți utile. Să luăm în considerare câteva dintre ele.

  • Valorile de returnare Proprietati Mxy care sunt aranjate într-un rând cu indicele x și indicele coloanei y, care se schimbă de la 1 la 4. De exemplu, M11 proprietatea returnează valoarea la intersecția a primului rând și prima coloană a matricei, M23 - al doilea rând și a treia coloană , M44 - al patrulea rând și a patra coloană.
  • Metoda CreateLookAt vă permite să creați o matrice de vizualizare (cameră).
  • Metoda CreateOrthographic vă permite să creați o matrice de proiecție ortogonală.
  • Metoda CreatePerspective vă permite să creați o matrice de proiecție în perspectivă.
  • Metodele CreateRotationX, CreateRotationY, CreateRotationZ vă permit să creați matrici de rotație în jurul axei corespunzătoare.
  • Metoda CreateScale este utilizată pentru a crea o matrice de scalare (redimensionare) a unui obiect.
  • Metoda CreateTranslation vă permite să creați o matrice de deplasare a obiectului.
  • Metoda CreateWorld creează o matrice mondială.

Clasa Vector3 este utilizată pentru a stoca coordonatele punctelor în spațiu, pentru a specifica vectori și pentru alte sarcini, de exemplu - pentru a seta parametrii matricei.

Clasa BasicEffect conține multe elemente care sunt importante atunci când creați o scenă tridimensională. Obiectul acestei clase este acela care conține descrieri ale matricelor, descrieri ale surselor de lumină în joc și multe alte proprietăți și metode importante. În esența sa, această clasă este un set de shadere, fiecare dintre acestea fiind utilizat în funcție de următoarele proprietăți:

  • Proprietatea AmbientLightColor vă permite să setați iluminarea ambientală în lumină împrăștiată
  • Proprietăți DirectionalLight0, DirectionalLight1, DirectionalLight2 vă permite să setați surse de culoare direcțională
  • Proprietățile FogColor, FogEnabled, FogEnd, FogStart vă permit să controlați efectul de ceață
  • Proprietatea LightingEnabled permite iluminarea
  • PreferPerPixelLighting proprietate vă permit să controlați efectul de iluminare per pixel - Acest tip de acoperire este disponibil pentru plăcile grafice care suportă Pixel Shader Model 2.0 (Pixel Shader Model 2.0.)
  • Proprietatea de proiecție vă permite să controlați matricea de proiecție.
  • Proprietatea Textură este utilizată pentru a controla textura
  • Proprietatea TextureEnabled vă permite să activați utilizarea unei texturi
  • Proprietatea View vă permite să controlați matricea de vizualizare (camera)
  • Proprietatea mondială este destinată să controleze matricea mondială
  • Metodele Begin and End vă permit să specificați începutul și sfârșitul blocului de procesare a efectului.
  • Metoda EnableDefaultLighting permite iluminarea în mod implicit.

Clasa MathHelper

Conține metode utile pentru efectuarea diferitelor operații matematice. De exemplu, metoda statică a lui ToRadians vă va permite să traduceți valori de la grade la radiani.

Când lucrați cu grafică 3D, sunt folosite alte obiecte XNA, cu care vă veți familiariza cu lucrările ulterioare.







Trimiteți-le prietenilor: