Voxel (i vardagligt tal voxel , engelska Voxel - bildad av orden: volumetric ( engelska vo lumetric ) och pixel ( engelska pi xel )) - ett element i en tredimensionell bild som innehåller värdet av ett rasterelement i tredimensionellt utrymme . Voxlar är analoger av tvådimensionella pixlar för tredimensionellt utrymme. Voxel-modeller används ofta för att visualisera och analysera medicinsk och vetenskaplig information.
I datorgrafik används voxels som ett alternativ till polygoner . Nybörjare anser ibland felaktigt att voxels är ersättningar för fysiska pixlar (displaymatriselement). Faktum är att en voxel vanligtvis förstås som ett virtuellt element som motsvarar en uppsättning av sex rektangulära polygoner. Allt i den virtuella världen - virtuella pixlar, polygoner och voxlar - måste projiceras på pixlarna på den fysiska skärmen:
Det vill säga, till skillnad från polygoner och pixlar är voxels en äkta 3D-sten, inte ett 2D-plan som "omger" tomt 3D-utrymme.
Modellering i virtuella pixlar finns nästan aldrig i produktionen av 3D-grafik. Nu i 3D-modellering skapas objekt ofta huvudsakligen på bara två sätt:
På grund av det faktum att polygonmodeller är tomma av naturen är det mycket svårt att modellera deras beteende i 3D-världen. Till exempel, om en programmerare behöver simulera vattnets beteende i ett 3D-piratspel, står han inför ett problem: hur simulerar man vågor på vattenytan? Hur man simulerar vattenstänk, eftersom vattnet i spelet bara är en matta vävd av blå trianglar, det finns ingenting under det här planet, men under tiden måste du visa skummande och stänkande vatten. Det vill säga, det är nödvändigt att visa separationen av delar av vatten från varandra i form av skum och stänk. Du måste introducera nya objekt i datorns minne, och att hantera dessa ytterligare objekt kräver stor skicklighet av programmeraren, inte av designern.
Om vatten modelleras genom voxlar, blir allt mycket enklare, eftersom allt vatten från havets yta till botten består av "atomer" som enkelt "separeras" från varandra på ett naturligt sätt, ur programmerarens synvinkel .
Precis som i fallet med pixlar innehåller inte voxlar själva information om deras koordinater i rymden. Deras koordinater beräknas från deras position i en tredimensionell matris - en struktur som modellerar ett tredimensionellt objekt eller ett fält med parametervärden i tredimensionellt rymd.
Detta är hur voxels skiljer sig från vektorgrafikobjekt , för vilka koordinaterna för deras referenspunkter (hörn) och andra parametrar är kända.
Voxel-modeller har en viss upplösning . Varje voxel har en specifik betydelse, till exempel en färg.
För att lagra voxelmodellen används en array med dimensionerna X×Y×Z. Okomprimerade voxelmodeller (jämfört med vektormodeller) förbrukar mycket mer minnesutrymme för bearbetning. Till exempel kommer en okomprimerad modell av 256×256×256 voxlar i storlek att ta upp 32 MB minne (256*256*256=16777216 voxel och minst 2 byte per voxel även i 256 gråskala, eftersom 256 graderingar måste läggas till dem transparens, totalt 16777216*2=33554432 byte=33554432/1024=32768 KB = 32768/1024=32 MB ), medan en vektormodell kan kräva tiotals eller till och med hundratals gånger mindre.
En av de senaste lovande teknikerna som låter dig göra effektiv detaljering av voxelobjekt är en sparse voxel octree ( sparse voxel octree ). Dess fördelar: betydande minnesbesparingar, naturlig generering av detaljnivåer (analogt med mipmap- kartor) och hög bearbetningshastighet vid raycasting .
Trädets första nod, roten, är en kub som innehåller hela objektet. Varje nod har antingen 8 underordnade kuber eller har inga underordnade. Som ett resultat av alla underindelningar erhålls ett vanligt tredimensionellt rutnät av voxels.
Doxels är voxlar som förändras över tiden. Precis som en serie bilder utgör en animation , så kan en serie voxelmodeller över tid utgöra en 3D-animation .
På grund av det faktum att en tredimensionell matris lagrar värdet av en voxel för varje enskilt element i det volymetriska rummet, är voxelmodeller väl lämpade för att modellera kontinuerliga miljöer och värdefält (till exempel fördelningen av kolmonoxid i atmosfären över en stad), medan vektormodeller är mer lämpade för att modellera diskreta objekt. .
Ett antal medicinska apparater, såsom datortomografiska skannrar , tredimensionellt ultraljud , MRI , tillhandahåller skiktad information vid skanning. När skanningen är klar byggs en voxelmodell. Voxelvärdena i detta fall återspeglar data från enheten. I datortomografi, till exempel, är det genomskinligheten av kroppen på Hounsfield-skalan , det vill säga transparensen för röntgenstrålar.
För voxelmodeller (till exempel medicinska data från en MRI- skanner ) implementeras helt enkelt utdata från valfri sektion av modellen. Detta gör det möjligt att undersöka vilken del av data som helst.
Det finns många renderingsalgoritmer för voxelmodeller . Ett av de snabbaste sätten kallas 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.
För att förbättra bildkvaliteten används mer komplexa renderingsalgoritmer: Marching cubes-algoritmen och andra. Algoritmen Marching Cubes bygger en isoyta baserad på voxeldata. Den vanliga implementeringen av algoritmen använder värdena för 8 angränsande voxlar för att rita en polygon inuti kuben som bildas av deras koordinater. Eftersom det bara finns 256 möjliga kombinationer kan du förbereda dem i förväg och använda typiska "klossar" (redan i skärmkoordinater) för att återge stora mängder data i god kvalitet.
Det finns andra algoritmer, till exempel maximal intensitetsprojektion , som väl visar positionen i tredimensionellt utrymme för de ljusaste delarna av ett tredimensionellt objekt.
3D- skärmar kan visa modeller i 3D. Sådana displayer använder olika fysiska mekanismer för att visa lysande punkter inom en viss volym. De kan till exempel bestå av många plan som bildar en bild, som är placerade ovanför varandra, eller platta paneler som skapar en tredimensionell effekt på grund av deras rotation i rymden [1] [2] .
Ibland för sådana skärmar anges deras upplösning i voxlar, till exempel 128x128x128.
Voxels har använts i datorspel under lång tid , men deras användning är begränsad på grund av hårda hårdvarukrav. Oftast i spel används voxels för att rita modeller. Ibland används voxel- landskap istället för det vanliga höjdfältet - detta gör att du kan skapa mer komplexa utrymmen med grottor och broar. En av de viktigaste egenskaperna hos voxel-landskap, interiörer och objekt är förmågan att dynamiskt förändra och förstöra dem i realtid.
Voxel- motorer hittades i spel:
![]() |
---|