Grafika 3D (grafika trójwymiarowa) – nazwa jednej z dziedzin
grafiki komputerowej
, zajmującej się głównie wizualizacją
obiektów trójwymiarowych
. Nazwa pochodzi od
angielskiego sformułowania
Three-Dimensional Graphics.
Geometria
Geometria obiektów trójwymiarowych może być reprezentowana na kilka sposobów:
-
Siatka wielokątów
– obiekt jest budowany z płaskich wielokątów (najczęściej trójkątów lub czworokątów), które mają wspólne wierzchołki i krawędzie. W ten sposób można tworzyć proste bryły, albo – jeśli siatka jest dostatecznie gęsta – dobrze przybliżać skomplikowane obiekty.
| |
-
Voxele
(woksele) – obiekt jest budowany z elementarnych sześcianów (trójwymiarowych pikseli). Tego rodzaju reprezentacja jest rozpowszechniona szczególnie w
diagnostyce medycznej
, gdzie uzyskuje się szereg przekrojów (
obrazów bitmapowych
) ciała pacjenta i na ich podstawie tworzy trójwymiarowe modele.
| |
- Opis matematyczny – obiekty są określone równaniami. Mogą to być np.
kule
, płaszczyzny, oraz szczególnie użyteczne i powszechnie stosowane powierzchnie parametryczne (płaty powierzchni), np.
powierzchnie Béziera
, Hermite'a czy
NURBS
. Istnieją programy, które swoje funkcjonowanie opierają głównie o właśnie taki sposób modelowania, zaliczyć do nich można np.
POV-Ray
.
| |
Dane trójwymiarowe mogą zostać pobrane ze świata rzeczywistego, np. za pomocą wspomnianych tomografów komputerowych,
skanerów trójwymiarowych
, ze zdjęć satelitarnych (topografia terenów) a także ze zdjęć
stereoskopowych
. W animacji komputerowej wykorzystywana jest również technika motion capture, która polega na nagrywaniu ruchu człowieka – czujniki położenia umieszczane są w kluczowych punktach ciała: na rękach, nogach, głowie, karku itp. Przeniesienie nagranych w ten sposób ruchów na sztuczne postacie nadaje ich ruchom naturalność, trudną do uzyskania klasycznymi metodami animacji.
Obiekty trójwymiarowe mogą również zostać stworzone przez człowieka w procesie
modelowania
.
Duże znaczenie mają też techniki komputerowe, które automatycznie modelują skomplikowane efekty (takie jak
dym, ogień, śnieg, deszcz
) i obiekty (chmury, góry, drzewa).
Wizualizacja
Ponieważ obecnie wszystkie urządzenia komputerowe wyświetlają dwuwymiarowe obrazy, dlatego z grafiką trójwymiarową związana jest bezpośrednio
geometria wykreślna
. Głównie w zastosowaniach inżynierskich (
CAD
) sceny trójwymiarowe przedstawione są w
rzucie prostokątnym
, natomiast w pozostałych w rzucie perspektywicznym.
Efekty wizualny rzutu perspektywicznego (
skrót perspektywiczny
) jest bardzo podobny do efektów obserwowanych w
fotografii
oraz w systemie wzrokowym człowieka. Przez analogię do aparatu fotograficznego (lub kamery), w grafice trójwymiarowej istnieje pojęcie wirtualnej kamery, która tworzy "zdjęcie" sceny istniejącej w pamięci komputera. Kamerę wirtualną charakteryzują następujące parametry: położenie, kierunek w jakim jest skierowana oraz ogniskowa – mają one swoje odbicie w matematycznym modelu kamery.
Obrazy trójwymiarowe są tworzone głównie w
technice rastrowej
,
wektorowo
przedstawia się co najwyżej obrysy, szkice itp.
Głównym problemem w obu przypadkach jest wyznaczanie powierzchni widocznych, a więc selekcja tych obiektów (lub ich części), które są widoczne w danym rzucie. Robi się to np. za pomocą
bufora Z
, sortowania względem głębokości, śledzenia promieni.
Ponadto przeważnie obserwujemy niewielki fragment sceny, a dodatkowo scena może składać się z wielkiej liczby obiektów (sięgającej nawet setek milionów), dlatego równie ważne jest określenie, które obiekty mogą być widoczne, aby przetwarzać tylko te dane, które naprawdę są potrzebne. Zobacz:
usuwanie niewidocznych powierzchni
.
Realizm
Odbicie i załamanie światła, miękkie cienie
Rozpraszanie światła pod powierzchnią obiektu (ang. subsurface scattering)
Realizm obrazów generowanych przez komputer jest w większości zastosowań bardzo ważny. Aby go uzyskać modeluje się
oświetlenie
: definiuje światła, powierzchniom obiektów trójwymiarowych nadaje kolor i fakturę, określa cienie rzucane przez obiekty, odbicia zwierciadlane,
załamanie
i rozpraszanie światła itd., itp.
Metody, które pozwalają na bardzo dokładne przedstawienie scen trójwymiarowych są również bardzo kosztowne obliczeniowo (np.
raytracing
,
radiosity
). Z kolei szybkie, przybliżone metody cieniowania obiektów, tworzenia cieni, odbić zwierciadlanych są z powodzeniem wykorzystywane w grach komputerowych. Bardzo popularną techniką uzyskiwania realizmu w scenie jest obliczanie oświetlenia na każdy piksel z osobna. Jest to operacja kosztowna obliczeniowo, jednak dzięki wspomaganiu sprzętowemu (Pixel Shader) możliwa do uzyskania animacji w czasie rzeczywistym.
W przypadku animacji ważne jest także aby ruch obiektów, był możliwie najbardziej zbliżony do zachowania przedmiotów w świecie rzeczywistym.
Sprzęt
Współczesne
karty graficzne
potrafią wyświetlać obiekty trójwymiarowe zbudowane z wielokątów, wykonując dużą część obliczeń związanych z generowaniem grafiki 3D:
- przekształcenia geometryczne (takie jak obrót, skalowanie, rzutowanie perspektywiczne)
-
cieniowanie
wielokątów
- proste modele oświetlenia
-
teksturowanie
wielokątów
- mapy nierówności (tj.
Bump Mapping
, Normal Mapping)
Współczesne
GPU
pozwalają dzięki
shaderom
oprogramować praktycznie dowolne efekty, zarówno na poziomie wierzchołków jak i pojedynczych pikseli.
Oprogramowanie
Do tworzenia grafiki 3D zostało stworzonych wiele
programów
na różne
platformy sprzętowe
i
systemy operacyjne
. Zwykle programy te dzieli się na
modelery
(tworzenie i obróbka scen trójwymiarowych) oraz
renderery
(generowanie trójwymiarowego obrazu lub animacji, wraz z nakładaniem tekstur, efektami świetlnymi, itp.).
Niektóre programy tego rodzaju to:
Istnieją również specjalizowane
biblioteki programistyczne
służące do tworzenia interakcyjnej grafiki 3D. Najbardziej znane to
OpenGL
i
DirectX
.
Szczegółowe pojęcia