Grafika trójwymiarowa
Z Wikipedii
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.
Spis treści |
[edytuj] 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).
[edytuj] 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.
[edytuj] Realizm
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.
[edytuj] 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.
[edytuj] 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 bardziej znane programy tego rodzaju to:
- Bryce
- 3D Studio Max
- Amapi 3D
- Anim8or
- Blender
- Cinema 4D
- Houdini
- LightWave
- Maya
- Poser
- POV-Ray
- Rhinoceros
- SOFTIMAGE|XSI
- Solid Edge
- Terragen
- Truespace
- Zmodeler 3d
Istnieją również specjalizowane biblioteki programistyczne służące do tworzenia interakcyjnej grafiki 3D. Najbardziej znane to OpenGL i DirectX.
[edytuj] Szczegółowe pojęcia
- modelowanie
- polygon
- SubPatches
- siatka
- mapa UV
- subdivision surfaces
- box modeling
- wierzchołek (vertex)
- teksturowanie
- rigging
- bone
- łańcuch kinematyczny
- kinematyka odwrotna (IK)
- weight map
- animowanie
- klatka kluczowa
- ścieżka
- motion control
- frame rate
- oświetlenie
- rendering
- renderer
- scanline
- radiosity
- ray tracing
- fotorealizm