Vivid raytracer
Egyebek
Fotózás

Bump mapping, avagy hullámzó felületek

Az előző részben végigvettük az összes anyagtulajdonságot, most pedig megnézzük a további lehetőségeket. A valóságban soha sem tökéletesen sima egy felület, mindíg érdes valamennyire. Ezt a vivid bump mapping-al tudja kezelni, vagyis különböző hullámzásokat, deformációkat adhatunk a felületnek. Ezek a változások csak látszólagosak, tehát a felület ettől még egyenletes marad (pont úgy mint a patch alakzat esetében), ezek csak "optikai trükkök". Bármilyen testnek adhatunk bump tulajdonságot, legyen az sík, gömb, vagy henger.

A bump mapping tulajdonságokat a surface-n belül adjuk meg egy külön blokkban. Valahogy így:

surface {
      diffuse 1 .5 .2
         bump {
            ...
        } }

Fontos megemlítenem, hogy akár több bump is megadható egy felületen belül! Két osztály létezik: wave (hullám) és turbulence (örvénylő).


Wave - szabályos hullámzás

A wave szabályos hullámokat hoz létre, pont olyanokat, mint egy vízbe dobott kavics. A szintaxis a következő:

surface {
      diffuse .13 .84 .68
      bump {
         wave {
            center 1 2 3
            wavelength 2.0
            amplitude 0.2
            damping 0.9
            phase 0.0 } } }

Az utasítást a bump-al nyitjuk meg, majd megadjuk a típusát, ami jelen esetben wave, vagyis szabályos hullám. És most nézzük sorban a paramétereket:

Center: A hullám középpontja. Bővebb magyarázatra azt hiszem nem is szorul.
Wavelenght: Hullámhossz, vagyis ez határozza meg egy hullámperiódus hosszát.
Amplitude: Ez adja meg az egyes hullámok magasságát (amplitúdóját).
Damping: Csillapítás, vagyis periódusonként mennyivel gyengüljön a hullám.
Phase: A hullám kezdőfázisa, értéke 0 és 1 között lehet.

A végeredmény pedig így néz ki:

Wave

Állat, nem? :-) Akkor nézzük kicsit részletesebben a lényeges paramétereket. Elsőnek vizsgáljuk meg a wavelenght hatását. A következő 3 képeken ugyanazokat a paramétereket adtam meg, egyedül a wavelenght értéke változott.

Wavelenght 0.2 Wavelenght 1 Wavelenght 4

Következő áldozatunk az amplitude, vagyis a hullámok magassága. A lenti három képen csak ez az érték különbözik:

Amplitude 0.1 Amplitude 1 Amplitude 5

Szintén említést érdemel a damping, ami a hullámzás amplitúdócsökkenését hivatott szabályozni. Gyakorlatilag egy szorzószám, amivel minden periódusban megszorzódik az amplitude értéke.

Damping 0.1 Damping 0.5 Damping 1

Végezetül nézzük meg a phase hatását, ez határozza meg a kezdőfázist.

Phase 0 Phase 0.25 Phase 0.5

Röviden ennyi tudnivaló van a szabályos hullámzással kapcsolatban. Ami még említést érdemel, az a többszörös hullámzás, vagyis amikor egy felületen belül több hullámot is indítunk. A helyesírása így mutat:

surface {
      diffuse .13 .84 .68
      bump {
         wave {
            center 2 4 3
            wavelength 2.0
            amplitude 0.2
            damping 0.9
            phase 0.2 }
         wave {
            center 1 2 3
            wavelength 2.0
            amplitude 0.2
            damping 0.9
            phase 0.0 } } }

És például ilyen eredményt tud produkálni:

Wave


Turbulence - szabálytalan hullámzás

Aki tovább olvas az egyből látni fogja, hogy már a címben hazudok, ugyanis a turbulence sem szabálytalan, csupán "kevésbé szabályos" mint a wave. Az egyik fontos különbség, hogy ennek nincs középpontja, és az egész felületre érvényes. Először megnézzük a helyesírását, majd elszórakozunk vele:

surface {
      diffuse .13 .84 .68
      bump {
         turbulence {
            scale 1 1 1
            offset 0 0 0
            amplitude 0.2
            terms 4 } } }

Az eredménye pedig a lenti képen látható. Nem egy nagy durranás:

Turbulence

Viszont ha csinálunk belőle vizet, akkor már mindjárt jobban néz ki:

Turbulence water

Vagy különböző üveg felületekre alkalmazzuk...

Turbulence variations

De ne szaladjunk ennyire előre, nézzük részleteiben. Az utasítást a turbulence paranccsal nyitjuk, majd ezen belül jönnek a paraméterek. Ezek jelentése:

scale: Hullámzás léptéke a három térbeli irányban.
offset: Egy eltolási érték, hatalmas szerepe nincs a megjelenésben.
amplitude: Hullámok magassága.
term: Fraktálszerűség. Minél magasabb ez az érték, annál "összetettebb" hullámzás jön létre.

Nézzük is meg, hogy hogyan néznek ki ezek, a változatosság kedvéért gömbfelületeken mutatom be az egyes tulajdonságokat...

A következő képen a scale értékét változtattam csak, ami ezt eredményezte (bővebb magyarázat szerintem nem is kell hozzá):

Turbulence scale

Az amplitude hatását kivételesen üveggömbökön mutatnám be, mert így látványosabb:

Turbulence amplitude

A lenti ábrán pedig a terms értékét változtattam csak. Elsőre nem túl szembetűnő a különbség, de ha jobban megnézzük, balról az első gömbön a terms értéke 1, ami szinte egész szabályos felületet eredményezett, a többi érték pedig sorban: 5, 10, 20. Látható, hogy az utolsó gömbön már egész bonyolult struktúrát vett fel a hullámzás. Ez folyadékoknál különösen realisztikus eredményt tud adni:

Turbulence terms

A végére pedig csináltam egy több turbulence paranccsal megtűzdelt vízfelületet:

Turbulence water


Tovább a textúrázáshoz...»
foot