Pirmoje dalyje, kur nuodugniau apžvelgsime 3D žaidimų kūrimą, visą dėmesį skirsime viršutiniam proceso etapui. Tai reiškia, kad reikia vilkti mūsų matematikos vadovėlius, teptis tiesine algebra, matricomis ir trigonometrija - o taip!

Mes valdysime, kaip transformuojami 3D modeliai ir kaip apskaičiuojami šviesos šaltiniai. Kampų ir geometrijos šešėlių skirtumai bus kruopščiai ištirti ir pamatysite, kur telpa. Norėdami padėti paaiškinti, mes naudosime diagramas ir kodų pavyzdžius, kad parodytume, kaip žaidime tvarkoma matematika ir skaičiai. Jei nesate pasiruošę viskam, nesijaudinkite - galite pradėti. 3D žaidimų atvaizdavimas 101. Tačiau, kai jis bus nustatytas, perskaitykite pirmąjį žvilgsnį į 3D grafikos pasaulį.

Koks tikslas?

Matematikos pasaulyje taškas yra tiesiog padėtis geometriniame lauke. Nėra nieko mažesnio už tašką, nes jis neturi dydžio, todėl juos galima naudoti aiškiai apibrėžiant, kur prasideda ir baigiasi objektai, pvz., Linijos, plokštumos ir tūriai.




3D grafikai ši informacija yra labai svarbi nustatant, kaip viskas atrodys, nes viskas rodoma linija, plokštuma ir kt. Kolekcija. Žemiau pateiktas vaizdas yra 2015 m. „Bethesda“ leidimo ekrano kopija. Fallout 4:




Gali būti šiek tiek sunku suprasti, kaip tai tik didelė taškų ir linijų krūva, todėl mes jums parodysime, kaip ta pati scena atrodo „vielinio rėmo“ režimu. 3D atvaizdavimo variklis praleidžia pikselių stadijoje padarytas faktūras ir efektus ir nubrėžia tik taškus jungiančias spalvotas linijas.







Dabar viskas atrodo labai kitaip, tačiau galime pamatyti įvairius objektus, aplinką ir visas linijas, kurios susideda sukuriant foną. Kai kurios yra tik keletas linijų, pavyzdžiui, akmenys priekiniame plane, o kiti turi pakankamai linijų, kad atrodytų tvirti.

Kiekvienas taškas kiekvienos eilutės pradžioje ir pabaigoje buvo atidirbtas naudojant daug matematikos. Kai kurie iš šių skaičiavimų yra labai greiti ir lengvi; kiti yra daug sunkesni. Dirbant kartu su taškų grupėmis, ypač trikampio formos, pasiekiama daug rezultatų, todėl panagrinėkime jas atidžiau.




Ko reikia trikampiui?

vardas trikampis tai mums sako, kad forma turi 3 vidinius kampus; Tam mums reikia 3 kampų ir 3 linijų, jungiančių kampus. Teisingas kampo pavadinimas kalva (viršūnės yra daugiskaitos žodis) ir kiekvieną apibrėžia taškas. Kadangi mes remiamės 3D geometriniu pasauliu, Dekarto koordinačių sistema už taškus. Tai paprastai rašoma kartu kaip 3 reikšmės, pavyzdžiui (1, 8, -3) arba apskritai (X ve Z).

Iš čia mes galime pridėti dar dvi viršūnes, kad gautume trikampį:




Atkreipkite dėmesį, kad parodytos linijos iš tikrųjų nėra būtinos - mes galime turėti tik taškus ir galime sistemai pasakyti, kad šios 3 viršūnės sudaro trikampį. Visi viršūnių duomenys saugomi gretimame atminties bloke, vadinamame a kampinis buferis; Informacija apie jų daromą formą yra tiesiogiai užkoduota atvaizdavimo programoje arba saugoma kitame atminties bloke. katalogo buferis.

Pirmojo atveju vadinamos skirtingos formos, kurias galima suformuoti iš kampų primityvus „Direct3D“ pateikia sąrašą, juostas ir ventiliatorius taškų, linijų ir trikampių pavidalu. Teisingai naudojant, trikampės juostos padeda pagerinti našumą, kai kampai naudojami keliems trikampiams. Žemiau pateiktame pavyzdyje matome, kad 2 trikampiams sujungti reikia tik 4 kampų - jei jie būtų atskiri, mums reikėtų 6 viršūnių.

Jei norite aprėpti didesnę kampų kolekciją, pvz. žaidimo NPC modelis, tada a - tai dar vienas atminties blokas, tačiau susideda iš kelių modelio buferių (viršūnės, rodyklės ir kt.) ir tekstūros išteklių. „Microsoft“ pateikia trumpą informaciją apie šiuos buferio naudojimo būdus. internetiniai dokumentai šaltinis.

Kol kas sutelkime dėmesį į tai, kas padaryta šiems kampams 3D žaidime, kiekvieną kartą kuriant naują kadrą (jei nesate tikri, ką tai reiškia, dar kartą atlikite greitą šlavimą) perduoti 101). Paprasčiau tariant, jiems daromas vienas ar du dalykai:

  • Perkelkite viršūnę į naują vietą
  • Pakeiskite kampo spalvą

Pasiruošę šiek tiek matematikos? Gerai! Nes taip ir daroma.

Įveskite vektorių

Įsivaizduokite, kad ekrane yra trikampis, o jūs paspausite mygtuką, kad perkeltumėte jį į kairę. Natūralu (X ve Z) kiekvienos viršūnės skaičiai atitinkamai skiriasi ir yra; bet, Kaip Tai gali pasirodyti šiek tiek neįprasta. Didžioji dauguma 3D grafikos atvaizdavimo sistemų, užuot keisdami koordinates, darbui atlikti naudoja specialų matematinį įrankį: vektoriai.

Vektorius gali būti laikomas rodykle, nukreipiančia į tam tikrą vietą erdvėje ir gali būti bet kokio reikalingo ilgio. Kampai iš tikrųjų aprašomi naudojant vektorius, pagrįstus Dekarto koordinatėmis, tokiu būdu:

Atkreipkite dėmesį, kaip mėlyna rodyklė prasideda toje vietoje (šiuo atveju Kilmė) ir tęsiasi iki smailės. Mes panaudojome tai, kas buvo vadinama crudens žymėjimas apibūdinti šį vektorių Irklavimas žymėjimas taip pat veikia. Taip pat pastebėsite, kad yra dar viena papildoma vertė - paprastai yra 4-asis skaičius su w komponentu ir naudojamas nurodyti, ar vektorius naudojamas apibūdinti viršūnės padėtį ( vektoriaus padėtis) arba bendruoju aspektu (a naktis vektorius). Pastarojo atveju tai atrodys taip:

Šis vektorius nukreiptas ta pačia kryptimi ir turi tą patį ilgį kaip ir ankstesnis padėties vektorius, taigi (X ve Z) reikšmės bus vienodos; Bet w-komponentiniai vektoriai yra nulis, o ne 1. Krypties vektorių naudojimas bus paaiškintas vėliau šiame straipsnyje, tačiau dabar apsvarstykime faktą, kad visi 3D scenos kampiniai taškai bus apibrėžti tokiu būdu. Kodėl? Kadangi naudojant šį formatą tampa daug lengviau pradėti juos judėti.

Matematika, matematika ir dar daugiau matematikos

Atminkite, kad mes turime pagrindinį trikampį ir norime jį perkelti į kairę. Kiekvieną viršūnę apibrėžia padėties vektorius, todėl turime atlikti „judančią matematiką“ ( konversijų) turi dirbti su šiais vektoriais. Įveskite kitą transporto priemonę: serijos (arba motina vienam iš šių). Tai yra verčių, įrašytų kaip eilutės ir stulpeliai, serija, šiek tiek panaši į „Excel“ skaičiuoklę.

Kiekvienam transformacijos tipui, kurį norime atlikti, yra susieta matrica, kuri eina su ja, ir tai tik transformacijos matricos ir padėties vektoriaus padauginimo atvejis. Mes nenagrinėjame konkrečių detalių, kaip ir kodėl taip atsitinka, tačiau galime pamatyti, kaip tai atrodo.

Perkelkite viršūnę 3D erdvėje vertimas ir reikalingas apskaičiavimas yra:

x0ir kt. reikšmės rodo pradines viršūnės koordinates; delta-x Vertės nurodo, kiek smailė turi judėti. Skaičiuojant matricos ir vektoriaus vektorius, abu šiuos dalykus paprasčiausiai sujungiami ( w komponentas lieka nepaliestas, todėl galutinis atsakymas vis tiek yra padėties vektorius).

Be daiktų perkėlimo, galbūt norėsime pasukti trikampį arba pakeisti jį didesniu ar mažesniu dydžiu - yra abiejų šių transformacijų.

„WebGL“ valdomas grafinis įrankis „Real Time Rendering“ svetainė vizualizuoti šiuos skaičiavimus visoje figūroje. Pradėkime nuo stačiakampio, esančio numatytoje vietoje:

Šiame internetiniame įrankyje modelio taškas nurodo padėties vektorių, žemės matrica yra transformacijos matrica, o žemės-erdvės taškas yra transformuotos viršūnės padėties vektorius.

Dabar pritaikykime įvairias stačiakampio transformacijas:

Aukščiau esančiame paveikslėlyje pav vertimas 5 vienetai kiekviena kryptimi. Šias reikšmes galime pamatyti vidurinėje didelėje matricoje, paskutiniame stulpelyje. Pradinis padėties vektorius (4, 5, 3, 1) išlieka toks, koks turėtų, bet transformuota viršūnė dabar išversta kaip (9, 10, 8, 1).

Šioje transformacijoje viskas buvo dvigubai sumažinta: stačiakampis kraštas dabar yra dvigubai ilgesnis. Paskutinis nagrinėjamas pavyzdys yra lūžio taškas:

Stačiakampis yra pasuktas 45 ° kampu, tačiau matrica ve kosinusas kampu. Greitas bet kurio mokslinio skaičiuotuvo patikrinimas be (45 °) = 0,7071 ... suapvalina iki parodytos vertės 0,71. Mes gauname tą patį atsakymą kosinusas vertė.

Matricų ir vektorių naudoti nereikia; - bendra alternatyva ypač sudėtingiems apsisukimams, kompleksiniams skaičiams ir kuaterniyonlar. Ši matematika yra didelis žingsnis nuo vektorių, todėl mes pereisime per transformacijas.

Piko šešėlio galia

Šiame etape turime atsižvelgti į tai, kad visa tai turi išspręsti žmonės, kurie programuoja kūrimo kodą. Jei žaidimų kūrėjas naudoja trečiosios šalies variklį (pvz., „Unity“ ar „Unreal“), tai jiems jau bus padaryta, tačiau kiekvienas, kuris atliks savo skaičiavimus nuo nulio, turės išsiaiškinti, kokius kampus reikia atlikti.

Taigi, kaip tai atrodo kodo prasme?

Norėdami tai padaryti, naudosime puikios svetainės pavyzdžius. „Braynzar Soft“. Tai puiki vieta išmokti pagrindų ir pažangesnių dalykų, jei norite patys pradėti 3D programavimą.

Šis pavyzdys yra „viskas viename“ transformacija. Sukuria atitinkamas transformacijos matricas, pagrįstas klaviatūros įvestimi, ir per vieną operaciją jas pritaiko pradiniam padėties vektoriui. Atminkite, kad tai visada daroma tam tikra tvarka (mastelis - pasukite - apverskite), nes bet koks kitas būdas visiškai sugadins rezultatą.

Šie kodų blokų tipai vadinami kalvų šešėliai ir jie gali labai skirtis, priklausomai nuo to, ką jie daro, jų dydžio ir sudėtingumo. Aukščiau pateiktas pavyzdys yra toks pat paprastas ir neginčijamas, koks yra tik šešėliai, nes jis naudoja ne visiškai programuojamą šešėlių pobūdį. Sudėtingesnis šešėlių rinkinys gali jį transformuoti 3D erdvėje, apskaičiuoti, kaip scena pasirodys jos kameroje, ir tada perkelti tuos duomenis į kitą atvaizdavimo proceso etapą. Peržiūrėsime daugiau pavyzdžių, kai pereisime kampų kirpimo seką.

Žinoma, jie gali būti naudojami kur kas daugiau, ir atminkite, kad kiekvieną kartą, kai žaidžiate 3D žaidimą, visus matomus judesius atlieka grafikos procesorius, vykdydamas kampų šešėliuose pateiktas instrukcijas.

Tačiau ne visada taip buvo. Praėjus 1990-ųjų viduriui ir pabaigai, to laikmečio vaizdo plokštės neturėjo galimybės patys valdyti kampų ir primityvių dalykų - visa tai darė tik procesorius.

Vienas iš pirmųjų procesorių, pasiūlęs specialų aparatūros pagreitį tokio tipo apdorojimui Originali „Nvidia“ „GeForce“ buvo išleista 2000 m ir ši nuosavybė buvo pažymėta Aparatūros konversija ir apšvietimas (arba trumpai aparatūros TnL). Operacijos, kurias ši aparatūra galėjo valdyti, buvo labai griežtos ir pastovios komandų atžvilgiu, tačiau jos greitai pasikeitė, kai buvo išleidžiamos naujos grafikos lustai. Šiandien nėra atskiros aparatūros, skirtos kampams apdoroti, ir tie patys vienetai tvarko viską: taškus, primityvus, taškus, tekstūras ir kt.

Kalbėti apie apšvietimas, reikia pažymėti, kad viską, ką matome, be abejo, lemia šviesa, todėl pažiūrėkime, kaip tai galima išspręsti piko metu. Norėdami tai padaryti, naudosime tai, ką jau minėjome šiame straipsnyje.

Šviesos fotoaparato variklis!

Įsivaizduokite šią sceną: aktorius stovi tamsiame kambaryje, kurį apšviečia vienas šviesos šaltinis dešinėje. Kambario viduryje yra milžiniškas plaukiojantis stambus arbatinukas. Gerai, tikriausiai mums reikės šiek tiek pagalbos tai vizualizuoti „Real Time Rendering“ svetainė, norėdami pamatyti kažką panašaus į tai:

Dabar atkreipkite dėmesį, kad šis objektas yra sujungtų tiesių trikampių rinkinys; Tai reiškia, kad kiekvieno trikampio plokštuma bus nukreipta tam tikra kryptimi. Vieni žiūri į kamerą, kiti - atvirkščiai, kiti - kreivi. Šaltinio šviesa pataiko į kiekvieną plokštumą ir atšoka tam tikru kampu.

Priklausomai nuo to, kur eina šviesa, pasikeis plokštumos spalva ir ryškumas, ir visa tai reikia apskaičiuoti ir apskaičiuoti, kad objekto spalva būtų teisinga.

Norėdami pradėti, turime žinoti, kuria kryptimi lėktuvas yra nukreiptas į tai normalus vektorius lėktuvas. Tai yra dar viena rodyklė, tačiau, skirtingai nei padėties vektorius, dydis neturi reikšmės (iš tikrųjų jie visada keičiasi po skaičiavimo, todėl jie yra tiksliai 1 vieneto ilgio) ir visada dik (stačiu kampu) plokštuma.

Kiekvieno trikampio plokštumos norma, dviejų krypčių vektorių vektoriaus sandauga (p ve q Parodyta aukščiau) suformuokite trikampio kraštus. Iš tikrųjų geriau dirbti su kiekviena viršūne, o ne su kiekvienu trikampiu, tačiau atsižvelgiant į tai, kad jo visada bus daugiau nei ankstesnio, palyginti su pastaruoju, greičiau tai padaryti tik trikampiams.

Pasiekę paviršiaus normą, galite pradėti atsižvelgti į šviesos šaltinį ir kamerą. Žibintai gali būti skirtingų tipų 3D atvaizdavime, tačiau tik šio straipsnio tikslais kryptingas žibintai, pvz. prožektorius. Kaip trikampio plokštuma, prožektorius ir kamera bus nukreipti tam tikra kryptimi, galbūt kažkas panašaus:

Šviesos vektorius ir įprastas vektorius gali būti naudojami norint rasti kampą, kuriuo šviesa patenka į paviršių (naudojant ryšį tarp taškų vektorių sandaugos ir jų matmenų sandaugos). Trikampio viršūnėse bus pateikiama papildoma informacija apie jų spalvas ir medžiagas - pastaruoju atveju paaiškinama, kas atsitinka su šviesa, patekus į paviršių.

Lygus, metalinis paviršius atspindės beveik visą įeinančią šviesą tuo kampu, iš kurio jis ateina, ir vargu ar pakeis spalvą. Priešingai, šiurkšti, nuobodi medžiaga ne taip nuspėjamai išsklaido šviesą ir subtiliai keičia spalvą. Norėdami į tai atsižvelgti, kampiniai taškai turi turėti papildomų verčių:

  • Originalios spalvos pagrindas
  • Aplinkos savybė - vertė, nustatanti, kiek „foninės“ šviesos viršūnė gali sugerti ir atspindėti
  • Difuzinė materiali savybė - dar viena vertė, tačiau šį kartą parodant, kokia yra šiurkšti smailė, tai turi įtakos tam, kiek išsklaidyta šviesa sugeria ir atspindi
  • Spekuliacinės medžiagos savybės - dvi vertės, kurios nurodo smailės „ryškumą“

Skirtingi apšvietimo modeliai naudoja įvairias matematines formules, kad sugrupuotų juos visus, o apskaičiavus gaunamas krintančios šviesos vektorius. Tai derinama su fotoaparato vektoriu, galima nustatyti bendrą trikampio išvaizdą.

Peržiūrėjome smulkesnę informaciją čia ir dėl geresnės priežasties: paimkite bet kokį 3D atvaizdavimo vadovėlį ir pamatysite visus skyrius, skirtus šiam vieninteliam procesui. Tačiau šiuolaikiniai žaidimai dažniausiai atlieka daugumą apšvietimo skaičiavimų ir medžiagų efektų pikselių skaičiavimo etape, todėl šią temą dar kartą aptarsime kitame straipsnyje.

Viskas, ką iki šiol aprėpėme, buvo padaryta naudojant kalvos šešėlius ir gali atrodyti, kad beveik nieko jie negali padaryti; Deja, yra. Kampiniai šešėliai negali sukurti naujų kampų taškų, o kiekvienas šešėlis turi dirbti su kiekviena viršūne. Būtų buvę naudinga, jei būtų būdas naudoti mažą kodą, kad būtų sukurta daugiau trikampių, būdas, kad šešėlis veiktų tarp to, ką jau turime (kad pagerintume vaizdo kokybę) ir per visą primityvųjį (kad viskas paspartėtų). iki). Su šiuolaikiniais grafikos procesoriais Gali Daryk tai!

Pone, noriu dar (trikampių)

Naujausios grafikos mikroschemos yra nepaprastai galingos, kiekvieną sekundę gali atlikti milijonus matricos-vektoriaus skaičiavimų; jie greitai negali praeiti per didelę kampų krūvą. Kita vertus, labai detalių modelių kūrimas užima daug laiko, o jei modelis bus šiek tiek nutolęs nuo scenos, visos šios papildomos detalės bus švaistomos.

Mums reikalingas būdas liepti procesoriui padalinti jį į didesnį primityvųjį rinkinį, mažesnių trikampių rinkinį, kurie visi yra sujungti originaliame didesniame, pavyzdžiui, vienas tiesus trikampis, į kurį žiūrime. Šio proceso pavadinimas: tesselation ir grafikos lustai sugebėjo tai padaryti ilgą laiką; Per tuos metus pagerėjo tai, kiek programuotojai valdo per operaciją.

Norėdami tai pamatyti, naudosime: „Unigine's Paradise“ etalono įrankį, nes jis leidžia mums pritaikyti įvairius tessellation kiekius konkretiems bandyme naudojamiems modeliams.

Norėdami pradėti, užimkime vietą etalone ir ištirkime jį be mozaikos. Būkite atsargūs, kad grindų grindiniai atrodytų per daug netikri - naudojama tekstūra yra efektyvi, bet atrodo netinkama. Taikykime scenai mozaiką; „Unigine“ variklį taiko tik tam tikroms dalims, tačiau skirtumas yra dramatiškas.

Grindys, pastato kraštai ir durys dabar atrodo daug realistiškesni. Jei mes vėl paleisime procesą, galime pamatyti, kaip tai pasiekiama, tačiau šį kartą pabrėždami primityvių kraštus (vielinio rėmo režimas):

Mes aiškiai matome, kodėl grindys atrodo taip keistai - visiškai lygios! Durys taip pat prilygsta sienoms, o pastato kraštai yra ne kas kita, kaip paprasti kubai.

„Direct3D“ programoje primityvius elementus galima suskirstyti į mažesnę dalių grupę ( apatinis skyrius) Vykdant 3 pakopų seką. Pirma, programuotojai kūno šešėliai - iš esmės šis kodas yra a geometrijos pleistras. Įsivaizduokite tai kaip žemėlapį, kuris procesoriui nurodo, kur nauji principai ir linijos pasirodys pradinio primityvo viduje.

Tada grafikos procesoriaus viduje esantis tesselator blokas pritaiko pleistrą pagal principą. Pagaliau, srities šešėlis apskaičiuoja visų naujų kampų pozicijas. Šiuos duomenis prireikus galima grąžinti į viršūnės buferį, kad apšvietimo skaičiavimus būtų galima atlikti dar kartą, tačiau šį kartą - geresniais rezultatais.

Taigi kaip tai atrodo? Paleiskime mozaikos scenos laidinę versiją:

Tiesa ta, kad mes nustatėme keliavimo lygį iki gana ekstremalaus lygio, kad padėtų paaiškinti procesą. Kaip gerai, kaip ir šiuolaikinės grafikos mikroschemos, to nenorite daryti kiekviename žaidime - pavyzdžiui, paimkite lempos stulpą prie durų.

Vaizduose, kuriuose nėra laidų be rėmelių, esate priversti apibūdinti šio atstumo skirtumą ir galite pamatyti, kad šis keliavimo lygis susibūrė į per daug trikampių, iš kurių kai kuriuos sunku pasakyti. Vis dėlto jis naudojamas tinkamai, o ši kampinio atvaizdavimo funkcija gali sukelti puikių vizualinių efektų, ypač bandant imituoti minkštus kūno susidūrimus.

Vaizduose, kuriuose nėra laidų be rėmelių, esate priversti apibūdinti šio atstumo skirtumą ir galite pamatyti, kad šis keliavimo lygis susibūrė į per daug trikampių, iš kurių kai kuriuos sunku pasakyti. Pažvelkime, kaip tai gali atrodyti kalbant apie „Direct3D“ kodą; Norėdami tai padaryti, naudosime pavyzdį iš kitos puikios svetainės. „RasterTek“.

Čia vienas žalias trikampis išklotas į daug daugiau kūdikių trikampių.

Karūnavimas atliekamas su 3 atskirais šešėliais (žr. kodo pavyzdys): viršūnių užsklanda, kad trikampis būtų paruoštas naudoti trikampį, kūno užsklanda sukurtų pataisą ir domeno šešėlis, kad būtų pateikti nauji kampai. Rezultatas yra labai paprastas, tačiau „Unigine“ pavyzdys pabrėžia galimą mozaikų naudojimo naudą ir pavojų. Vis dėlto jis naudojamas tinkamai, o ši kampinio atvaizdavimo funkcija gali sukelti puikių vizualinių efektų, ypač bandant imituoti minkštus kūno susidūrimus.

Su tuo susitvarkysi, kapitone!

Pamenate kampinius šešėlius ir visada bėgate kiekviename scenos kampe? Nesunku suprasti, kaip išpardavimas gali padaryti tai tikra problema. Ir yra daugybė vizualinių efektų, kuriuos norite išspręsti keliose to paties primityvo versijose, bet iš pradžių nenorite sukurti didelio skaičiaus; plaukai, kailis, žolė ir sprogstančios dalelės yra geri to pavyzdžiai.

Laimei, yra dar vienas šešėlis, skirtas tik tokiems dalykams - geometrijos šešėlis. Tai griežtesnė viršūnių užsklandos versija, tačiau gali būti taikoma visam principui ir kartu su tessellation suteikia programuotojams didesnę kontrolę didelėms viršūnių grupėms.

„Direct3D“, kaip ir visos šiuolaikinės grafinės API, leidžia atlikti įvairiausius skaičiavimus kampiniuose taškuose. Pabaigtus duomenis galima siųsti į kitą kūrimo proceso etapą (pikselių) arba atgal į atminties telkinį, kad procesorius galėtų jį perdirbti ar perskaityti kitais tikslais. Tai galima padaryti kaip duomenų srautą, kaip pabrėžia „Microsoft“ „Direct3D“ dokumentacija:

srauto išėjimas scena yra ypač naudinga efektams su daug dalelių visur, nes ji gali perteikti visus principus (ne atskirus kampus) į perteikimo ciklą. Tą patį triuką galima pakeisti arba dinamiškas kampinis buferis, tačiau geriau, kad įvesties buferiai būtų stabilūs, nes yra „našumo“ smūgis, jei jiems reikia „atidaryti“ norint pasikeisti.

Kampinis perteikimas yra kritinė atvaizdavimo dalis, nes jis nustato, kaip siužetas išdėstomas iš kameros perspektyvos. Šiuolaikiniai žaidimai gali panaudoti milijonus trikampių savo pasauliams kurti, ir kiekvienas iš šių kampų bus tam tikru būdu transformuotas ir sudegintas.

Tvarkyti visą šią matematiką ir duomenis gali atrodyti logistinis košmaras, tačiau grafikos procesoriai (GPU) ir API yra kuriami atsižvelgiant į visa tai - pavaizduoti sklandžiai veikiančią gamyklą, šaudančią elementą per kelis gamybos etapus ir tai darant gerai. suprasi.

Patyręs 3D žaidimų kūrimas programuotojai turi išsamų pažangiosios matematikos ir fizikos pagrindą; Jie naudoja kiekvieną prekybos gudrybę ir įrankį, kad optimizuotų operacijas ir sumažintų piko apdorojimo fazę iki kelių milisekundžių. Tai tik 3D rėmelio kūrimo pradžia - tada rastravimo žingsnis, o tada, kai jis pasiekia bet kurią vietą netoli jūsų monitoriaus, yra gana sudėtingas pikselių ir tekstūros perteikimas.

Dabar, kai pasiekėte šio straipsnio pabaigą, tikimės, kad turėsite gilesnį supratimą apie viršūnės kelionę, kai ji sukurta 3D kadrui. Mes ne viską aprėpėme (tai yra muazzam straipsnis!), ir mes esame tikri, kad turėsite daug klausimų apie vektorius, matricas, šviesas ir primityvius elementus. Nuveskite juos į kelią komentarų skiltyje ir mes padarysime viską, kad į juos visus atsakytume.

Taip pat skaitykite