Woksel

Seria wokseli w stosie, z cieniowanym pojedynczym wokselem
Ilustracja siatki wokseli zawierającej wartości kolorów

W grafice komputerowej 3D woksel reprezentuje wartość na regularnej siatce w przestrzeni trójwymiarowej . Podobnie jak w przypadku pikseli w bitmapie 2D , same woksele zwykle nie mają swojej pozycji (tj. współrzędnych ) jawnie zakodowanej wraz z ich wartościami. Zamiast tego renderujące określają pozycję woksela na podstawie jego pozycji względem innych wokseli (tj. jego pozycji w strukturze danych , która tworzy pojedynczy obraz wolumetryczny ).

W przeciwieństwie do pikseli i wokseli, wielokąty są często jawnie reprezentowane przez współrzędne ich wierzchołków (jako punkty ). Bezpośrednią konsekwencją tej różnicy jest to, że wielokąty mogą skutecznie reprezentować proste struktury 3D z dużo pustą lub jednorodnie wypełnioną przestrzenią, podczas gdy woksele przodują w reprezentowaniu regularnie próbkowanych przestrzeni, które są niejednorodnie wypełnione.

Woksele są często wykorzystywane do wizualizacji i analizy danych medycznych i naukowych (np. systemy informacji geograficznej (GIS)). Niektóre wyświetlacze wolumetryczne używają wokseli do opisania swojej rozdzielczości . Na przykład sześcienny wyświetlacz wolumetryczny może wyświetlać 512 × 512 × 512 (czyli około 134 milionów) wokseli.

Jedna z definicji to:

Woksel jest obrazem trójwymiarowego obszaru przestrzeni ograniczonego zadanymi rozmiarami, który posiada własne współrzędne punktu węzłowego w przyjętym układzie współrzędnych, własną postać , własny parametr stanu wskazujący na przynależność do jakiegoś modelowanego obiektu oraz posiada właściwości modelowany region.

Ta definicja ma następującą zaletę. Jeśli w całym modelu zastosowano ustaloną postać woksela, znacznie łatwiej jest operować punktami węzłowymi wokseli (tj. trzema współrzędnymi tego punktu). Istnieje jednak prosta forma zapisu: indeksy elementów w zbiorze modelu (tj. współrzędne całkowite). Elementami zestawu modelu są w tym przypadku parametry stanu, wskazujące woksel przynależny do modelowanego obiektu lub jego poszczególnych części, w tym ich powierzchni.

Etymologia

Słowo woksel pochodzi analogicznie do słowa „ piksel ”, gdzie vo reprezentuje „ objętość ” (zamiast „obrazu” piksela), a el reprezentuje „element”; podobna formacja z el dla „elementu” to słowo „ texel ”. Termin hiperwoksel jest uogólnieniem terminu woksel dla przestrzeni o wyższych wymiarach .

Wykonanie

Objętość opisaną jako woksele można wizualizować albo przez bezpośrednie renderowanie objętości , albo przez ekstrakcję wielokątnych izopowierzchni, które podążają za konturami zadanych wartości progowych. Algorytm maszerujących kostek jest często używany do ekstrakcji izopowierzchni, jednak istnieją również inne metody.

Zarówno śledzenie promieni , jak i rzutowanie promieni , a także rasteryzacja , mogą być stosowane do danych wokselowych w celu uzyskania grafiki rastrowej 2D do wyświetlenia na monitorze.

Przyrostowa rasteryzacja błędów

Inna technika dla wokseli obejmuje grafikę rastrową, w której po prostu śledzi się każdy piksel wyświetlacza w scenie, śledząc składnik błędu, aby określić, kiedy wykonać krok . Typowa implementacja będzie śledzić każdy piksel wyświetlacza, zaczynając od dołu ekranu, używając tak zwanego bufora y. Po osiągnięciu woksela, który ma wyższą wartość y na wyświetlaczu, jest dodawany do bufora y, zastępując poprzednią wartość i łączony z poprzednią wartością y na ekranie, interpolując wartości kolorów. Istnieje poważna wada rasteryzacji wokseli po zastosowaniu transformacji, która powoduje poważne aliasing . Zaletą była możliwość rasteryzacji przy użyciu tanich obliczeń na liczbach całkowitych na procesorze bez akceleracji sprzętowej .

Outcast i inne gry wideo z lat 90. wykorzystywały tę technikę graficzną do tworzenia efektów, takich jak odbicia i mapowanie wypukłości , a także zwykle do renderowania terenu . Silnik graficzny Outcast był głównie połączeniem silnika raycastingu ( highmap ), używanego do renderowania krajobrazu, oraz silnika poligonowego mapującego tekstury używanego do renderowania obiektów. Sekcja „Programowanie silnika” napisów gry w podręczniku zawiera kilka podsekcji związanych z grafiką, między innymi: „Silnik krajobrazu”, „Silnik wielokąta”, „Silnik wody i cieni” oraz „Silnik efektów specjalnych”. Chociaż Outcast jest często cytowany jako prekursor technologii wokseli, co jest nieco mylące. Gra w rzeczywistości nie modeluje trójwymiarowych objętości wokseli. Zamiast tego modeluje ziemię jako powierzchnię, którą można postrzegać jako złożoną z wokseli. Ziemia jest ozdobiona obiektami, które są modelowane za pomocą wielokątów odwzorowanych teksturą. Kiedy Outcast , termin „silnik wokselowy” stosowany w grach komputerowych był powszechnie określany jako silnik do odlewania promieni (na przykład VoxelSpace silnik). Na stronie technologii silnika w witrynie internetowej gry silnik krajobrazu jest również określany jako „silnik Voxels”. Silnik jest oparty wyłącznie oprogramowaniu ; nie polega na akceleracji sprzętowej za pośrednictwem karty graficznej 3D .

John Carmack eksperymentował także z wokselami w silniku Quake III . Jednym z takich problemów, o których wspomniał Carmack, był brak kart graficznych zaprojektowanych specjalnie do takiego renderowania, które wymagały renderowania programowego.

Comanche był także pierwszą komercyjną symulacją lotu opartą na technologii wokselowej. NovaLogic wykorzystał zastrzeżony silnik Voxel Space opracowany dla firmy przez Kyle'a Freemana (napisany w całości w języku asemblera ) do tworzenia otwartych krajobrazów. Ta technika renderowania pozwoliła na uzyskanie znacznie bardziej szczegółowego i realistycznego terenu w porównaniu z symulacjami opartymi na grafice wektorowej w tamtym czasie.

Galeria

Dane

Woksel reprezentuje pojedynczą próbkę lub punkt danych na regularnie rozmieszczonej trójwymiarowej siatce. Ten punkt danych może składać się z pojedynczego fragmentu danych, takiego jak krycie, lub wielu fragmentów danych, takich jak kolor oprócz krycia. Woksel reprezentuje tylko pojedynczy punkt na tej siatce, a nie objętość; przestrzeń między każdym wokselem nie jest reprezentowana w zbiorze danych opartym na wokselach. W zależności od rodzaju danych i zamierzonego wykorzystania zbioru danych, te brakujące informacje można zrekonstruować lub przybliżyć, np. poprzez interpolację.

W tomografii komputerowej ( na zdjęciu tomografia komputerowa jamy brzusznej ) woksele są generowane przez pomnożenie pola widzenia (FOV) przez zakres skanowania .

Wartość woksela może reprezentować różne właściwości. W komputerowej wartościami są jednostki Hounsfielda , określające nieprzezroczystość materiału dla promieni rentgenowskich. Różne rodzaje wartości uzyskuje się z MRI lub USG .

Woksele mogą zawierać wiele wartości skalarnych , zasadniczo dane wektorowe (tensorowe); w przypadku ultrasonograficznych z danymi w trybie B i Dopplera , gęstość i objętościowe natężenie przepływu są rejestrowane jako oddzielne kanały danych odnoszące się do tych samych pozycji wokseli.

Podczas gdy woksele zapewniają korzyści w postaci precyzji i głębi rzeczywistości, są to zazwyczaj duże zbiory danych i są nieporęczne w zarządzaniu, biorąc pod uwagę przepustowość typowych komputerów. Jednak dzięki wydajnej kompresji i manipulacji dużymi plikami danych można włączyć interaktywną wizualizację na komputerach konsumenckich.

Inne wartości mogą być przydatne do natychmiastowego renderowania 3D , takie jak wektor normalny powierzchni i kolor .

Trwają badania nad technologiami rozszerzania wokseli na 4 i 5 wymiary danych.

Używa

Typowe zastosowania wokseli obejmują obrazowanie wolumetryczne w medycynie oraz reprezentację terenu w grach i symulacjach. Teren woksela jest używany zamiast mapy wysokości ze względu na jego zdolność do przedstawiania nawisów, jaskiń, łuków i innych elementów terenu 3D. Tych wklęsłych cech nie można przedstawić na mapie wysokości, ponieważ reprezentowana jest tylko górna „warstwa” danych, pozostawiając wszystko poniżej wypełnione (objętość, która w innym przypadku byłaby wnętrzem jaskiń lub spodem łuków lub nawisów).

Oprogramowanie do grafiki komputerowej 3D

  • 3D-Coat oferuje tryb rzeźbienia wokseli.
  • Blender (2.81+) pozwala na stworzenie efektu podobnego do woksela przez Quad Remesh (z algorytmem Quadriflow) lub Voxel Remesh (z OpenVDB ).
  • Cinema 4D (R20+) pozwala na stworzenie efektu podobnego do woksela (z OpenVDB ).
  • ZBrush wykorzystuje podobną do wokseli technologię Unified Skin dla DynaMesh i innych narzędzi. Tworzy inteligentny piksel, który nazywa się „pixol”.
  • Mega Voxels to darmowy edytor wokseli opracowany przez Go Real Games, LLC do projektowania modeli 3D przy użyciu wokseli.
  • Voxel Builder , internetowy plac zabaw typu open source oparty na Babylon.js .

Gry komputerowe

Redaktorzy

Podczas gdy naukowa wizualizacja objętości nie wymaga modyfikowania rzeczywistych danych wokseli, edytory wokseli mogą być używane do tworzenia grafiki (zwłaszcza grafiki pikselowej 3D ) i modeli do gier opartych na wokselach. Niektórzy redaktorzy koncentrują się na jednym podejściu do edycji wokseli, podczas gdy inni mieszają różne podejścia. Niektóre typowe podejścia to:

  • Oparte na plasterkach: objętość jest dzielona na plasterki w jednej lub kilku osiach, a użytkownik może edytować każdy obraz indywidualnie za pomocą narzędzi edytora rastrowego 2D . Zwykle przechowują one informacje o kolorach w wokselach.
  • Rzeźba: podobna do odpowiednika wektorowego , ale bez ograniczeń topologicznych. Zazwyczaj przechowują one informacje o gęstości w wokselach i nie zawierają informacji o kolorze.
  • Klocki konstrukcyjne: Użytkownik może dodawać i usuwać klocki, tak jak zabawki z zestawu konstrukcyjnego .

Dostępnych jest kilka edytorów wokseli, które nie są powiązane z konkretnymi grami lub silnikami. Mogą być stosowane jako alternatywa lub uzupełnienie tradycyjnego modelowania wektorów 3D.

Rozszerzenia

Uogólnieniem woksela jest toxel lub woksel czasowy. Jest to używane w przypadku 4D , na przykład sekwencji obrazów reprezentujących przestrzeń 3D wraz z innym wymiarem, takim jak czas. W ten sposób obraz mógłby zawierać 100×100×100×100 tokseli, co można by postrzegać jako serię 100 klatek obrazu o objętości 100×100×100 (odpowiednikiem obrazu 3D byłoby pokazanie przekroju 2D obrazu w każdej klatce). Chociaż przechowywanie i manipulowanie takimi danymi wymaga dużej ilości pamięci, umożliwia reprezentację i analizę czasoprzestrzennych .

Zobacz też

Linki zewnętrzne