Skip navigation

Áttekintés

Mi a 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 mostanában (2016. közepe) kezd megjelenni. Az Apple cég eszközein, pl. az iPhone-okon a hasonló céllal létrehozott, de zárt Metal API használható.

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, ezért 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). A VR szemüvegeket az előzőleg említett játékmotorok is támogatják.

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.