Sugáröntés

Ray casting , raycasting , a "casting rays" ( eng.  ray casting - casting rays) módszere a számítógépes grafika  egyik renderelési módszere , amelyben a jelenetet a sugarak és a renderelt felület metszéspontjának mérése alapján építik fel. A kifejezést először a számítógépes grafikában használták Scott Roth 1982-es publikációjában , aki a CSG - modellek megjelenítési módszerének leírására használta [1] .  

Bár a "ray casting" és a "ray tracing" kifejezéseket gyakran felcserélhetően használták a korai számítógépes grafikai irodalomban [ 2] , ezek a kifejezések a modern számítógépes grafikában különböznek egymástól, és különböző technikákat írnak le, amelyekben azonban sok a közös [3] .

Használat

A Raycasting a következőkre utalhat:

Koncepció

A raycasting nem egyet jelent a sugárkövetéssel (ray tracing), de felfogható a sugárkövetési algoritmus lerövidített és lényegesen gyorsabb változataként. Mindkét algoritmus „képsorrend”, és a számítógépes grafikában a 3D-s jelenetek 2D-s képernyőre történő megjelenítésére használják a néző szeméből egy fényforrásra vetített vetítősugarak segítségével . A sugáröntési módszer nem számítja ki a fénysugarak új érintőit, amelyek akkor következnek be, ha a szemből a fényforrásra vetített sugár metszi a felületet. Ez a funkció lehetetlenné teszi a visszaverődések, fénytörések és az árnyékok természetes vetületének pontos visszaadását sugársugárzással. Mindezek a tulajdonságok azonban hozzáadhatók "hamis" (megtévesztő, közelítő) technikákkal, például textúratérképek vagy más módszerek használatával. A nagy számítási sebesség a raycastot kényelmes renderelési módszerré tette a korai valós idejű 3D számítógépes játékokban.

A valódi természetben egy fényforrás fénysugarat bocsát ki , amely a térben "utazva" végül valamiféle akadályba "botlik", amely megszakítja ennek a fénysugárnak a terjedését. A fénysugarat a sugárvektor mentén mozgó fotonáramként ábrázolhatjuk . Az út bármely pontján három dolog bármilyen kombinációja megtörténhet a fénysugárral: abszorpció , visszaverődés és fénytörés . Egy felület egy vagy több irányban visszaverheti a teljes fénysugarat vagy annak csak egy részét. A felület a fénysugár egy részét is elnyelheti, ami a visszavert és/vagy megtört sugár intenzitásának elvesztését eredményezheti. Ha egy felület rendelkezik az átlátszóság tulajdonságaival , akkor megtöri magában a fénysugár egy részét, és megváltoztatja terjedési irányát, elnyelve a sugár spektrumának egy részét (vagy egészét) (és esetleg megváltoztatja a színét). Az abszorpció, fénytörés és visszaverődés miatt „elveszett” fénysugár teljes intenzitásának pontosan meg kell egyeznie ennek a sugárnak a kimenő (kezdeti) intenzitásával. A felület például nem tudja visszaverni a bejövő fénysugár 66%-át, és nem törheti meg az 50%-át, mivel ezeknek a részeknek az összege 116%, ami több, mint 100%. Ebből következik, hogy a visszavert és/vagy megtört sugaraknak más felületekhez kell "csatlakozniuk", ahol a beérkező sugarak számítási eredményei alapján ismét kiszámítják elnyelő, visszaverő és törési erejüket. A fényforrás által generált sugarak egy része az űrben terjed, és végül a látómezőre (az emberi szemre, egy fotó- vagy videokamera lencséjére stb.) esik. A fény terjedésének fizikai folyamatának szimulálása a fénysugarak számítógépes nyomon követésével túlzottan pazarló, mivel a fényforrás által generált sugarak csak elenyésző töredéke éri a látóablakot.

A rendereléshez használt első raycasting algoritmust (nem sugárkövetést) Arthur  Appel vezette be 1968-ban [5] . A sugársugárzás azon az elképzelésen alapul, hogy a megfigyelő "szeméből" sugarakat bocsátanak ki, pixelenként egy sugarat , és meg kell találni a legközelebbi objektumot, amely blokkolja ennek a sugárnak az útját. Az anyagtulajdonságok és a jelenetben lévő fény hatásának felhasználásával a sugársugárzó algoritmus meg tudja határozni egy adott objektum árnyékolását. Az egyszerűsítésben az a feltételezés, hogy ha a felületet a fény elé helyezzük, akkor a fény eléri a felületet, és nem blokkolja vagy árnyékolja. A felületi árnyékolás kiszámítása hagyományos 3D számítógépes grafikai árnyékoló algoritmusokkal történik. A raycasting egyik előnye, hogy könnyen kezelhető nem sík felületek és szilárd testek, például gömb vagy kúp. Ha egy matematikai felületen egy sugár áthaladhat, akkor az sugársugárzással renderelhető. Szilárdtest-modellezési technikákkal összetett objektumok hozhatók létre, és könnyen renderelhetők.

A számítógépes grafikai sugárzást először a Mathematical Applications Group, Inc. tudósai használták. (MAGI) Elmsfordból, New Yorkból ( angolul  Elmsford, New York ). Ezt a társaságot 1966-ban alapították, hogy radiológiai ökológiai számításokat végezzen az Egyesült Államok Védelmi Minisztériuma számára . A MAGI fejlesztőszoftvere nemcsak azt számította ki, hogy a gamma-sugarak hogyan verődnek vissza a felületekről (a sugárzás céljára történő sugárzást már az 1940-es években végezték), hanem azt is, hogyan hatolnak be és törnek meg az anyagokon belül. Dr.  Philip Mittelman vezetésével a tudósok egy módszert dolgoztak ki képek előállítására ugyanazon szoftver alapján. 1972-ben a MAGI kereskedelmi animációs stúdió lett. Raycasting segítségével 3D számítógépes animációt készített televíziós reklámokhoz, oktatófilmekhez és végül játékfilmekhez. A Tron című sci-fi film animációinak nagy részéért a MAGI a felelős . Az animáció elkészítéséhez csak a raycasting módszert használtuk. 1985-ben a MAGI csődbe ment.

Ray casting számítógépes játékokban

Wolfenstein 3D

A Wolfenstein 3D világa egyenletes magasságú falak és sima tömör padlók és mennyezetek négyzetrácsára épül. A játék szintjének megrajzolásához a látómezőből egy sugarat "lőnek ki", amely áthalad a képernyő minden pixeloszlopán. Ezután az algoritmus ellenőrzi, hogy a sugár áthaladt-e a falon, és ha igen, akkor ennek megfelelően választja ki és méretezi a fal textúráját, aszerint, hogy a sugár a szinten hol "ütközött" a fallal, és mennyit tett meg korábban. Ezután egy egydimenziós puffer jön létre, amelyben skálázott sprite-ok találhatók, amelyek ellenségeket, bónuszokat és tárgyakat képviselnek [6] .

A rácson alapuló szintek létrehozásának két célja volt: a gerenda és a fal ütközését gyorsabban lehetett megtalálni, mivel az esetleges ütközések kiszámíthatóbbá válnak, és csökken a memóriafelhasználás. A nyitott terek kezelése azonban nehézkessé válik.

Comanche sorozat

A Comanche sorozat játékaihoz a NovaLogic külön motort fejlesztett  ki Voxel   Space néven . Ez a motor egy sugarat követ a képernyő pixeleinek minden oszlopán, és minden sugarat a magasságtérkép pontjaihoz viszonyít. Ezután a motor a magasságtérkép minden elemét pixeloszloppá alakítja, meghatározza, hogy ezek közül melyek láthatók, és azokat a megfelelő színnel rendereli, amelyet a textúratérképről vesz [7] .

Jegyzetek

  1. Roth, Scott D. (1982. február), Ray Casting for Modeling Solids , Computer Graphics and Image Processing , Vol. 18: 109–144 , DOI 10.1016/0146-664X(82)90169-1  
  2. Foley, James D .; van Dam, Andries ; Feiner, Steven K. & Hughes, John F. (1995), Computer Graphis: Principles and Practice , Addison-Wesley, p. 701, ISBN 0-201-84840-6  
  3. Például Boulos, Solomon (2005), Megjegyzések a hatékony sugárkövetésről , SIGGRAPH 2005 Kurzusok : 10 , DOI 10.1145/1198555.1198749 
  4. Woop, Sven; Schmittler, Jörg és Slusallek, Philipp (2005), RPU: Programable Ray Processing Unit for Realtime Ray Tracing , Siggraph 2005 , 24:434 , DOI 10.1145/1073204.1073211  
  5. "Ray-tracing and other Rendering Approaches" Archivált 2018. november 17-én a Wayback Machine -nél (PDF), előadásjegyzetek, MSc Computer Animation and Visual Effects, Jon Macey, University of Bournemouth
  6. Wolfenstein-stílusú sugársugárzó oktatóanyag archiválva : 2015. május 19., a Wayback Machine , F. Permadi
  7. Andre LaMothe. A 3D-s játékprogramozás fekete művészete. ISBN és oldalszám szükséges.

Linkek