Videomängu isomeetriline graafika

Videomängu isomeetriline graafika on graafikaliik, mida kasutatakse videomängudes ja , milles vaateväli on sellise nurga all, mis näitab keskkonnas tahke, mis või perspektiivis muidu nähtavad ei oleks, jättes sedasi objektidest kolmedimensioonilise mulje.
Vaatamata nimetusele ei ole isomeetriline arvutigraafika päris , st "x"-, "y"- ja "z"-teljed ei ole ilmtingimata teineteise suhtes 120° nurga all. Selle asemel kasutatakse erisuurusi nurki. , üks vorme, milles pikslid on suhtega 2:1, on kõige tüüpilisem. Mõisted 3/4 perspektiiv, ja pseudo-3D on mõnikord samuti kasutuses, kuigi need mõisted võivad muudes kontekstides omada teistsugust tähendust.
Isomeetrilise projektsiooni populaarsus hääbus, kui kasutusele tulid võimsamad 3D-graafikasüsteemid ning mängudes hakati panema rohkem rõhku sündmustele ja individuaalsetele tegelastele. Sellegipoolest on isomeetrilist projektsiooni kasutavad mängud viimastel aastatel taas esile kerkinud, eriti portaalis .
Ülevaade.
Eelised.
Videomängude ja pikslipõhise kunsti valdkondades on see tehnika populaarne tänu asjaolule, et -spraite ja on 3D-keskkonna simuleerimiseks kergem teha. Kuna objektid ei muuda mänguväljal liikudes enda suurust, siis ei ole arvutil vaja skaleerida ega teostada simuleerimiseks keerukaid arvutusi. See võimaldas vanematel ja mängusüsteemidel (ja hilisemal ajal ka ja kaasaskantavatel süsteemidel) kujutada kolmemõõtmelisi alasid kiiresti ja lihtsalt.
Videomängudes isomeetrilise või pseudo-isomeetrilise perspektiivi kasutamisega kaasnevad teatud eelised mängimisel. Näiteks võrrelduna puhtalt pealtvaates mänguga lisavad need kolmanda dimensiooni, avades uusi võimalusi sihtimiseks ja . Teiseks, võrrelduna või mänguga võimaldab see kergema vaevaga paigutada ja kontrollida suurt arvu tegelasi, näiteks grupp karaktereid mõnes rollimängus. Pealegi leevendab see olukordi, kus mängija tähelepanu hajutavad mängu sisemised , mis hõlmavad 3D-kaamera liigutamist. See tähendab, et mängija saab keskenduda mängule endale ning mitte kaamera liigutamisele ja pööramisele.
Viimaseks on kunstiline eelis. Kuigi need pole rangelt isomeetriliste videomängude pärusmaa, võib 2D-graafika omada täpsemat esteetilisust ja kasutada rohkem kõrgema taseme tehnoloogiaid, kui arvutiriistvaral tavaliselt olemas, isegi kui riistvara 3D-kiirendus on sisse lülitatud. Sarnaselt kasutatava -ga saab graafikat võimsal või renderdada ühe korra ning kuvada väiksema arvutusvõimsusega platvormil nagu tahvelarvutid või . See tähendab seda, et staatiline eelrenderdatud isomeetriline graafika näeb sageli välja parem kui nende reaalajas renderdatud alternatiiv. Samuti võib selle eluiga olla alternatiivide suhtes pikem. Siiski omab see eelis tänapäeval vähem tähtsust kui ajalooliselt.
Eelrenderdatud graafika üks miinuseid on see, et staatilisi 2D-pilte tuleb kasvades ideaalis uuesti renderdada, vastasel juhul hakkavad need . See ei ole alati võimalik. Nii juhtus aastal 2012, kui (1998) taasloodi nimega stuudio poolt. Uus arendaja valis lihtsa või suumimise mängude spraite uuesti renderdamata, kuna need olid mängu algsest kunstimaterjalide varamust puudu (algsed andmed hävisid uputuse käigus). Reaalajas renderdatud mängus on resolutsiooni muutmine võrdlemisi triviaalne.
Erinevused "tõelise" isomeetrilise projektsiooniga.
Videomängudes kasutatav projektsioon erineb teatud määral "tõelisest" isomeetriast olevate piirangute tõttu. Jooned "x" ja "y" suundadel ei jälgi tihedat pikslite mustrit, kui need joonistatakse horisontaaltelje suhtes nõutud 30° nurga all. Kui moodsamad arvutid kasutavad selle probleemi lahendamiseks , siis varasem arvutigraafika ei omanud piisavalt tuge värvidele ning protsessori arvutusjõudlusest jäi selle saavutamiseks väheks. Selle asemel kasutati "x"- ja "y"-telje joonte jaoks "2:1" pikslite suhet ja tulemuseks oli 35.264° ("formula_1") nurk horisontaali suhtes (ruudukujulisi piksleid mittekasutavad mängusüsteemid võisid anda teisi nurki, sealhulgas "tõelist" isomeetriat). Sellepärast on seda tüüpi projektsiooni täpsem kirjeldada kui dimeetrilise projektsiooni variatsiooni, kuna vaid kaks nurka kolmest on teineteise suhtes võrdsetel kaugustel (116.565°, 116.565°, 126.870°).
Ekraani ja maailma koordinaatide kaardistamine.
Isomeetrilisi (või pigem dimeetrilisi) projektsioone kasutavate mängude üks põhiprobleeme on 2D-tasandil toimuvate sündmuste kaardistamine sündmuse tegeliku toimumiskoha suhtes isomeetrilises ruumis, teisisõnu maailmaruumis. Klassikaline näide on selle ruudu valimine, mis on hiireklahvi vajutamisel otse kursori all. Üks meetod selle saavutamiseks on kasutada sedasama , mis maailma isomeetrilisse vaatesse arvutas ning teha sellel pöördtehe, leides ekraanil oleva punkti asukoht mängutasandil enne, kui seda teisendati. Järgmisena saab maailmas olevad "x"- ja "y"-väärtused leida ruudu laiuse ja kõrguse jagamise teel.
Leidub ka teine meetod, millega kaasneb vähem arvutusi ning mis võib pakkuda häid tulemusi, kui seda kutsutakse igal kaadril. See eeldab, et ruudukujulist lauda pöörati 45 kraadi ja siis kitsendati seda poolele oma endisest suurusest. Projektsioonile asetatakse diagrammil näidatud viisil peale virtuaalne ruudustik, millel on teljed "virtual-x" ja "virtual-y". Kui laual oleval keskmisel teljel vajutada suvalisse punkti koordinaadiga ("x", "y") = (ruudustikuLaius / 2, "y"), siis tulemuseks on ruudul sama "world-x" ja "world-y" väärtus, mis selles näites on 3 (0 indekseeritud). Valides virtuaalsel ruudustikul ruudu, mis asub ühe koha võrra paremal, muutub "world-y" ühe ruudu võrra vähem ja ühe ruudu võrra rohkem "world-x" puhul. Selline on valem, mis arvutab "world-x" väärtuse, kasutades "virtual-y" väärtust ja lisades sellele laua keskelt "virtual-x". Samamoodi arvutatakse "world-y" võttes "virtual-y" ja lahutades "virtual-x". Need mõõtmised arvutatakse keskmiselt teljelt (näidatud pildil), seega tulemusi tuleb tõlgendada poole laua pikkuse suhtes. Näiteks programmeerimiskeeles C näeks see välja nii:
float virtualTileX = screenx / virtualTileWidth;
float virtualTileY = screeny / virtualTileHeight;
// mõnel kuvasüsteemil on koordinaadistiku algpunkt all vasakul kui ruudustik ise algab ülevalt vasakult, seega me peame y ümber pöörama
float inverseTileY = numberOfTilesInY - virtualTileY;
float isoTileX = inverseTileY + (virtualTileX - numberOfTilesInX / 2);
float isoTileY = inverseTileY - (virtualTileY - numberOfTilesInY / 2);
See meetod võib alguses tunduda ebaintuitiivne, kuna originaalse isomeetrilise maailma koordinaatide asemel kasutatakse virtuaalset koordinaadistikku ning puudub üks-ühele seos virtuaalsete ja isomeetriliste ruutude vahel. Ruudustikul olev ruut võib sisaldada enam kui ühte isomeetrilist ruutu ja olenevalt sellest, kuhu vajutati, peaks see viitama eri koordinaatidele. Selle meetodi iva on selles, et virtuaalsed koordinaadid ei ole mitte täisarvud, vaid ujukomaarvud. "Virtual-x" ja "y" võivad olla ka (3.5, 3.5), mis tähendab kolmanda ruudu keskpunkti. Vasakul oleval diagrammil langeb see kolmandasse ruutu "y"-teljel. Kui "virtual-x" ja "y" liituvad arvuks 4, siis peab ka "world-x" olema 4.