Volumetrisk rendering är en teknik som används för att erhålla en platt bild ( projektion ) av en tredimensionell diskret datamängd.
En indatauppsättning hänvisar ofta till en uppsättning plattskiktsbilder erhållna från datortomografi eller magnetisk resonansavbildning . Vanligtvis är skikten lika tjocka (till exempel fotograferas ett lager per millimeter) och lika många pixlar per lager. Således är indata ett vanligt rutnät av voxels , där varje voxel motsvarar ett medelvärde (temperatur, materialdensitet) vid en given punkt av ett tredimensionellt objekt.
En volymmodell kan erhållas antingen genom att bygga ett polygonnät baserat på indata, eller genom direkt volymrendering. Marching cubes-algoritmen är standarden för att konvertera en uppsättning voxels till en polygonal modell. Direkt volymrendering är en komplex beräkningsuppgift som kan utföras på flera sätt.
Framåtvolymåtergivaren [1] [2] mappar varje voxelvärde till en färg och genomskinlighet. Detta görs med hjälp av en överföringsfunktion, som kan ges av en bitvis linjär funktion eller en värdetabell. Efter det matas det resulterande RGBA-värdet ut till rambufferten. Efter att ha ritat hela volymen erhålls en solid bild.
Volumetrisk strålkastning är tillämpningen av renderingsekvationen i praktiken och ger bilder av mycket hög kvalitet.
En snabbare metod som ger bilder av sämre kvalitet. Lee Westover kallar denna metod för att "kasta snöbollar" (eng. splatting ). Voxlar "kastas" på visningsytan i ordning efter avstånd från den, från längst till närmaste. De resulterande "snöbollsspåren" (splats) återges som skivor, vars färg och genomskinlighet varierar beroende på diametern i enlighet med normalfördelningen (Gaussisk) . Olika implementeringar kan använda olika element eller olika tilldelningar.
På grund av det faktum att volymetrisk rendering lätt kan parallelliseras, var specialiserad hårdvara för dess implementering föremål för många vetenskapliga studier, tills det ögonblick då vanliga grafikkort började klara av denna uppgift på en acceptabel tid. Den mest populära tekniken var VolumePro [3] , som var minnesintensiv och använde ooptimerad raycasting som sin underliggande algoritm.
Ofta får det volymetriska renderingssystemet ytterligare information som input som identifierar områden som inte innehåller material som behöver renderas. Denna information kan användas för att undvika att slösa tid på att göra genomskinliga områden [4] .
Denna teknik används vid rendering från det nära till det avlägsna visningsplanet. I själva verket är det ytstrålning .
Användningen av hierarkiska strukturer som octree och BSP tree kan vara användbar för både ingångskomprimering och volymetrisk raycasting optimering .
Genom att allokera ointressanta delar av utrymmet före rendering kan du avsevärt minska antalet beräkningar vid raycasting eller blandning av texturer. Beroende på vilken algoritm som används kommer beräkningskomplexiteten att minska från O(n) till O(log n) för n på varandra följande voxlar. Användningen av rymdsegmentering hjälper till att avsevärt snabba upp renderingsalgoritmer som använder raycasting.
Områden som är mindre intressanta att visa kan också renderas med lägre upplösning, vilket eliminerar behovet av att behandla onödiga indata. Om du behöver se dessa områden närmare kan du förfina dem ytterligare genom att läsa relevant information från disken och utföra ytterligare rendering, eller använda interpolation .
Visualisering av teknisk information | |
---|---|
Områden |
|
Bildtyper _ |
|
Personligheter |
|
Närliggande områden |
|