Modelowanie wielokątne - Polygonal modeling

W 3D grafika komputerowa , modelowanie wielokątny jest podejście do modelowania obiektów poprzez reprezentowanie lub zbliżenia ich powierzchni za pomocą siatki wielokątów . Modelowanie wielokątne doskonale nadaje się do renderowania linii skanowania i dlatego jest metodą z wyboru w przypadku grafiki komputerowej w czasie rzeczywistym . Alternatywne metody przedstawiania obiektów 3D obejmują powierzchnie NURBS, powierzchnie podpodziałów i reprezentacje oparte na równaniach używane w śledzeniu promieni .

Teoria geometryczna i wielokąty

Podstawowym obiektem używanym w modelowaniu siatki jest wierzchołek , punkt w przestrzeni trójwymiarowej. Dwa wierzchołki połączone linią prostą stają się krawędzią . Trzy wierzchołki połączone ze sobą trzema krawędziami definiują trójkąt , który jest najprostszym wielokątem w przestrzeni euklidesowej . Bardziej złożone wielokąty można tworzyć z wielu trójkątów lub jako pojedynczy obiekt z więcej niż 3 wierzchołkami. Czterostronne wielokąty (ogólnie nazywane czworokątami) i trójkąty to najczęściej używane kształty w modelowaniu wielokątów. Grupę wielokątów połączonych ze sobą wspólnymi wierzchołkami nazywa się ogólnie elementem . Każdy z wielokątów tworzących element nazywany jest ścianą .

W geometrii euklidesowej dowolne trzy niewspółliniowe punkty wyznaczają płaszczyznę . Z tego powodu trójkąty zawsze znajdują się na jednej płaszczyźnie. Jednak niekoniecznie dotyczy to bardziej złożonych wielokątów. Płaski charakter trójkątów ułatwia wyznaczenie ich normalnej powierzchni , trójwymiarowego wektora prostopadłego do powierzchni trójkąta. Normalne powierzchni są przydatne do określania transportu światła w ray tracingu i są kluczowym elementem popularnego modelu cieniowania Phonga . Niektóre systemy renderowania używają normalnych wierzchołków zamiast normalnych powierzchni, aby stworzyć lepiej wyglądający system oświetlenia kosztem większego przetwarzania. Zauważ, że każdy trójkąt ma dwie normalne powierzchni, które wskazują przeciwne kierunki względem siebie. W wielu systemach tylko jedna z tych normalnych jest uznawana za poprawną – druga strona wielokąta jest określana jako tylna ściana i może być widoczna lub niewidoczna w zależności od potrzeb programisty.

Wiele programów do modelowania nie narzuca ściśle teorii geometrycznej; na przykład możliwe jest, aby dwa wierzchołki miały dwie odrębne krawędzie łączące je, zajmujące dokładnie to samo położenie przestrzenne. Możliwe jest również, że dwa wierzchołki będą istniały w tych samych współrzędnych przestrzennych lub dwie ściany będą istnieć w tym samym miejscu. Takie sytuacje zwykle nie są pożądane, a wiele pakietów obsługuje funkcję automatycznego czyszczenia. Jeśli jednak automatyczne czyszczenie nie jest dostępne, należy je usunąć ręcznie.

Grupa wielokątów połączonych wspólnymi wierzchołkami nazywana jest siatką . Aby siatka wyglądała atrakcyjnie podczas renderowania , pożądane jest, aby nie przecinała się sama ze sobą , co oznacza, że ​​żadna krawędź nie przechodzi przez wielokąt. Innym sposobem patrzenia na to jest to, że siatka nie może się przebić. Pożądane jest również, aby siatka nie zawierała żadnych błędów, takich jak podwojenie wierzchołków, krawędzi lub ścian. Dla niektórych celów ważne jest, aby siatka była rozmaitością – to znaczy, aby nie zawierała dziur ani osobliwości (miejsc, w których dwie różne sekcje siatki są połączone jednym wierzchołkiem).

Budowa siatek wielokątnych

Chociaż możliwe jest konstruowanie siatki przez ręczne określenie wierzchołków i ścian, znacznie częściej tworzy się siatki przy użyciu różnych narzędzi. Dostępna jest szeroka gama pakietów oprogramowania graficznego 3D do wykorzystania przy konstruowaniu siatek wielokątów.

Jedną z popularniejszych metod konstruowania siatek jest modelowanie skrzynkowe , które wykorzystuje dwa proste narzędzia:

  • Subdivide narzędzie dzieli powierzchnie i krawędzie na mniejsze kawałki, dodając nowe wierzchołki. Na przykład kwadrat zostanie podzielony przez dodanie jednego wierzchołka w środku i jednego na każdej krawędzi, tworząc cztery mniejsze kwadraty.
  • Wyciągnięcia narzędzia nakłada się na twarz lub grupy twarzach. Tworzy nowe lico o tym samym rozmiarze i kształcie, które jest połączone lico z każdą z istniejących krawędzi. W ten sposób wykonanie operacji wyciągnięcia na kwadratowej powierzchni stworzyłoby sześcian połączony z powierzchnią w miejscu powierzchni.

Druga popularna metoda modelowania jest czasami określana jako modelowanie inflacji lub modelowanie ekstruzji . W tej metodzie użytkownik tworzy kształt 2D, który wyznacza kontur obiektu ze zdjęcia lub rysunku. Następnie użytkownik wykorzystuje drugi obraz obiektu pod innym kątem i wytłacza kształt 2D w 3D, ponownie podążając za konturem kształtu. Ta metoda jest szczególnie powszechna przy tworzeniu twarzy i głów. Ogólnie rzecz biorąc, artysta modeluje połowę głowy, a następnie powiela wierzchołki, odwraca ich położenie względem jakiejś płaszczyzny i łączy ze sobą te dwa kawałki. Dzięki temu model będzie symetryczny.

Inną powszechną metodą tworzenia siatki wielokątnej jest łączenie ze sobą różnych prymitywów , które są predefiniowanymi siatkami wielokątnymi utworzonymi przez środowisko modelowania. Typowe prymitywy obejmują:

  • Kostki
  • Piramidy
  • Cylindry
  • Prymitywy 2D, takie jak kwadraty, trójkąty i dyski
  • Wyspecjalizowane lub ezoteryczne prymitywnie, takie jak Czajnik z Utah czy Suzanne, małpka maskotka Blendera .
  • Kule — Kule są zwykle przedstawiane na dwa sposoby:
    • Ikosfery to dwudziestościany, które posiadają wystarczającą liczbę trójkątów, aby przypominały kulę.
    • Kule UV składają się z czworokątów i przypominają siatkę widoczną na niektórych globusach – czworokąty są większe w pobliżu „równika” kuli i mniejsze w pobliżu „biegunów”, ostatecznie kończąc się jednym wierzchołkiem.

Wreszcie, istnieją pewne wyspecjalizowane metody konstruowania siatek o dużej lub małej szczegółowości. Modelowanie oparte na szkicu to przyjazny dla użytkownika interfejs do szybkiego konstruowania modeli o niskiej szczegółowości, podczas gdy skanery 3D mogą być używane do tworzenia siatek o dużej szczegółowości w oparciu o istniejące obiekty w świecie rzeczywistym w prawie automatyczny sposób. Urządzenia te są bardzo drogie i zazwyczaj są używane tylko przez naukowców i specjalistów z branży, ale mogą generować wysokiej dokładności submilimetrowe reprezentacje cyfrowe.

Operacje

Istnieje bardzo duża liczba operacji, które można wykonać na siatkach wielokątnych. Niektóre z nich z grubsza odpowiadają manipulacjom obiektów 3D w świecie rzeczywistym, podczas gdy inne nie. Operacje na siatkach wielokątnych obejmują:

  • Creations - Utwórz nową geometrię z innego obiektu matematycznego
    • Wyciągnięcie złożone — generuj siatkę, tworząc kształt wzdłuż dwóch lub więcej krzywych profilu
    • Wyciągnięcie — tworzy powierzchnię przez przeciągnięcie krzywej profilu lub powierzchni wieloboku wzdłuż linii prostej lub liniowej
    • Revolve — generuj siatkę, obracając (obracając) kształt wokół osi
    • Marszowe sześciany - Algorytm do konstruowania siatki z funkcji niejawnej
  • Binary Creations - Utwórz nową siatkę z binarnej operacji dwóch innych siatek
    • Add - Boole'owskie dodanie dwóch lub więcej siatek
    • Odejmowanie — odejmowanie wartości logicznych dwóch lub więcej siatek
    • Przecięcie — przecięcie logiczne
    • Union - Boole'owskie połączenie dwóch lub więcej siatek
    • Dołącz — Dołącz jedną siatkę do drugiej (usuwając powierzchnie wewnętrzne)
    • Fazowanie — tworzy fazowaną powierzchnię, która gładko łączy dwie powierzchnie
  • Deformacje — przesuń tylko wierzchołki siatki
    • Deformuj — systematycznie przesuwaj wierzchołki (zgodnie z określonymi funkcjami lub regułami)
    • Deformacja ważona — przesuwanie wierzchołków na podstawie zlokalizowanych wag na wierzchołek
    • Morph — płynne przesuwanie wierzchołków między siatką źródłową a docelową
    • Bend — przesuń wierzchołki, aby „zgiąć” obiekt
    • Twist — przesuń wierzchołki, aby „skręcić” obiekt
  • Manipulacje — Modyfikuj geometrię siatki, ale niekoniecznie topologię
    • Przemieszczenie — wprowadź dodatkową geometrię na podstawie „mapy przemieszczeń” z powierzchni
    • Uprość — systematycznie usuwaj i uśredniaj wierzchołki
    • Podziel — wprowadź nowe wierzchołki do siatki, dzieląc każdą powierzchnię. W przypadku, na przykład, Catmull-Clark , podział może mieć również wpływ na wygładzenie siatek, na które jest stosowany.
    • Convex Hull - Generuj wypukłą siatkę, która minimalnie obejmuje daną siatkę
    • Wytnij — utwórz otwór w powierzchni siatki
    • Ścieg — zamknij otwór w powierzchni siatki
  • Pomiary - Oblicz pewną wartość siatki
    • Objętość — obliczanie objętości 3D siatki (dyskretna całka objętościowa)
    • Pole powierzchni — Oblicz pole powierzchni siatki (dyskretna całka powierzchniowa)
    • Wykrywanie kolizji — Określ, czy zderzyły się dwie złożone siatki w ruchu
    • Dopasowanie — skonstruuj powierzchnię parametryczną (NURBS, dwusześcienny splajn) dopasowując ją do danej siatki
    • Odległość punkt-powierzchnia — oblicz odległość od punktu do siatki
    • Odległość linia-powierzchnia - Oblicz odległość od linii do siatki
    • Przecięcie linia-powierzchnia — Oblicz przecięcie linii i siatki
    • Przekrój - Oblicz krzywe utworzone przez przekrój płaszczyzny przez siatkę
    • Środek ciężkości — Oblicz środek ciężkości, środek geometryczny siatki
    • Środek masy — oblicza środek masy, punkt równowagi siatki
    • Circumcenter — oblicz środek okręgu lub kuli otaczającej element siatki
    • Środek — oblicz środek okręgu lub kuli otoczonej elementem siatki

Rozszerzenia

Po zbudowaniu siatki wielokątnej należy podjąć dalsze kroki, zanim będzie ona użyteczna w grach, animacjach itp. Model musi być zmapowany teksturą, aby dodać kolory i teksturę do powierzchni i musi otrzymać szkielet do animacji. Siatkom można również przypisywać wagi i środki ciężkości do wykorzystania w symulacji fizycznej .

Aby wyświetlić model na ekranie komputera poza środowiskiem modelowania, konieczne jest zapisanie tego modelu w jednym z formatów plików wymienionych poniżej, a następnie użycie lub napisanie programu zdolnego do ładowania z tego formatu. Dwie główne metody wyświetlania modeli wielokątów 3D to OpenGL i Direct3D . Obie te metody można stosować z kartą graficzną z akceleracją 3D lub bez niej .

Zalety i wady

Przedstawienie obiektu za pomocą wielokątów ma wiele wad. Wielokąty nie są w stanie dokładnie odwzorować zakrzywionych powierzchni, dlatego wiele z nich musi być używanych do przybliżania krzywych w atrakcyjny wizualnie sposób. Stosowanie skomplikowanych modeli wiąże się z obniżoną prędkością. W konwersji linii skanu każdy wielokąt musi zostać przekonwertowany i wyświetlony, niezależnie od rozmiaru, a na ekranie często w danym momencie pojawia się duża liczba modeli. Często programiści muszą używać wielu modeli na różnych poziomach szczegółowości, aby reprezentować ten sam obiekt, aby zmniejszyć liczbę renderowanych wielokątów.

Główną zaletą wielokątów jest to, że są szybsze niż inne reprezentacje. Podczas gdy nowoczesna karta graficzna może pokazywać bardzo szczegółową scenę z szybkością 60 klatek na sekundę lub wyższą, modele powierzchniowe , główny sposób wyświetlania modeli niebędących wielokątami, nie są w stanie osiągnąć interaktywnej szybkości klatek (10 klatek/s lub wyższa) z podobną ilością szczegółów. W przypadku sprite'ów , kolejnej alternatywy dla wielokątów, każda wymagana pozycja musi być tworzona indywidualnie, podczas gdy pojedynczy wielokątny model może wykonać dowolny ruch, jeśli zostaną zastosowane odpowiednie dane ruchu i można go oglądać pod dowolnym kątem.

Formaty plików

Dostępnych jest wiele formatów do przechowywania danych wielokątów 3D. Najpopularniejsze to:

Zobacz też

Bibliografia

  1. OpenGL SuperBible (3rd ed.), Richard S Wright i Benjamin Lipchak ISBN  0-672-32601-9
  2. Przewodnik programowania OpenGL: Oficjalny przewodnik do nauki OpenGL, wersja 1.4, wydanie czwarte autorstwa OpenGL Architecture Review Board ISBN  0-321-17348-1
  3. OpenGL(R) Reference Manual: Oficjalny dokument referencyjny do OpenGL, wersja 1.4 (4th Edition) autorstwa OpenGL Architecture Review Board ISBN  0-321-17383-X
  4. Dokumentacja Blendera: https://web.archive.org/web/20051212074804/http://blender.org/cms/Documentation.628.0.html
  5. Dokumentacja Maya: spakowana z Alias ​​Maya, http://www.alias.com/eng/index.shtml