Animowana grafika 3D Opracowanie: J. Kęsik kesik@cs.pollub.pl
Podstawowe pojęcia Modelowanie i wyświetlenie struktury trójwymiarowej wymaga zajęcia się wieloma aspektami oprócz samego dodania trzeciej współrzędnej Krawędzie obiektów można tworzyć na różne sposoby (figury płaskie, powierzchnie zakrzywione ), czasem potrzeba również dodać informacje o wnętrzu obiektu Przekształcenia geometryczne w 3D są bardziej skomplikowane od ich odpowiedników w 2D (np. obrót obiektu wokół osi dowolnie umiejscowionej w 3D)
Podstawowe pojęcia Prezentacja obrazu 3D na płaszczyźnie 2D jest również bardzo skomplikowana. Konieczne jest ustalenie wielu parametrów, mówiących jak scena 3D ma być rzutowana na powierzchnię wyświetlania - widok. Konieczne jest zbudowanie transformacji układu współrzędnych 3D sceny na układ 2D widoku - rendering. Należy również określić część sceny widoczną w danym widoku, a odpowiednie algorytmy renderowania powierzchni muszą być użyte aby uzyskać realistyczny widok
Podstawowe pojęcia Pojęcie bryły i jej właściwości (wymagania) Jest podzbiorem przestrzeni R 3 Jest jednorodna topologicznie nie składa się z elementów z różnego wymiaru Skończona Domknięta Efektywna
Modelowanie obiektów Podstawowy podział w sposobie modelowania obiektów to Modelowanie pełne (solid) takie modele określają objętość reprezentowanych obiektów. Są bardziej realistyczne ale trudniejsze do zbudowania. Są najczęściej wykorzystywane przy symulacjach niewizualnych (medycyna, inżynieria, CAD)
Modelowanie obiektów Podstawowy podział w sposobie modelowania obiektów to Modelowanie krawędziowe / Reprezentacja brzegowa (shell, b-rep boundary representation) takie modele opisują tylko powierzchnię obiektów, pozostawiając pusty środek. Są prostsze do utworzenia i przetwarzania Praktycznie wszystkie modele obiektów w grach i animacjach komputerowych są modelami krawędziowymi
Voxele Jedną z metod tworzenia modeli pełnych jest wykorzystanie voxeli Voxel (volumetric pixel / volumetric picture element) jest pojedynczym elementem trójwymiarowej, równomiernej matrycy. Element ten ma pewne, określone rozmiary
Voxele Metoda voxelowa ma bardzo duże wymagania co do ilości pamięci potrzebnej do zapamiętania kształtu obiektu Np. 500x500x500 voxeli ~ 125 M Zaletą jest możliwość przypisania każdemu voxelowi dodatkowej informacji np. rodzaj materiału
Model krawędziowy nie posiada środka. Składa się wyłącznie z nieskończenie cienkiej skorupki. Skorupka ta jest tworzona na podstawie opisu modelowanych obiektów Automatycznie przez konwersję opisu matematycznego Ręcznie przez edycję skorupki przez projektanta Istnieją różne metody opisu takich modeli (skorupek)
Istnieją różne metody opisu takich modeli (skorupek) Metoda modelowania z wielokątów (polygonal modelling) Polega na przybliżaniu kształtu obiektu za pomocą zbioru wielokątów połączonych krawędziami Model ten jest opisany za pomocą Punktów w przestrzeni 3D vertexy Odcinków łączących te punkty ze sobą
Istnieją różne metody opisu takich modeli (skorupek) Metoda modelowania z wielokątów (polygonal modelling) Stworzone zbiory połączeń są nazywane siatkami. W celu usprawnienia automatycznego przetwarzania takiej siatki, wykorzystuje się tylko jeden rodzaj wielokąta w danej siatce. Najczęściej czworokąty lub trójkąty.
Siatka wielokątowa jest zbiorem krawędzi, wierzchołków i wielokątów spełniających warunki: każda krawędź jest wspólna przynajmniej dla dwóch wielokątów. Krawędź łączy dwa wierzchołki wielokąt jest zamkniętą sekwencja krawędzi Krawędź może być wspólna dla dwóch sąsiednich wielokątów, wierzchołek jest wspólny dla przynajmniej dwóch krawędzi i każda krawędź jest częścią jakiegoś wielokąta.
Istnieje kilka reprezentacji siatek wielokątów Reprezentacja bezpośrednia Każdy wielokąt jest opisany przez zbiór współrzędnych jego kolejnych wierzchołków-vertexów Np. W 1 =[(x 1, y 1, z 1 ), (x 2, y 2, z 2 ), (x 3, y 3, z 3 ), ] Między każdą parą wierzchołków jest krawędź + krawędź miedzy pierwszym i ostatnim Taki zapis jest mało optymalny przy zapisywaniu całej siatki wielokątów ze względu na powtarzanie zapisu wierzchołków
Istnieje kilka reprezentacji siatek wielokątów Reprezentacja bezpośrednia Dodatkowym problemem jest konieczność eliminacji nadmiarowych krawędzi podczas renderingu Brak tej eliminacji może spowodować zapalanie dodatkowych pikseli przy rysowaniu tej samej krawędzi w przeciwnych kierunkach
Istnieje kilka reprezentacji siatek wielokątów Reprezentacja przez listę wskaźników Do opisu wielokątów wykorzystywane są wskaźniki na wierzchołki Np. W 1 =[w 1, w 2, w 3, ] Eliminuje to problem nadmiernej alokacji pamięci ale pozostawia problem podwójnego rysowania krawędzi
Istnieje kilka reprezentacji siatek wielokątów Reprezentacja przez listę wskaźników na krawędzie Do opisu wielokątów wykorzystywane są wskaźniki na krawędzie Np. W 1 =[k 1, k 2, k 3, ] gdzie każda krawędź jest opisana za pomocą pary wierzchołków (wskaźniki) oraz pary wielokątów, do których należy. Gdy należy tylko do jednego, drugi jest oznaczany jako 0 k 1 =[w 1, w 2, W 3, W 5 ]
Istnieje kilka reprezentacji siatek wielokątów Reprezentacja przez listę wskaźników na krawędzie Eliminuje to zarówno problem nadmiernej alokacji pamięci wskaźniki na krawędzie. jak i problem podwójnego rysowania krawędzi rysowane są wszystkie krawędzie, nie wszystkie wielokąty
Istnieją różne metody opisu takich modeli (skorupek) Metoda modelowania z wielokątów (polygonal modelling) Główną zaletą stosowania takich modeli jest łatwość ich maszynowego przetwarzania i renderowania. Podstawową wadą jest stosowanie wyłącznie krawędzi prostych, zmuszające do modelowania krzywizn za pomocą dużej ilości wielokątów.
Podstawową wadą jest stosowanie wyłącznie krawędzi prostych, zmuszające do modelowania krzywizn za pomocą dużej ilości wielokątów.
Najczęściej spotykane siatki to siatki trójkątów. Wynika to z faktu, że wszystkie wierzchołki trójkąta znajdują się na jednej płaszczyźnie. Ułatwia to renderowanie obiektu. Siatki zawierają znaczne ilości trójkątów (setki tysięcy dla przeciętnego obiektu). Uzyskany model jest zawsze kompromisem między realizmem obrazu a szybkością renderowania W przypadku gier jest to szczególnie ważne gdyż rendering musi odbywać się w czasie rzeczywistym
Wstępem do tworzenia modelu siatkowego jest często model szkieletowy. Model ten zawiera tylko pewien zestaw (stosunkowo niewielki) wierzchołków i krawędzi występujących w obiekcie
Modelowanie NURBS W sytuacji potrzeby modelowania gładkich krzywizn lepszym rozwiązaniem niż siatki wielokątów jest modelowanie NURBS Źródło: http://www.creativecrash.com/tutorials/modeling-a-nurbs-head-general-concept
Modelowanie NURBS W tym modelu werteksy mogą być połączone krzywymi NURBS Metoda ta wymaga znacznie bardziej złożonych obliczeń podczas renderowania Źródło: http://www.progressivered.com/ideas/dreampool/wire
Modelowanie prymitywowe Konstruktywna geometria brył (Constructive Solid Geometry) Opiera się na wcześniejszym zdefiniowaniu niewielkiego zbioru brył podstawowych - prymitywów. Np. sfera, równoległobok, stożek Obiekt docelowy powstaje w skutek wykonywania operacji logicznych między prymitywami składającymi się na ten obiekt Wykorzystywane do budowania modeli pełnych i siatkowych
Modelowanie prymitywowe Podstawowymi zaletami są: Szybkie tworzenie obiektów (budowa z klocków ) Absolutna dokładność opisu obiektów podstawowych Prostota opisującego je języka Modelowanie to nadaje się bardziej do obiektów technicznych niż np. organicznych (gładkie krzywizny)
Modelowanie prymitywowe Renderowanie modelu prymitywowego może przebiegać bezpośrednio (np. PovRay) albo po przekształceniu w siatkę trójkątów
Modelowanie prymitywowe Podstawowymi operacjami na obiektach są: suma
Modelowanie prymitywowe Podstawowymi operacjami na obiektach są: suma
Modelowanie prymitywowe Podstawowymi operacjami na obiektach są: różnica
Modelowanie prymitywowe Podstawowymi operacjami na obiektach są: różnica
Modelowanie prymitywowe Podstawowymi operacjami na obiektach są: Część wspólna
Modelowanie prymitywowe Podstawowymi operacjami na obiektach są: Część wspólna
Modelowanie prymitywowe Zbiór prymitywów klocków może być określany na wiele sposobów. Dobierany do zadania modelowania Prymitywem może być np. dowolna półprzestrzeń W takim przypadku nie ma zastosowania ograniczenie mówiące, że wynikowym obiektem ma być bryła
Modelowanie prymitywowe Z operacjami boolowskimi na bryłach związany jest problem brzegu. Niektóre operacje wykonywane na odpowiednio ustawionych bryłach mogą w efekcie dać obiekt nie będący bryłą Np. Część wspólna brył stykających się jedną krawędzią da w rezultacie odcinek
Modelowanie prymitywowe Z operacjami boolowskimi na bryłach związany jest problem brzegu. Wykorzystuje się więc regularyzowane operacje boolowskie oznaczane *. Zapobiegają one powstawaniu innych obiektów niż bryły, dając zbiór pusty albo domykając otwarte powierzchnie
Modelowanie prymitywowe Operacje można łączyć w drzewa binarne uzyskując skomplikowane kształty w niewielu krokach Źródło: http://en.wikipedia.org/wiki/file:csg_tree.png
Modelowanie prymitywowe Do zalet modelowania prymitywowego należą: Łatwe zapewnienie że obiekt jest zamknięty ( wodoodporny ) jeżeli wszystkie prymitywy składowe są zamknięte. Łatwe testowanie kolizji. Sprawdzanie kolizji punktu z prymitywami składowymi (proste) Wyniki kolizji poddawane tym samym operacjom logicznym co prymitywy
Modelowanie obiektem 2D Przesuwanie - sweeping Jedną z metod konstrukcji modeli 3d jest przesuwanie obiektu 2D wzdłuż ścieżki (najczęściej odcinka) tworząc obiekt 3D
Modelowanie obiektem 2D Sweeping może przebiegać również wzdłuż ścieżki
Modelowanie obiektem 2D Rozszerzeniem sweepigu może być skalowanie obiektu 2D i/lub jego obrót w czasie przesuwania wzdłuż ścieżki
Modelowanie obiektem 2D Analogicznie do sweepingu można modelować przez obracanie obiektu 2D
Modelowanie przez podział (subdivision) Zasada tego modelowania polega na stworzeniu prostego, zgrubnego modelu a następnie rekurencyjnym wykonywaniu podziału jego wielokątów
Modelowanie przez podział (subdivision) Podział jest wykonywany dla każdego bieżącego vertexa, według określonego schematu (refinement scheme) Schematy te generalnie dzielą się na interpolujące i aproksymujące
Modelowanie przez podział (subdivision) Takie modelowanie jest wykorzystywane przy tworzeniu obiektów o gładkich, płynnie przechodzących powierzchniach Na każdym poziomie podziału możliwe jest edytowanie uzyskanych vertexów Wykorzystuje się również podejście odwrotne: Wskanowany obiekt jest poddawany kolejnym operacjom zmniejszania szczegółowości tworząc poziomy sybdivision
Modelowanie przez mozaikowanie (teselation) Mozaikowanie polega na wypełnieniu bez dziur pewnego obszaru za pomocą wieloboków- kafelków. Mozaikowanie wykorzystujące jednakowe wielokąty nazywane jest regularnym i tworzy obszar z trójkątów, kwadratów lub sześciokątów. Mozaikowanie półregularne wykorzystuje układy zbioru ośmiu rodzajów wielokątów, ułożonych tak, że ich rozkład w każdym z werteksów jest jednakowy
Modelowanie przez mozaikowanie (teselation) W grafice komputerowej mozaikowanie jest wykonywane maszynowo. Najbardziej powszechną wersją mozaikowania jest triangularyzacja. Jest ona wykorzystywana przy zamianie siatki drutowejedycyjnej na siatkę trójkątów wykorzystywana w renderingu. Algorytmy mozaikowania są wbudowane w środowiska DirectX i opengl
Modelowanie przez tworzenie powierzchni poziomicowych (implicit surfaces/level set) Bazuje na zasadzie przecinania obiektu powierzchnią przesuwaną w kierunku prostopadłym do niej. Powstałe figury 2D są określane mianem powierzchni poziomicowych/izopowierzchni
Modelowanie przez tworzenie powierzchni poziomicowych (implicit surfaces/level set) Model opisany izopowierzchniami ma je ułożone od najbliższej do najdalszej w stosunku do pewnego punktu obserwacji
Modelowanie przez tworzenie powierzchni poziomicowych (implicit surfaces/level set) Takie modelowanie jest stosowane dla obiektów zmieniających swój kształt w czasie, ze względu na stosunkowo łatwe podążanie za tymi zmianami Np. odkształcenie obiektu miękkiego w skutek uderzenia
Modelowanie przez kopiowanie prymitywów Zdefiniowany jest pewien zbiór prymitywów posiadających parametry. Np. ilość ścian bocznych graniastosłupa. Kopiowanie prymitywów stosuje się przy opisie modeli złożonych, trudnych do opisania za pomocą podstawowego modelowania prymitywowego. (Np. koła zębate, śruby ) a łatwych do opisania za pomocą parametrów wysokopoziomowych (Np. średnica i ilość zębów koła zębatego)
Modelowanie przez wykorzystanie mapy wysokości Wykorzystywane jest do tworzenia pofałdowanych powierzchni W tym modelowaniu wykorzystuje się rastrowy obraz monochromatyczny. Stopnie szarości pikseli odpowiadają wysokościom odległościom od pozycji bazowej powierzchni. Zakres między odległością minimalną 0 a minimalną może być określany w trakcie tworzenia powierzchni, dając możliwość manewrowania wysokościom odkształceń
Modelowanie przez wykorzystanie mapy wysokości Mapy wysokości są często wykorzystywane do tworzenia realistycznych terenów w grach. Bitmapa tworząca dany teren jest znacznie mniej skomplikowana od siatki opisującej go wymaga mniej pamięci do przechowywania