Strålspårning ( eng. Ray tracing ; ray tracing ) är en av metoderna för geometrisk optik - studiet av optiska system genom att spåra individuella strålars interaktion med ytor. I en snäv bemärkelse är det en teknik för att konstruera en bild av tredimensionella modeller i datorprogram, där den omvända banan för strålens utbredning spåras (från skärmen till källan).
Strålspårning i PC-spel är en lösning för att skapa realistisk belysning, reflektioner och skuggor som ger en högre nivå av realism än traditionella renderingsmetoder . Nvidias Turing var den första arkitekturen (sommaren 2018) som möjliggjorde strålspårning i realtid på GPU :n . [1] Andra tillämpningar av strålspårning är auralisering och högfrekventa teknologier.
Innan strålspårning utvecklades, bestod det nya området för 3D-datorgrafik huvudsakligen av en serie "mjukvarutrick" som efterliknar skuggningen av upplysta objekt. Strålspårning var den första algoritmen inom detta område som var fysiskt vettig.
Den första strålspårade bilden visades på en oscilloskopliknande skärm vid University of Maryland 1963. [2] Arthur Appel, Robert Goldstein och Roger Nagel, som publicerade algoritmen i slutet av 1960-talet, nämns ofta som utvecklare av strålspårningsalgoritmen . [3] [4] [5] Andra forskare som var involverade i strålspårning vid den tiden var Herb Steinberg, Marty Cohen och Eugene Troubetzkoy. [6] Strålspårning är baserad på geometrisk optik, där ljus refererar till en grupp av strålar. De tekniker som används vid strålspårning har använts mycket tidigare, bland annat av tillverkare av optiska system. Idag använder många renderare (datorprogram för att skapa bilder från 3D-scener) ray tracing, möjligen i kombination med andra processer.
Enkla former av strålspårning beräknar bara direkt belysning, det vill säga ljus som kommer direkt från ljuskällor. Strålspårning har dock expanderat kraftigt flera gånger sedan den först användes i datorgrafik . Mer avancerade former tar också hänsyn till indirekt ljus som reflekteras från andra föremål; prata sedan om den globala belysningsmetoden.
Termen Raycasting beskriver främst en förenklad form av strålspårning, men används ibland också omväxlande.
En allvarlig nackdel med bakåtspårningsmetoden är prestanda . Rasteriserings- och linjeskanningsmetoden använder datakoherens för att fördela beräkningar över pixlar. Medan strålspårningsmetoden varje gång startar processen att bestämma färgen på en pixel på nytt, med hänsyn till varje observationsstråle separat. Denna separation kommer dock med några andra fördelar, såsom möjligheten att spåra fler strålar än vad som är avsett för att eliminera konturjämnhet i vissa delar av modellen. Det styr också reflektionen av strålar och effekterna av brytning, och i allmänhet - graden av fotorealism i bilden.
För att lösa problemen med strålningsvärmeöverföring erkänns zonberäkningsmetoden som den mest effektiva, som är baserad på beräkningen av strålningsvinkelkoefficienterna för varje par yt- och volymzoner. Strålningsvinkelkoefficienten för två zoner är lika med andelen av strålningsenergin som kom från den första zonen och absorberades av den andra zonen. I många verk som ägnas åt teorin om värmeöverföring övervägs förenklade modeller av tekniska system: metallurgiska ugnar och andra högtemperaturenheter, där strålning passerar obehindrat från en zon till en annan. I verkligheten har de flesta system en komplex geometri, där strålningen är avskärmad, blockerad av hinder i systemet: arbetsstycken, själva ugnens väggar, väggarna i olika kanaler. Närvaron av hinder i strålningsvägen leder till det faktum att värmebalansekvationerna sammanställda med hjälp av lutningskoefficienterna beräknade med standardformler ger ett mycket förvrängt resultat, eftersom de inte tar hänsyn till strålningsskärmning.
I system med enkel geometri i frånvaro av skärmar beräknas lutningskoefficienterna med formel 1. I frånvaro av ett absorberande och spridande medium är lutningskoefficienten från yta till yta:
(ett)
Standardformeln för beräkning av zonvärmeöverföring tar dock inte hänsyn till förekomsten av andra ytor i systemet. Beräkning av lutningskoefficienter utan att ta hänsyn till hinder, när det mesta av strålningen är avskärmad, kan leda till fel på upp till 100 % vid bestämning av värmeflöden och zontemperaturer.
För att ta hänsyn till förekomsten av hinder i strålningsvägen kontrolleras deras synlighet för varje par elementära områden och elementära volymer. Mellan deras centra dras en stråle, som kontrolleras för korsning med alla andra ogenomskinliga ytor. För numerisk integration och med hänsyn till förekomsten av hinder, används en diskret version av formel 1, multiplicerad med synlighetsfunktionen:
(2)
Processen att bestämma avskärmningen av strålning kräver dock flera storleksordningar mer beräkningsansträngning än beräkningen av lutningar, värmeflöden och temperaturer i system med en enkel geometri utan skärmning.
I stora system med komplex geometri kan antalet yt- och volymelement nå tusentals eller tiotusentals, och antalet utsända strålar är miljoner eller miljarder. I princip är antalet strålar inte begränsat. Den direkta metoden för strålspårning, jämfört med vilken andra avancerade metoder jämförs, är att skärningspunkten för varje stråle med alla skärmar (områden) förutom de sändande och mottagande ytorna kontrolleras. Den direkta metoden är mycket arbetsintensiv, eftersom det totala antalet korsningskontroller beror på antalet ytor M som O(M^3). I en sådan situation spelar strålspårningsaccelerationsmetoder som inte kräver kontroll av skärningen av en stråle med varje skärm en avgörande roll.
Så,
1) De flesta system har hinder som blockerar strålningens passage;
2) Beräkning av vinkelkoefficienter utan att ta hänsyn till strålningsskärmning leder till fel upp till 100 % vid bestämning av temperaturer och värmeflöden;
3) Redovisning av strålningsskärmning kräver flera storleksordningar längre tid än att beräkna strålningsvärmeöverföring utan skärmning.
Begränsande volymer och hierarki av gränsande volymer
Tillämpningen av begränsningsvolymer (Bounding Volume) är som följer: varje skärm är innesluten i en begränsningsvolym av en enkel form, vars skärning av strålen tar mycket kortare tid än skärningen med den ursprungliga skärmen. Strålen skär skärmen endast om strålen skär den gränsande volymen. Således minskar antalet strålkorsningar med skärmar avsevärt. Bounding Box och Bounding Sphere används vanligtvis som bounding volymer. Ytorna på parallellepipeden väljs vanligtvis att vara parallella med koordinatplanen, orienterade parallellepipeder är mycket mindre vanliga.
Nästa viktiga steg för att påskynda strålspårning är att bygga en hierarki av begränsningsvolymer: för varje grupp av begränsningsvolymer byggs en annan begränsningsvolym på "högre nivå". Den resulterande datastrukturen kallas Bounding Volume Hierarchy (BVH) och lagras som ett binärt träd.
Alla begränsningsvolymer är försorterade efter koordinater så att var och en endast inkluderar närliggande objekt.
Det finns två huvudsakliga tillvägagångssätt för att konstruera en begränsande volymhierarki: uppifrån och ner och nerifrån och upp. När man bygger uppifrån och ner, delas den huvudsakliga begränsningsvolymen i två delar som innehåller ungefär samma antal volymer av den lägre nivån, eller i två delar med samma storlek, sedan tillämpas proceduren på varje resulterande volym. Stoppkriteriet kan vara trädets höjd eller antalet volymer inuti, där uppdelningen är olämplig. När man bygger nerifrån och upp, slås närliggande begränsningsvolymer samman tills en enda huvudbegränsande volym bildas.
Binär uppdelning av utrymme
Den binära rymdpartitioneringsmetoden använder också begränsningsvolymer som innehåller alla geometriobjekt och en hierarkisk struktur i form av ett träd, som kallas ett BSP-träd (BSP - Binary Space Partitioning - binär rymdpartitionering).
Metodegenskaper:
1) BSP-träd byggs alltid uppifrån och ner;
2) Det är inte en grupp av objekt (avgränsande volymer) som är uppdelad i två delar, utan rymden;
3) I ett BSP-träd kan en begränsningsvolym tillhöra flera volymer på en högre nivå samtidigt. I en begränsningsvolymhierarki tillhör varje volym endast en volym på högre nivå.
Accelerationen av strålspårning uppnås på grund av metoden att gå genom trädet och selektivt kontrollera skärningen av en stråle med lådor. Det finns flera sådana metoder, men den vanligaste metoden som används för både BSP-trädet och den avgränsande volymhierarkin är följande algoritm:
1) Skärningspunkten mellan strålen och huvudrutan (avgränsande volym) är markerad. Om det inte finns någon skärning, skär strålen inte någon av skärmarna.
2) Om strålen skär en ruta, är skärningen med den första underordnade rutan markerad. Om det inte finns någon skärning måste strålen skära med en annan barnlåda. Om det finns en korsning med den första underordnade rutan, bestäms en lista över underordnade rutor för den, och korsningen med dem är markerad.
3) Steg 2 upprepas tills en skärningspunkt med någon skärm hittas. Om det finns flera sådana punkter, bestäms skärningspunkten närmast strålens början.
Enhetligt och hierarkiskt rutnät
En annan metod för rumslig uppdelning är strålspårningsnätet. I denna metod är hela beräkningsdomänen innesluten i en parallellepiped, som är uppdelad längs koordinataxlarna i lika intervall, vilket bildar ett enhetligt rutnät. För varje rutnätscell definieras en lista över begränsningsvolymer som finns i den. Varje begränsningsvolym kan tillhöra flera angränsande rutnätsceller. Vissa rutnätsceller kan vara tomma.
Genom att använda ett rutnät kan du inte kontrollera skärningspunkten mellan strålen med alla gränsande volymer. Det finns olika metoder för strålspårning genom rutnätet, som skiljer sig i sättet att hitta nästa cell längs strålen, typen av beräkningar (heltal eller flyttal).
Vid strålspårning bestäms antalet celler genom vilka strålen passerar sekventiellt:
1) Om det inte finns några objekt i den aktuella cellen, bestäms numret på nästa cell.
2) Om det finns objekt i den aktuella cellen, kontrolleras var och en av dem för skärning med strålen
3) Om strålen skär ett eller flera objekt i den aktuella cellen, bestäms skärningspunkten närmast strålens början och motsvarande objekt, och spårningen av denna stråle slutar.
4) Om strålen inte skär något föremål eller om rutnätscellen är tom, upprepas processen enligt punkterna 1-3.
Om skärmarna är ojämnt fördelade i beräkningsdomänen, när man använder ett enhetligt rutnät i vissa av dess celler, kan det finnas för många skärmar, som var och en kommer att kontrolleras för korsning med en stråle, eller så kommer de flesta av cellerna att vara tomma , och strålspårning genom en lång rad tomma celler kommer att vara värdelöst slöseri med tid. I dessa fall används hierarkiska rutnät. För att bygga ett hierarkiskt rutnät måste du bygga ett stort enhetligt rutnät, sedan välja de celler som innehåller det största antalet skärmar, och inom dessa celler bygga ett enhetligt rutnät med en mindre cellstorlek.
Använda ett ojämnt volymnät
En annan metod för rumslig uppdelning är ett ojämnt volymetriskt nät, vanligtvis hexagonalt eller tetraedriskt, som delvis upprepar formen på föremålet som approximeras, till exempel utrymmet för en ugn med ämnen. På senare tid har intresset för användningen av ett sådant rutnät ökat kraftigt, men strålspårningsmetoder som använder det har varit lite utvecklade jämfört med metoder som använder andra datastrukturer.
Cellerna i ett sådant rutnät innehåller inga andra föremål inuti, och varje cell är tom (transparent för strålning), fylld med gas eller är en del av en fast kropp. Gränserna för fasta kroppar är cellansikter. Vid varje steg av strålspårning bestäms det genom vilken yta av den aktuella cellen strålen lämnar. Numret på ansiktet bestämmer numret på nästa cell genom vilken strålen passerar. Om ansiktet är gränsen för en solid kropp (ugnsvägg eller ämnen), stoppar strålspårningen.
Fördelarna med att använda ett olikformigt volymetriskt nät som en datastruktur för att påskynda strålspårning är: god kvalitet på geometriapproximation och användning av enkla skärningsalgoritmer: endast skärningar med cellytor - fyrkanter och trianglar - används. Nackdelarna med metoden är: till skillnad från ett enhetligt rutnät, om de flesta skärmarna är placerade i en liten mängd geometri, är de flesta celler som skärs av strålen tomma, och behandlingen av dessa skärningar är ineffektiv.
Perspektiv på olika strålspårningsmetoder för strålningsvärmeöverföring
Var och en av de beskrivna strålspårningsmetoderna har sina egna fördelar och nackdelar. Vissa metoder, som BSP-trädet, har blivit de mest använda inom datorgrafik, så denna metod är den mest utvecklade. Användningen av ett ändligt elementnät har ännu inte studerats tillräckligt, och möjligheterna med denna metod är troligen inte helt utnyttjade.
Man tror att det är omöjligt att peka ut en av de bästa metoderna som beskrivs ovan för någon geometri. Men inte alla dessa metoder är lämpliga för strålspårning i absorberande och spridande media. Faktum är att metoderna för binär uppdelning av rymden, hierarkin av begränsningsvolymer, enhetliga och hierarkiska maskor är fokuserade på att beräkna skärningspunkter endast med ogenomskinliga ytor i geometri. Vid spårning av strålar i ett absorberande medium är det nödvändigt att inte bara bestämma ytan som strålen kolliderade med, utan också alla transparenta ytor av nätmodellen genom vilken strålen passerade - för att beräkna längden på strålen som passerar igenom varje volymetrisk zon i modellen och bestäm andelen absorberad energi i varje zon. För denna uppgift kan de angivna metoderna för att accelerera strålspårning inte tillämpas utan betydande förfining. Däremot gör metoden att använda ett ojämnt volymetriskt nät det enkelt att hitta hela listan över ytor genom vilka strålen har passerat, och därmed bestämma andelen energi som absorberas i varje volymetrisk zon med minimalt extra arbete. I detta avseende är användningen av ett ojämnt volymetriskt nät som en datastruktur för att accelerera strålspårning i strålningsvärmeöverföringsproblem det mest lovande.
![]() | |
---|---|
I bibliografiska kataloger |