Napisane przez Evgeniy Romin.
Artykuł przygotowany specjalnie na konferencję Innotech - http://conference.msa.pstu.ru/
Autorzy: Boyarshinov Alexander i Romin Evgeny.
Na obecnym etapie opracowywania edytorów 3D i narzędzi do modelowania tworzenie szczegółowych modeli 3D do użytku w różnych aplikacjach pracujących z grafiką trójwymiarową stało się dość łatwe. Szczególnie aktywnie bardzo szczegółowe modele są wykorzystywane do produkcji efektów specjalnych do filmów lub gier. Jednak podczas próby użycia tych modeli w interaktywnych aplikacjach na urządzenia mobilne, symulatory i GIS pojawiają się problemy. Głównymi przeszkodami są alokacja dużej ilości zasobów obliczeniowych, złożoność przetwarzania obiektów. Ponadto obecność dużej liczby wielokątów w scenie lub w modelu ogranicza możliwość uruchamiania aplikacji na urządzeniach o niskiej mocy obliczeniowej. Istnieje więc problem wymagający optymalizacji gotowych trójwymiarowych szczegółowych modeli do zastosowania w aplikacjach na urządzeniach o niskiej mocy obliczeniowej.
Celem tego artykułu jest przegląd kilku metod optymalizacji bardzo szczegółowych modeli 3D i wprowadzenie ich w życie w ramach prac nad projektem studenckim WitchCraft.
Algorytmy do usuwania niewidocznych twarzy i linii. Istnieją trzy klasy takich algorytmów [1]:
- Algorytmy działające w przestrzeni ekranu. Opierają się one na obliczeniu wnikania twarzy w strefę widzialności obserwatora z pewnego punktu.
- Algorytmy działające bezpośrednio w przestrzeni obiektów (scen). Często w modelach znajdują się twarze, które znajdują się wewnątrz obiektu lub na odwrotnej stronie ukryte przed obserwatorem. Aby obliczyć widoczne powierzchnie, używane jest porównanie i obliczenie położenia wszystkich obiektów w scenie oraz usunięcie wszystkich niewidocznych twarzy.
- Algorytmy z listą priorytetów. Są hybrydową modyfikacją pierwszych dwóch i działają na przemian z obydwoma algorytmami.
Rys. 1 Przykład użycia algorytmów do usuwania niewidocznych dla użytkownika twarzy w zwykłym trybie.
Zalety niewidocznych algorytmów usuwania krawędzi i linii obejmują wysoki poziom optymalizacji i brak widocznej utraty jakości dla obserwatora. Wady to niska szybkość przetwarzania, wysokie zużycie zasobów obliczeniowych i brak przetwarzania w czasie rzeczywistym na większości urządzeń.
Algorytmy redukcji wielokątów (redukcja wielokątów). Redukcja to proces upraszczania modelu 3D poprzez zmniejszenie liczby wielokątów. Zasada metody polega na zastąpieniu grupy wielokątów taką, która jest najbliższa pierwotnej grupie pod względem lokalizacji wierzchołków. Większość edytorów 3D ma możliwość ustawienia intensywności redukcji, co pozwala wybrać pożądany stosunek między poziomem badania modelu a oszczędnościami mocy obliczeniowej.
Rys. 2 Metoda redukcji wielokątów na przykładzie postaci i wybór optymalnej konfiguracji.
Zalety to łatwość użycia i duża szybkość przetwarzania. Wadą jest jednak zniekształcenie modelu przy silnym lub niewłaściwym zastosowaniu metody i konieczność przerysowania tekstur, jeśli tekstura została już zastosowana do modelu podstawowego.
Algorytmy do ręcznego tworzenia modeli low-poly. Niskie modele są używane, gdy nie jest wymagana wysoka szczegółowość, jeśli akceptowalna jakość obrazu może być uzyskana przy dobrze rozwiniętych teksturach, normalnych mapach i innych efektach wizualnych. Najczęściej takie modele są używane do oszczędzania zasobów obliczeniowych w aplikacjach 3D, gdzie istnieje potrzeba wyświetlania modeli i animacji w czasie rzeczywistym [2].
Podczas tworzenia modeli niskopolowych należy dążyć do minimalnej możliwej liczby wierzchołków i krawędzi, aby utworzyć model obiektu wystarczająco podobny do rzeczywistego prototypu. Istnieje kilka sposobów tworzenia wizualnej reprezentacji trójwymiarowego obiektu przy minimalnej utracie jakości [3]:
Ustawianie optymalnej liczby wielokątów (wystarczającej do zachowania kształtu obiektu, ale nie zbędnej). Powinieneś wziąć pod uwagę zakres modelu i dostępne zasoby technologii komputerowej.
Rys. 3 Przykłady przydziału pierwotnego z różnymi liczbami wielokątów.
- Łączenie sąsiednich pobliskich wierzchołków. W niektórych przypadkach model może mieć kilka wierzchołków skoncentrowanych w niewielkiej odległości od siebie lub znajdujących się na jednej linii prostej. Najbardziej optymalnym rozwiązaniem w tym przypadku będzie połączenie wszystkich wierzchołków w jeden, co zmniejszy liczbę niefunkcjonalnych wielokątów.
„Zaokrąglanie” poprzez zmniejszenie liczby ścian po bokach obiektów cylindrycznych. Niektóre sceny wykorzystujące takie obiekty nie oznaczają potrzeby bardzo szczegółowej powierzchni cylindra. W takich przypadkach zaokrąglanie powinno być stosowane, ponieważ wizualne postrzeganie cylindra w niewielkim stopniu zależy od jego powierzchni.
Rys. 4 Przykłady użycia metod „Łączenie wierzchołków” i „Zaokrąglanie”.
- Zastosowanie trójkątnych wielokątów do modelowania sfer. Pomimo bardziej złożonej lokalizacji wielokątów w porównaniu ze sferą czworokątnych wielokątów, kula trójkątów pozwala na wykonanie mniejszej liczby wielokątów o mniejszym stopniu przybliżenia.
Rys. 5 Wykazanie różnicy sfer z wielokątów trójkątnych i czworokątnych
Zalety ręcznego tworzenia modeli niskopolowych obejmują bardzo wysoką jakość końcową i minimalną liczbę wielokątów. Kluczowymi wadami są wysoka intensywność pracy i bardzo niska prędkość symulacji.
Rys. 6 Porównanie wysokopoli- mowego modelu koła (246 twarzy) i niskiego poli (50 twarzy).
Aby ocenić skuteczność optymalizacji bardzo szczegółowych modeli 3D, stworzono scenę z różnych typów obiektów, do których zastosowano opisane powyżej metody i algorytmy.
Rys. 7. Zoptymalizowana scena do uruchamiania na urządzeniach o małej ilości zasobów obliczeniowych.
Na przykład, algorytm usuwania niewidocznych twarzy i linii został zastosowany do budynków, algorytm redukcji wielokątów został użyty do optymalizacji znaków, a obiekty wewnętrzne zostały ponownie modelowane przy użyciu technik tworzenia małych obiektów. W ten sposób można było uzyskać znaczną redukcję liczby wielokątów w scenie, co wyraźnie pokazano w tabeli 1.
Testy i oceny wydajności przeprowadzono na podstawie Unity 3D - wieloplatformowego narzędzia do tworzenia aplikacji dwu- i trójwymiarowych. Ostatecznie zmniejszenie liczby wielokątów z 21292 do 6050 spowodowało znaczny wzrost wydajności i zmniejszenie obciążenia centralnego i graficznego procesora urządzenia.
Rys. 8 Wykres obciążenia procesora centralnego i graficznego przed i po optymalizacji
Wniosek
W wyniku zastosowania metod optymalizacji opisanych w tym artykule scena high-poly została przekształcona w scenę o niskiej szczegółowości. Końcowym efektem manipulacji było zmniejszenie obciążenia procesora centralnego i procesora graficznego odpowiednio o 28% i 42%. Umożliwiło to rozpoczęcie sceny na urządzeniu mobilnym z ograniczonymi zasobami obliczeniowymi, co pokazuje skuteczność tych metod i perspektywy rozwoju kierunku jako całości.
Lista literatury
- „Algorytmy usuwania niewidzialnych linii i powierzchni” http://www.astro.tsu.ru/KGaG/text/5_6.html
- „Modele niskopolitowe / Koncepcja modeli o niskiej wielokącie” http://www.gamedev.ru/art/terms/lowpoly
- Sztuczki, porady i techniki Low Poly http://www.loonygames.com/content/1.6/totb/index5.php