Datorgrafik belysning
Datorgrafikbelysning är samlingen av tekniker som används för att simulera ljus i datorgrafikscener . Medan belysningstekniker erbjuder flexibilitet i detaljnivån och funktionaliteten, fungerar de också på olika nivåer av beräkningsbehov och komplexitet . Grafiker kan välja mellan en mängd olika ljuskällor, modeller, skuggtekniker och effekter för att passa behoven för varje applikation.
Ljuskällor
Ljuskällor möjliggör olika sätt att introducera ljus i grafikscener.
Punkt
Punktkällor avger ljus från en enda punkt i alla riktningar, varvid ljusets intensitet minskar med avståndet. Ett exempel på en punktkälla är en fristående glödlampa.
Riktad
En riktad källa (eller avlägsen källa) belyser en scen enhetligt från en riktning. Till skillnad från en punktkälla ändras inte ljusintensiteten som produceras av en riktad källa med avståndet över scenens skala, eftersom den riktade källan behandlas som om den är extremt långt borta. Ett exempel på en riktad källa är solljus på jorden.
Strålkastare
En spotlight producerar en riktad ljuskägla . Ljuset blir mer intensivt när du kommer närmare strålkastarkällan och mitten av ljuskäglan. Ett exempel på en spotlight är en ficklampa.
Omgivande
Omgivande ljuskällor lyser upp föremål även när ingen annan ljuskälla finns. Intensiteten hos omgivande ljus är oberoende av riktning, avstånd och andra objekt, vilket innebär att effekten är helt enhetlig genom hela scenen. Denna källa säkerställer att föremål är synliga även i totalt mörker.
Ljusvarp
En ljusvarp är en teknik där ett föremål i den geometriska världen bryter ljus baserat på ljusets riktning och intensitet . Ljuset förvrängs sedan med en diffus omgivningsterm med ett intervall av färgspektrumet . Ljuset kan då reflekterande för att producera ett högre skärpedjup och brytas . Tekniken används för att skapa en unik renderingsstil och kan användas för att begränsa överexponering av objekt. Spel som Team Fortress 2 använder renderingstekniken för att skapa en tecknad cel shaded stiliserad look.
Ljusinteraktioner
Inom datorgrafik bestäms den övergripande effekten av en ljuskälla på ett objekt av kombinationen av objektets interaktioner med det som vanligtvis beskrivs av minst tre huvudkomponenter. De tre primära belysningskomponenterna (och efterföljande interaktionstyper) är diffusa, omgivande och spegelblanka.
Diffus
Diffus belysning (eller diffus reflektion ) är den direkta belysningen av ett objekt av en jämn mängd ljus som interagerar med en ljusspridande yta. Efter att ljus träffar ett objekt reflekteras det som en funktion av objektets ytegenskaper samt vinkeln för inkommande ljus. Denna interaktion är den primära bidragsgivaren till objektets ljusstyrka och utgör grunden för dess färg.
Omgivande
Eftersom omgivande ljus är riktningslöst, interagerar det enhetligt över alla ytor, med dess intensitet bestäms av styrkan hos de omgivande ljuskällorna och egenskaperna hos objektens ytmaterial, nämligen deras omgivande reflektionskoefficienter .
Speglande
Den spegelblanka belysningskomponenten ger objekt glans och höjdpunkter. Detta skiljer sig från spegeleffekter eftersom andra föremål i miljön inte är synliga i dessa reflektioner. Istället skapar spegelljus ljusa fläckar på objekt baserat på intensiteten hos den spegelbildande belysningskomponenten och ytans spegelreflektionskoefficient.
Belysningsmodeller
Belysningsmodeller används för att replikera ljuseffekter i renderade miljöer där ljuset är approximerat baserat på ljusets fysik. Utan belysningsmodeller skulle replikering av ljuseffekter som de uppstår i den naturliga världen kräva mer processorkraft än vad som är praktiskt för datorgrafik. Syftet med denna belysning eller belysningsmodell är att beräkna färgen på varje pixel eller mängden ljus som reflekteras för olika ytor i scenen. Det finns två huvudsakliga belysningsmodeller, objektorienterad belysning och global belysning. De skiljer sig åt genom att objektorienterad belysning beaktar varje objekt individuellt, medan global belysning kartlägger hur ljus interagerar mellan objekt. För närvarande utvecklar forskare globala belysningstekniker för att mer exakt replikera hur ljus interagerar med sin omgivning.
Objektorienterad belysning
Objektorienterad belysning, även känd som lokal belysning, definieras genom att kartlägga en enda ljuskälla till ett enda objekt. Denna teknik är snabb att beräkna, men är ofta en ofullständig uppskattning av hur ljus skulle bete sig i scenen i verkligheten. Det uppskattas ofta genom att summera en kombination av spegel-, diffust och omgivande ljus för ett specifikt objekt. De två dominerande lokala belysningsmodellerna är belysningsmodellerna Phong och Blinn-Phong.
Phong belysning modell
En av de vanligaste reflektionsmodellerna är Phong-modellen. Phong-modellen antar att intensiteten för varje pixel är summan av intensiteten på grund av diffus, spegel och omgivande belysning. Denna modell tar hänsyn till platsen för en betraktare för att bestämma spegelljus med hjälp av ljusvinkeln som reflekteras från ett objekt. Vinkelns cosinus tas och höjs till en effekt som bestäms av designern . Med detta kan designern bestämma hur bred highlight de vill ha på ett objekt; på grund av detta kallas kraften för glansvärdet. Glansvärdet bestäms av ytans grovhet där en spegel skulle ha ett värde på oändlighet och den grovaste ytan kan ha ett värde på ett. Denna modell skapar en mer realistisk vit höjdpunkt baserat på betraktarens perspektiv.
Blinn-Phong belysningsmodell
Blinn-Phong belysningsmodellen liknar Phong-modellen eftersom den använder spegelljus för att skapa en höjdpunkt på ett objekt baserat på dess glans. Blinn-Phong skiljer sig från Phong-belysningsmodellen, eftersom Blinn-Phong-modellen använder vektorn vinkelrätt mot objektets yta och halvvägs mellan ljuskällan och betraktaren. Denna modell används för att få exakt spegelbelysning och minskad beräkningstid. Processen tar kortare tid eftersom att hitta den reflekterade ljusvektorns riktning är en mer involverad beräkning än att beräkna den halvvägs normala vektorn . Även om detta liknar Phong-modellen, ger det olika visuella resultat, och den spegelreflekterande exponenten eller glansen kan behöva modifieras för att producera en liknande spegelreflektion.
Global belysning
Global belysning skiljer sig från lokal belysning eftersom den beräknar ljus som det skulle färdas genom hela scenen. Denna belysning är tyngre baserad på fysik och optik, med ljusstrålar som sprider sig, reflekterar och studsar på obestämd tid genom hela scenen. Det pågår fortfarande aktiv forskning om global belysning eftersom den kräver mer beräkningskraft än lokal belysning.
Ray spårning
Ljuskällor avger strålar som interagerar med olika ytor genom absorption, reflektion eller brytning. En observatör av scenen skulle se vilken ljuskälla som helst som når deras ögon; en stråle som inte når betraktaren går obemärkt förbi. Det är möjligt att simulera detta genom att låta alla ljuskällor sända ut strålar och sedan beräkna hur var och en av dem interagerar med alla objekt i scenen. Denna process är dock ineffektiv eftersom de flesta ljusstrålarna inte skulle nå observatören och skulle slösa bort behandlingstid. Strålspårning löser detta problem genom att vända processen, istället skicka synstrålar från observatören och beräkna hur de interagerar tills de når en ljuskälla. Även om detta sätt mer effektivt använder bearbetningstid och producerar en ljussimulering som nära imiterar naturligt ljus, har strålspårning fortfarande höga beräkningskostnader på grund av de höga mängderna ljus som når tittarens ögon.
Radiositet
Radiositet tar hänsyn till den energi som avges av omgivande föremål och ljuskällan. Till skillnad från ray tracing, som är beroende av observatörens position och orientering, är radiositetsbelysning oberoende av synposition. Radiosity kräver mer beräkningskraft än ray tracing, men kan vara mer användbar för scener med statisk belysning eftersom det bara skulle behöva beräknas en gång. Ytorna på en scen kan delas upp i en stor mängd lappar; varje patch utstrålar lite ljus och påverkar de andra patcharna, då måste en stor uppsättning ekvationer lösas samtidigt för att få den slutliga radiositeten för varje patch.
Fotonkartläggning
Fotonkartläggning skapades som en global belysningsalgoritm med två pass som är effektivare än strålspårning. Det är den grundläggande principen för att spåra fotoner som frigörs från en ljuskälla genom en serie steg. Den första passagen inkluderar att fotonerna frigörs från en ljuskälla och studsar av deras första objekt; denna karta över var fotonerna finns registreras sedan. Fotonkartan innehåller både position och riktning för varje foton som antingen studsar eller absorberas. Det andra passet sker med rendering där reflektionerna beräknas för olika ytor. I denna process frikopplas fotonkartan från scenens geometri, vilket innebär att återgivningen kan beräknas separat. Det är en användbar teknik eftersom den kan simulera kaustik och förbehandlingssteg behöver inte upprepas om vyn eller objekten ändras.
Polygonal skuggning
Polygonal skuggning är en del av rasteriseringsprocessen där 3D- modeller ritas som 2D -pixelbilder. Skuggning tillämpar en belysningsmodell, i kombination med 3D-modellens geometriska attribut, för att bestämma hur belysning ska representeras vid varje fragment (eller pixel) av den resulterande bilden. Polygonerna i 3D-modellen lagrar de geometriska värden som behövs för skuggningsprocessen . Den här informationen inkluderar toppositionsvärden och ytnormaler , men kan innehålla valfria data, som textur- och bumpkartor .
Platt skuggning
Flat shading är en enkel skuggningsmodell med en enhetlig applicering av ljus och färg per polygon. Färgen och normalen för en vertex används för att beräkna skuggningen av hela polygonen. Platt skuggning är billigt, eftersom belysningen för varje polygon bara behöver beräknas en gång per rendering.
Gouraud skuggning
Gouraud-skuggning är en typ av interpolerad skuggning där värdena inuti varje polygon är en blandning av dess vertexvärden. Varje vertex ges sin egen normal bestående av medelvärdet av ytnormalerna för de omgivande polygonerna. Belysningen och skuggningen vid det hörnet beräknas sedan med hjälp av medelnormalen och den valda belysningsmodellen. Denna process upprepas för alla hörn i 3D-modellen. Därefter beräknas skuggningen av kanterna mellan hörnen genom att interpolera mellan vertexvärdena. Slutligen beräknas skuggningen inuti polygonen som en interpolation av de omgivande kantvärdena. Gouraud-skuggning genererar en jämn ljuseffekt över 3D-modellens yta.
Phong skuggning
Phong-skuggning , som liknar Gouraud-skuggning, är en annan typ av interpolativ skuggning som blandar mellan vertexvärden för att skugga polygoner. Den viktigaste skillnaden mellan de två är att Phong-skuggning interpolerar vertexnormalvärdena över hela polygonen innan den beräknar dess skuggning. Detta står i kontrast till Gouraud-skuggning som interpolerar de redan skuggade vertexvärdena över hela polygonen. När Phong-skuggning har beräknat normalen för ett fragment (pixel) inuti polygonen, kan den tillämpa en belysningsmodell och skugga det fragmentet. Denna process upprepas tills varje polygon i 3D-modellen är skuggad.
Ljuseffekter
Frätande
Kaustik är en effekt av ljus som reflekteras och bryts i ett medium med krökta gränssnitt eller reflekteras från en krökt yta. De visas som band av koncentrerat ljus och ses ofta när man tittar på vatten eller glas. Kaustik kan implementeras i 3D-grafik genom att blanda en frätande texturkarta med texturkartan för de påverkade objekten. Den frätande strukturen kan antingen vara en statisk bild som är animerad för att efterlikna effekterna av frätande egenskaper, eller en realtidsberäkning av frätande egenskaper på en tom bild. Det senare är mer komplicerat och kräver bakåtstrålning för att simulera fotoner som rör sig genom 3D-renderingsmiljön. I en belysningsmodell för fotonkartläggning Monte Carlo -sampling i samband med strålspårningen för att beräkna ljusintensiteten som orsakas av kaustiken.
Reflektionskartläggning
Reflektionskartläggning (även känd som miljökartläggning) är en teknik som använder 2D-miljökartor för att skapa effekten av reflektivitet utan att använda strålspårning. Eftersom utseendet på reflekterande objekt beror på de relativa positionerna för betraktarna, objekten och de omgivande miljöerna, producerar grafiska algoritmer reflektionsvektorer för att avgöra hur objekten ska färgas baserat på dessa element. Genom att använda 2D-miljökartor snarare än helt återgivna, 3D-objekt för att representera omgivningen, kan reflektioner på objekt bestämmas med enkla, beräkningsmässigt billiga algoritmer.
Partikelsystem
Partikelsystem använder samlingar av små partiklar för att modellera kaotiska händelser med hög komplexitet, som brand, rörliga vätskor, explosioner och rörligt hår. Partiklar som utgör den komplexa animationen distribueras av en sändare, som ger varje partikel dess egenskaper, såsom hastighet, livslängd och färg. Med tiden kan dessa partiklar röra sig, ändra färg eller variera andra egenskaper, beroende på effekten. Vanligtvis innehåller partikelsystem slumpmässighet , såsom i de initiala egenskaperna som sändaren ger varje partikel, för att göra effekten realistisk och olikformig.