HTML

gondolataim elsősorban játékfejlesztésről

Elsősorban játékfejlesztés magyarul: az enginem fejlesztése során felmerülő problémák, ötletek, tévutak stb dokumentálása, amely számomra és talán mások számára is hasznos lehet később Másodsorban gondolatok szavakban...

Kapcsolat:
aalberik 'at' gmail 'dot' com

Haletető

Galéria

Címkék

Összes

Linkblog

Naptár

április 2024
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

3D engine felépítés - map, image, texture, material

2009.04.06. 23:33 :: syam

A mai estén megpróbálok némi rendet rakni az enginem grafikai része körül vagyis megpróbálok választ kapni azokra a kérdésekre, hogy mit, hogyan, mikor, miért (nem) és miért éppen úgy rendereljek. Mindehhez szükséges tisztázni, hogy mi is szükséges a rendereléshez. Az első válasz természetesen az, hogy valamilyen (térbeli) geometria adatra (modellre) van szükség. Önmagában a modell nem tud annyira részletes lenni (vagy túl sok adat kellene ahhoz), hogy tökéletesen visszaadja azt a látványt, amelyről az készült. A megfelelő hatás eléréséhez textúrát feszítünk a modellre vagyis egy megadott kép egy részletét ráillesztjük rendereléskor egy háromszögre. Némi fizikával megfűszerezve a témát, használhatjuk itt az albedó kifejezést (adott felület adott hullámhosszon vett elektromágneses hullám visszaverő képessége - vagyis milyen színűnek látjuk...): a felhasznált kép adott pontossággal tárolja egy felület albedóját.

Tehát kiindulási pontnak tekintsünk egy képet (image), amelyet egy pixel tömbként tömörítve vagy tömörítés nélkül tárolunk. Ezt a többnyire 2d-s pixel tömböt fogja a videokártya felhasználni a renderelés során textúraként, amelynek elemeit már texeleknek hívjuk. Szerintem azonban létezik egy köztes, "elméleti" állapota a textúrának, amelyet mapnek nevezünk. Ez már utal az adott textúra felhasználási módjára (maga a textúra ritkán utal a felhasználási módjára) ill. magára a renderelési technikára vagyis megadott funkciónak megfelelő adatokat tárol, megfelelő formában. Egy adott felületnek megfelelő map csoportot talán hívhatunk materialnak, mivel ugyanazt a felületet írják le, de eltérő szempontokból. Azonban azt, hogy mik ezek a szempontok a renderelési technika befolyásolja tehát célszerűbbnek látom a mapeket a renderelés alapján materialokba rendezni és utána azokat példányosítani felületek alapján.

Azt hiszem a legtöbb renderelési típushoz szükséges a felület albedóját leíró map. Hogy hogyan tároljuk az egy külön történet itt csak annyit érdemes megemlíteni, hogy manapság 3 csatornán (RGB) tároljuk. Talán ennek a mapnek létezik a legtöbb neve: a leggyakoribb a diffuse map, de találkozhatunk vele color mapként, diffuse albedo mapként és ritkán, de helytelenül decal mapként is.

Viszonylag egyszerű a felhasználása a mask mapnek közismertebb nevén alpha masknak. Ez egy olyan képnek felel meg, amelynek pixelei egy logikai változót jelentenek azaz eldönti, hogy azt a renderelés eldobja vagy sem. Elméletileg elég egy bit egy pixel tárolásához. Az alpha mask elnevezés onnan ered, hogy nagyon sokszor egy textúra alfa csatornájába töltik fel ezt a mapet (főleg hatékonysági szempontok miatt mivel a fenn említett eldobás így alpha testtel könnyen elvégezhető).

A mask mappel némileg rokonságban áll a transparency map ill. annak ellentéte az opacity map. Az előbbi egy felület átlátszóságát, az utóbbi a felülelet átlátszatlanságát tárolja intenzitás értékként.

Az egyszerűen felhasználható mapek közé tartozik még az emissive map más néven glow map. A felület színét módosítja oly módon, hogy hozzáadódva a diffuse maphez fénykibocsájtó tulajdonságot kölcsönöz neki. Általában RGB csatornákban tárolják, ritkán egy egycsatornás intenzitás értékként.

Létezik még ambient map, amely általában a modell elkészültekor készül el többnyire egy raytracer algoritmussal.

Most következzenek azok a mapek, amelyek felhasználása már bonyolultabb és nem ennyire egyértelmű. Elsőként említsük meg a height mapet félrevezető nevén bump mapet. Ez a felület síkjához mért magasság különbségeket tárolja intenzitásként. Használata sokrétű: készülhet belőle normal map, de felhasználható közvetlenül rendereléshez is.

A normal map a nevéből adódóan normál vektorokat tartalmaz, amelyek a felület normálvektorához képest relatívak vagy abszolút értelemben vett, a világban mért normálokat tárolhat. Relatív vektorok esetén már elegendő két csatorna is ehhez ellenkező esetben mindenképp három csatorna szükséges.

A specular map a felület fényvisszaverő képességét tárolja általában egy csatornán, de specular color mapként RGB csatornákon is tárolhat színt. Ebbe a témakörbe tartozik még a glossiness map, amely a felület simaságát veszi figyelembe bár én nem látom különösebb jelentőségét.

Szólj hozzá!

Címkék: map image pixel texture albedo texel

A bejegyzés trackback címe:

https://sakura7.blog.hu/api/trackback/id/tr41050787

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása