Kiire marssimine ruumis

Kiire marssimine ruumis ehk ruumi kiirtejälitus on pildipõhine ruumi visualiseerimine (ingl image-based volume rendering technique), mis arvutab 2D-pilte 3D-ruumilistest andmekogumitest (3D-skalaar väljadest). Kiire marssimist ruumis, mis töötleb ruumilisi andmeid, ei tohi segi ajada kiirte väljasaatmisega (ingl ray casting), mida kasutatakse kiirtejälituses (ingl ray tracing), mis töötleb pinna andmeid. Ruumilises variandis arvutamine ei peatu objekti pinnal, vaid liigub objekti sisse, kus võetakse lugemeid mööda kiirt. Erinevalt kiirtejälitusest ei loo kiirte marssimine sekundaarseid kiiri. Kui rakendus või kontekst on selge, siis mõned autorid kutsuvad seda kiirte viskamiseks. Kuna kiirte marssimine ei vaja täpset lahendust kiire ja objekti lõikepunkti leidmisele, on see sobilik reaalaja arvutusteks (ingl real-time computing) paljudes rakendustes, kus kiirtejälitus on liiga aeglane.

Klassifikatsioon 
Kiire ruumis marssimise meetodi saab otse tuletada visualiseerimisvõrrandist (ingl rendering equation). Sellega saab saavutada kõrge kvaliteediga visualiseeringuid. Kiire marssimist ruumis klassifitseeritakse pildipõhise ruumi visualiseermis tehnikana, kuna arvutused lähtuvad väljund pildist, mitte ruumilisest sisend andmetest, mida kasutatakse objekti põhiste visualiseermise tehnikatega.

Peamine algoritm 

Oma algelises vormis, kiire ruumis marssimise algoritm koosneb neljast sammust:
 Kiirte väljasaatmine. Iga lõpp-pildi piksli kohta visatakse kiir läbi ruumi. Selle sammu juures on kasulik arvesse võtta, et ruum on puudutatud ja ümbritsetud piiravas primitiivis, mingi lihtne geomeetriline objekt — tavaliselt risttahukas — mida kasutatakse kiire ja ruumi algus- ja lõpp-punktide leidmiseks.
 Diskreetimine. Mööda seda kiire osa, mis asub ruumi sees, valitakse võrdkaugsed diskreetimispunktid või lugemid. Üldiselt ruum ei joondu kiirega ja seega lugemid asuvad vokselite (voxel) vahel. Sellepärast on vajalik interpoleerida lugemite väärtused ümbritsevatest vokselitest (tavaliselt kasutades trilineaarset interpoleerimist).
 Varjutamine. Iga diskreetimispunkti kohta, teisendus funktsioon otsib välja materjali RGBA värvi väärtuse ja arvutatakse gradient valgustus väärtustest. Gradient väljendab ruumis olevate kohalike pindade orientatsiooni. Lugemid varjutatakse (värvitakse ja valgustatakse) võttes arvesse nende pindadade orientatsiooni ja stseeni valgusallika asukohta.
 Kompositsioon. Pärast iga diskreetimispunkti varjutamist, võetakse kõik kiire peal asuvad punktid kokku ning saadakse töödeldava piksli lõplik värvi väärtus. Kompositsioon tuletatakse otse visualiseerimis võrrandist ning on sarnane atsetaatplaatide sujutamisele õhuprojektoris. See võib töötada tagant-ettepoole, arvutus algab vaatajast kõige kaugemast lugemist ning lõppeb vaatajale kõige lähima lugemiga. See töövoog tagab, et teiste objektide või marssitava objekti poolt peidetud ruumi osad ei mõjuta piksli värvi. Eest-tahapoole järjekord võib olla arvutuslikult tõhuslikum, sest kiire energia langeb, kui ta liigub kaamerast eemale ning iga järgnev sämpel panustab tulemusele väheneb. Seega saab kasutada agressiivsemaid optimeeringuid (näiteks tõstes kaugust lugemite vahel).

Viited

Välislingid 
 Acceleration Techniques for GPU-based Volume Rendering (J. Krüger, R. Westermann, IEEE Visualization 2003)
 Volumetric Clouds
 Volumetric Rendering: Raymarching
 Creating a Volumetric Ray Marcher