Rendering wolumetryczny

20.12.2010 - Adam Błaszkiewicz
TrudnośćTrudnośćTrudność

Gdy słyszymy o grafice komputerowej, zwykle wyobrażamy sobie rasteryzację trójkątów; niemal każdy, zapytany o to, jak komputer generuje trójwymiarowe obrazy, odpowie bez wątpienia: „Trójkątami!”. Jednak w artykule tym przedstawimy alternatywną metodę renderowania obrazów, korzystającą z danych wolumetrycznych - a konkretnie volume ray casting.

Przeanalizujemy istotne fragmenty prostego programu renderującego, za pomocą którego otrzymane zostały wszystkie obrazy z niniejszego artykułu. Gotowy program można pobrać z ramki poniżej.

Do zrozumienia artykułu może okazać się konieczna jako taka umiejętność programowania - najlepiej w C#, bo w tym właśnie języku napisany został omawiany program renderujący. Przydatna, ale nie konieczna, może być również podstawowa znajomość geometrii w trzech wymiarach oraz takich elementów algebry liniowej, jak wektory i macierze.

Do uruchomienia programu potrzebny jest .NET Framework Microsoftu. Aby samodzielnie skompilować kod źródłowy, najlepiej zaopatrzyć się dodatkowo w Visual Studio (w szczególności w Visual C#) - np. w darmową wersję Express.

Nasza metoda renderingu w skrócie

Ray casting odnosi się do śledzenia promieni od kamery w stronę renderowanej sceny. W najprostszej wersji korzystającej z danych wolumetrycznych wystarczy śledzić promień od kamery w stronę każdego piksela. Po wystrzeleniu takiego promienia sprawdzamy, w którym miejscu przecina on renderowany obiekt. W ten sposób wiemy, jak daleko od kamery jest punkt widoczny na danym pikselu - powstaje mapa głębokości. W naszym przypadku scena nie jest opisana trójwymiarową tablicą, lecz funkcją przyjmującą współrzędne punktu i zwracającą wartość boolowską mówiącą, czy w danym punkcie jest materia. Otrzymana mapa głębokości stanowi już dobrą wizualizację trójwymiarowego kształtu, małym nakładem pracy programisty.

5
Twoja ocena: Brak Ocena: 5 (1 ocena)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com