Ray casting

Strålestøbning , raycasting , metoden til "casting rays" ( eng.  ray casting  - casting rays) er en af ​​gengivelsesmetoderne i computergrafik , hvor scenen bygges ud fra målinger af strålernes skæring med den renderede overflade. Udtrykket blev første gang brugt i computergrafik i en publikation fra 1982 af Scott Roth , som brugte det til at beskrive en gengivelsesmetode for CSG- modeller [1] .  

Selvom udtrykkene "ray casting" og "ray tracing" ofte blev brugt i flæng i den tidlige computergrafiklitteratur [2] , er disse udtryk adskilte i moderne computergrafik og beskriver forskellige teknikker, som dog har meget til fælles [3] .

Brug

Raycasting kan referere til:

Koncept

Raycasting er ikke synonymt med ray tracing (ray tracing), men det kan opfattes som en forkortet og væsentligt hurtigere version af ray tracing-algoritmen. Begge algoritmer er "billedrækkefølge" og bruges i computergrafik til at gengive 3D-scener på en 2D-skærm ved hjælp af projektionsstråler, der projiceres fra seerens øje til en lyskilde . Strålestøbningsmetoden beregner ikke de nye tangenter af lysstrålerne, der vil opstå, efter at den stråle, der projiceres fra øjet til lyskilden, skærer overfladen. Denne funktion gør det umuligt nøjagtigt at gengive refleksioner, brydninger og naturlig projektion af skygger ved hjælp af raycasting. Alle disse funktioner kan dog tilføjes ved hjælp af "falske" (vildledende, tilnærmede) teknikker, for eksempel ved brug af teksturkort eller andre metoder. Den høje beregningshastighed gjorde raycasting til en bekvem gengivelsesmetode i tidlige 3D-computerspil i realtid.

I den virkelige natur udsender en lyskilde en lysstråle , som, når den "rejser" gennem rummet, til sidst "snubler" over en slags barriere, der afbryder udbredelsen af ​​denne lysstråle. En lysstråle kan repræsenteres som en strøm af fotoner , der bevæger sig langs strålevektoren. På ethvert punkt langs stien kan enhver kombination af tre ting ske med en lysstråle: absorption , refleksion og brydning . En overflade kan reflektere hele lysstrålen eller kun en del af den i en eller flere retninger. Overfladen kan også absorbere en del af lysstrålen, hvilket resulterer i et tab af reflekteret og/eller brudt stråleintensitet. Hvis en overflade har egenskaberne gennemsigtighed , så bryder den en del af lysstrålen i sig selv og ændrer dens udbredelsesretning, absorberer noget (eller hele) af strålens spektrum (og skifter muligvis farve). Den samlede intensitet af lysstrålen, som blev "tabt" på grund af absorption, brydning og refleksion, skal være nøjagtigt lig med den udgående (initielle) intensitet af denne stråle. Overfladen kan f.eks. ikke reflektere 66 % af den indkommende lysstråle og bryde 50 %, da summen af ​​disse dele vil være lig med 116 %, hvilket er mere end 100 %. Det følger heraf, at de reflekterede og/eller brydte stråler skal "forenes" med andre overflader, hvor deres absorberende, reflekterende og brydningsevne igen beregnes ud fra resultaterne af beregningerne af de indkommende stråler. Nogle af de stråler, der genereres af lyskilden, forplanter sig gennem rummet og falder til sidst på synsområdet (det menneskelige øje, linsen på et foto- eller videokamera osv.). At forsøge at simulere den fysiske proces med lysudbredelse ved at spore lysstråler ved hjælp af en computer er alt for spild, da kun en lille brøkdel af strålerne genereret af lyskilden rammer udsigten.

Den første raycasting-algoritme (ikke raytracing) brugt til gengivelse blev introduceret af Arthur  Appel i 1968 [5] . Raycasting er baseret på ideen om at udsende stråler fra observatørens "øjne", en stråle pr. pixel , og finde det nærmeste objekt, der blokerer denne stråles vej. Ved hjælp af materialeegenskaber og effekten af ​​lys i scenen kan raycasting-algoritmen bestemme skyggen af ​​et givent objekt. Antagelsen i forenklingen er, at hvis overfladen placeres foran lyset, så vil lyset nå overfladen og ikke blive blokeret eller skygget. Overfladeskygge beregnes ved hjælp af traditionelle 3D-computergrafikskyggealgoritmer. En af fordelene ved raycasting er evnen til nemt at håndtere ikke-plane overflader og faste kroppe som en kugle eller en kegle. Hvis en matematisk overflade kan krydses af en stråle, så kan den gengives ved hjælp af raycasting. Komplekse objekter kan skabes ved hjælp af solid body-modelleringsteknikker og nemt gengives.

Raycasting til computergrafik blev først brugt af forskere fra Mathematical Applications Group, Inc. (MAGI) fra Elmsford, New York ( Engelsk  Elmsford, New York ). Dette firma blev dannet i 1966 for at udføre radiologiske økologiberegninger for det amerikanske forsvarsministerium . MAGIs udviklingssoftware beregnede ikke kun, hvordan gammastråler preller af overflader (strålekastning for stråling blev udført tilbage i 1940'erne), men også hvordan de trænger ind og brydes i materialer. Under ledelse af Dr.  Philip Mittelman udviklede videnskabsmænd en metode til at generere billeder baseret på den samme software. I 1972 blev MAGI et kommercielt animationsstudie. Hun har brugt raycasting til at generere 3D computeranimation til tv-reklamer, undervisningsfilm og i sidste ende spillefilm. MAGI står for det meste af animationen i sci-fi-filmen Tron . For at lave animationen blev der kun brugt raycasting-metoden. I 1985 gik MAGI konkurs.

Ray casting i computerspil

Wolfenstein 3D

Verden i Wolfenstein 3D er bygget på et firkantet gitter af vægge med ensartet højde og glatte solide gulve og lofter. For at tegne spillets niveau "affyres" en stråle fra synsfeltet, som passerer gennem hver kolonne af pixels på skærmen. Dernæst kontrollerer algoritmen, om strålen har krydset væggen, og i så fald vælger og skalerer vægteksturen i overensstemmelse hermed, efter hvor i niveauet strålen "kolliderede" med væggen, og hvor langt den havde rejst før. Dernæst oprettes en endimensionel buffer, hvori skalerede sprites er placeret, der repræsenterer fjender, bonusser og genstande [6] .

At skabe niveauer baseret på et gitter havde to mål - stråle- og vægkollisioner kunne findes hurtigere, da potentielle kollisioner bliver mere forudsigelige og hukommelsesforbruget reduceres. Håndteringen af ​​åbne arealer bliver dog vanskelig.

Comanche-serien

Til spil i Comanche-serien har NovaLogic udviklet  en separat motor kaldet Voxel   Space . Denne motor sporer en stråle gennem hver kolonne af skærmpixel og tester hver stråle mod punkter på højdekortet. Dernæst transformerer motoren hvert element i højdekortet til en kolonne af pixels, bestemmer hvilke af dem der er synlige og gengiver dem med den passende farve, som er taget fra teksturkortet [7] .

Noter

  1. Roth, Scott D. (februar 1982), 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, s. 701, ISBN 0-201-84840-6  
  3. For eksempel Boulos, Solomon (2005), Notes on efficient ray tracing , SIGGRAPH 2005 Courses : 10 , DOI 10.1145/1198555.1198749 
  4. Woop, Sven; Schmittler, Jörg & Slusallek, Philipp (2005), RPU: A Programmable Ray Processing Unit for Realtime Ray Tracing , Siggraph 2005 Vol . 24:434 , DOI 10.1145/1073204.1073211  
  5. "Ray-tracing and other Rendering Approaches" Arkiveret 17. november 2018 på Wayback Machine (PDF), forelæsningsnoter, MSc Computer Animation and Visual Effects, Jon Macey, University of Bournemouth
  6. Wolfenstein-stil strålestøbningsvejledning Arkiveret 19. maj 2015 på Wayback Machine af F. Permadi
  7. Andre LaMothe. Sort kunst af 3D-spilprogrammering. ISBN og sidenummer påkrævet.

Links