Skip navigation

Áttekintés

3D számítógépes grafika: Mesterséges térbeli világ síkra vetítve

Térbeli, 3D világban élünk, a képi információközlés döntő többsége mégis síkbeli, 2D-s. Fotókat, videókat készítünk, osztunk meg. Nyomtatott formában, elektronikusan a képernyőn síkbeli információt látunk. (A manapság divatos térbeli megjelenítés is két síkbeli képből áll össze, de erről később.) A 3D grafikus modellezés ezt próbálja megvalósítani mesterséges színterek esetén. A 3D színtérben tárgyakat helyezhetünk el, amelyek alakkal (geometriával) és anyagjellemzőkkel (milyen a mintázata, hogyan reagál különféle fénytípusokra) bírnak. Egy vagy több, térben elhelyezett fényforrás biztosítja a tárgyak láthatóságát, a tárgyak színe a fény és az anyag kölcsönhatásaként áll elő. Mesterséges kamerákat helyezhetünk el a színtérben, amelyek a 3D színtér 2D síkra (képre) történő leképezését biztosítják. A színtérben található tárgyak mozoghatnak, így az eredmény időben változó lehet. Interakció biztosításával a felhasználó is befolyásolhatja az eredményt.

A számítógépes grafika több évtizedes múltra tekint vissza, az alapvető algoritmusok matematikai háttere kidolgozott.

A modellezés alapeleme, hogy a tárgyakat általában a felszínhálójuk modelljével reprezentáljuk A felszínhálót síkidomokból, jellemzően háromszögekből építjük fel. Sík lapokkal határolt felszínek esetén ez nem okoz problémát, de íves felszínek esetén csak közelítést érhetünk el. Minél kisebb méretű síkidomokat használunk, a közelítés annál pontosabb, viszont a reprezentációt leíró adathalmaz mérete növekszik.

A számítógépes grafika gyakorlati alkalmazásának nagy lökést adott a grafikus feldolgozó kártyák, GPU-k nagy ütemű fejlődése. Egy sok millió háromszögből álló, mozgó színtér esetén minden képkockára, vagyis 1 másodperc alatt akár 30-60 darabszor ki kell számítani a háromszögeket leíró pontok új helyét, a megvilágítási egyenleteket, valamint elő kell állítani a 2D vetített képet. Ezek egyszerű, de nagy tömegű számításokat igényelnek. A klasszikus CPU-k ezt egyenként kell végrehajtsák, míg a GPU lehetőséget biztosít a párhuzamosításra.

Főbb alkalmazási területek

Számítógépes grafikával napi szinten találkozunk, néhány hagyományos terület ezek közül:

  • Játékprogramok.
  • Számítógéppel támogatott tervezés.
  • Tudományos vizualizáció (pl. csillagászat).
  • Szimulátorok, tréning.
  • Filmes trükkök, reklámok, animációs filmek.
  • Virtuális valóság alkalmazások.

Függvénykönyvtárak

Asztali PC-s környezetben a két legismertebb programozói függvénykönyvtár az OpenGL és a Microsoft Direct3D csomagja. Tudásban nagyjából megegyeznek, a programozási környezetük más. Az OpenGL egy nyílt szabvány, amely szabadon implementálható, ennek köszönhetően számos rendszeren elérhető. A Direct3D Windows specifikus.

Webes környezetben is felmerült az igény 3D grafika megjelenítésére. A kezdeti próbálkozások hatására az OpenGL ES 2.0 szabványt adoptálták, ami WebGL néven érhető el. Manapság az elterjedtebb böngészők natívan támogatják asztali gépes, okostelefonos, táblagépes verziók esetén is. A WebGL segítségével komplex modellezési feladatokat is végrehajthatunk, viszont viszonylag sok háttértudást, programkódot igényel még az egyszerűbb programok elkészítése is.

A Számítógépes grafika gyakorlatokon a WebGL-re épülő, Three.js nevű JavaScript függvénykönyvtárat fogjuk használni. Az objektumai segítségével számos problémát egyszerűen és átláthatóan oldhatunk meg, de hozzáférést biztosít a fejlettebb lehetőségekhez is.

Játékprogramok írásához sokszor a legegyszerűbb megközelítés, ha egy játékmotort használunk. Ezek általában ingyenesen kipróbálhatók, kommersz alkalmazások készítése esetén kell fizetnünk a használatukért. A két legismertebb ilyen motor a Unity és az Unreal.

Az OpenGL előnye, hogy egy egységes API-t biztosít, elrejtve a grafikus hardvert. Ez viszont hátrány is lehet, ha fontos a hardver maximális kihasználása. Ilyen például a profi (konzol) játékprogramok esete, illetve okostelefonok esetén a minél hatékonyabb, és így energiatakarékosabb felhasználó felület megvalósítás. Egy ilyen hatékony, nyílt szabvány a Vulkan, ami asztali PC-ken és Android rendszerű okostelefonokon is kezd elterjedni. A Vulkan támogatást a GPU-nak is biztosítania kell, ami a jelenlegi piacon egyre több modell esetén már teljesül is. Az Apple cég eszközein, pl. az iPhone-okon a hasonló céllal létrehozott, de zárt Metal API használható.

Akár konzolos, asztali gépes, mobilos vagy webes 3D grafikát tekintünk, a jövő a Vulkan és a Metal által jelzett irányba mutat. Az iparági szereplők jelenleg keresik az utat egy egységesített webes API felé. Érdemes elolvasni a WebKit böngészőmotor fejlesztőcsapatának első ilyen, 2017. februárjában publikált API javaslatát: Next-generation 3D Graphics on the Web. Valószínűleg még évekbe fog telni, hogy a WebGL-hez hasonló stabilitást és támogatást elérjen az új, WebGPU nevű szabvány. A tervek szerint a segítségével általános számítási feladatokra is jóval egyszerűbben lehet majd a GPU-t használni, ami a WebGL-en keresztül nagyon körülményes (Access modern GPU features with WebGPU). Folyamatban van a Three.js függvénykönyvtár WebGPU-alapú megjelenítésének fejlesztése is (Unleashing the Power of WebGPU with Three.js for Cutting-Edge 3D Web Development).

A manapság divatos virtuális valóság (VR) alkalmazások esetén egy speciális szemüveg biztosítja, hogy két, kis mértékben különböző kameraállásból létrehozott 2D vetített kép a bal és jobb retinánkra kerüljön, a 3D érzetet ebből az emberi agy állítja elő. Fontos az emberi fejmozgás szenzorokkal mért minél gyorsabb követése, amihez nagy számítási kapacitás és igen gyors adatátvitel kell. A kis méretű, pl. mobil eszközök (pl. Google Cardboard, DayDream, Samsung Gear VR) erre nem igazán képesek és 2020-ban meg is szűntek. A profibb rendszerek jelenleg erős grafikus kártyával felszerelt PC-t és vezetékes adat összeköttetést igényelnek (Oculus Rift, HTC Vive). Az okostelefonos irány helyére az önálló feldolgozási egységet tartalmazó szemüvegek lépnek, mint például az Oculus Quest sorozat termékei.  A VR szemüvegeket az előzőleg említett játékmotorok is támogatják.

Térbeli modellalkotás

A 3D grafikai modellezésnél használt összetettebb tárgyak alakját (a felszínhálót), a mintaráfeszítést, az animálást általában nem manuálisan végezzük, hanem célszoftverrel. A félév során a Blender nevű ingyenes, multiplatform animációs programot fogjuk ilyen célra használni, lehetőségeinek csak egy nagyon szűk töredékét megismerve.