View
4
Download
0
Category
Preview:
Citation preview
Badania fotorealistycznych modeli oświetlenia bazujących na technologiach ray-tracingu w
silniku gier Unreal Engine 4Robert Walicki, promotor dr. inż. Paweł Wojciechowski
Modele oświetleniaIlumination models
Global illuminationObject oriented lighting
Phong illumination model
Blinn-Phong illumination model Ray tracing Radiosity Photon mapping
Modele oświetleniowe są używane w programach do grafiki trójwymiarowej do stworzenia efektów
świetlnych w środowiskach wirtualnych, gdzie światło jest określane na podstawie fizyki samego światła. Ich
istnienie ma na celu redukcję obciążenia jednostki przetwarzającej do stopnia, w którym można
wykorzystać model w grafice komputerowej. Istnieją dwa główne modele oświetlenia: Object Oriented
Lighting i Global Illumination. Pierwszy z nich traktuje każdy obiekt w sposób indywidualny, a celem drugiego
jest symulacja interakcji światła między obiektami. W ramach mojej pracy głównym obiektem badań będzie
model zbudowany na podstawie Global Illumination, którym jest ray tracing.
Raytracing
Ray tracing jest technologią renderowania obiektów, która opiera generowanie obrazów na śledzeniu ścieżki
światła, traktowanej jako piksele na obrazie oraz symulacji efektów powstałych przez interakcje światła z
elementami wirtualnymi. Technika ta umożliwia tworzenie wysokiego poziomu realizmu, dlatego jest
najczęściej wykorzystywana przez grafików i twórców specjalizujących się w fotorealizmie - trendzie
charakteryzującym się wytwarzaniem obrazów i filmów za pomocą technik komputerowych, wyglądających
jak obrazy pochodzące z rzeczywistości, uchwycone za pomocą kamery. Technologia ta aktualnie jest
najczęściej wykorzystywana w aplikacjach, w których tolerowany jest długi czas renderowania tj. Blender,
3DS Max, Cinema 4D, lecz na razie nie radzi sobie w aplikacjach czasu rzeczywistego, dla których szybkość
jest istotna w renderowaniu każdej klatki.
Dolina niesamowitości
Jednym z paradoksów w grafice komputerowej jest tzw. dolina niesamowitości.
Jest to hipoteza, zgodnie z którą robot, rysunek lub animacja komputerowa wyglądający podobnie jak
człowiek, wywołuje u obserwatorów nieprzyjemne odczucia, a nawet odrazę. Graficy komputerowi oraz
artyści VFX twierdzą, iż rozwój technologii ray tracingu, może doprowadzić do zniwelowania tej przepaści
oraz obalenia hipotezy. W dzisiejszych czasach możemy już wskazać na twory, które przeskoczyły ten
fenomen. Przykładami w kinematografii są film “Logan” lub “Irlandczyk”. Brakuje jednak badań nad tym jak
duży wpływ ray tracing ma na realizm obrazu.
Fotorealizm - jak mierzyć ?
● Peak Signal-to-Noise Ratio (PSNR) - stosunek maksymalnej mocy sygnału do mocy szumu
zakłócającego ten sygnał. Miara LB ( lower better - im mniejsza wartość, tym lepiej )
● Mean Squared Error (MSE) - wartość oczekiwana kwadratu błędu. Miara LB
● Structural Similarity Index (SSIM) - metoda przewidująca jakość animacji oraz obrazów bazująca na
strukturze zdjęcia i ułożeniu obiektów. Miara HB (higher better - im wyższa wartość, tym lepiej)
● Haar wavelet-based perceptual similarity index (HaarPSI) - nowatorska i niedroga obliczeniowo miara
podobieństwa do pełnej oceny jakości obrazu referencyjnego. HaarPSI wykorzystuje współczynniki
uzyskane z rozkładu falki Haar do oceny lokalnych podobieństw między dwoma obrazami, a także
względnej ważności obszarów obrazu. Miara HB
Wykorzystane oprogramowanie
● Blender 2.82
● Unreal Engine 4.23
● Substance Painter 2.0
● fSpy
● Python
Proces badawczy
Preping models in Blender
Texturing in Substance Painter
Applying materials in Blender
Export to Unreal
Setting up lighting system
Render on both engines and compare
Framework budowy sceny
Aby obiekty posiadały kształt zgodny z
prawdziwymi przedmiotami muszą posiadać
skomplikowaną strukturę składającą się z
milionów wierzchołków. Takie obiekty
nazywamy obiektami “high-poly” i powstają
one na bazie obiektów z niską gęstością
wierzchołków zwanych obiektami “low-poly”,
które są standardowo wybierane do
optymalizacji renderowania obrazu.
1 . Przekształcenie obiektów low-poly na high-poly
Obiekt low-poly Obiekt high-poly
2. Wypalenie tekstur i dopasowanie materiałów
Po stworzeniu obiektów “high-poly” oraz “low-poly” należy
przystosować obiekty do optymalizacji. Jednym z istotnych
kroków jest proces zwany wypaleniem tekstur (map baking).
Proces polega na porównaniu obu obiektów i zapisaniu
danych na temat różnic między nimi w postaci tekstur,
które później zostaną nałożone na obiekt “low-poly”.
Funkcję tą dostarcza program Substance Painter, wraz z
bazą ponad tysiąca materiałów, czyli kompozycji tekstur,
które możemy wykorzystać do tworzenia własnych tekstur.
Wypalenie tekstur
3. Tworzenie shaderów - Blender
Blender - podstawowy shader Blender - shader szkła
4. Przeniesienie sceny do Unreal Engine - Datasmith
Od wersji Blender 2.8 powstał nowy
plugin, który pozwala przenosić całe sceny
do Unreal Engine 4, zwany Datasmith.
Wspiera przenoszenie obiektów, kamer,
oświetlenia oraz materiałów z pewnymi
ograniczeniami.
5. Tworzenie shaderów - Unreal Engine
Unreal Engine - podstawowy shader
Unreal Engine - podstawowy shader + Parallax occlusion mapping
Unreal Engine - shader szkła
6. Konfiguracja oświetlenia
Blender - konfiguracja HDRi
Unreal Engine - konfiguracja HDRi
Aktualny progres
Oryginalne zdjęcie Scena stworzona w Blender 2.82 Scena stworzona w Unreal Engine 4
Pomiary
MSE PSNR SSIM HaarPSI
Blender (Cycles)
108.908 27.760 0.702 0.412
Unreal Engine 4.23
106.443 27.859 0.662 0.260
Konkluzje z uwzględnieniem pytań
Raytracing ma adekwatny wpływ na jakość oraz osobistą ocenę widza co do realizmu danego obrazu. W silnikach
graficznych czasu estymowanego jest on wykorzystywany w pełni, lecz w silnikach czasu rzeczywistego jest ta
technologia używana tylko do wzmocnienia efektów rastrowych. Pomiary jasno wskazują, iż tylko częściowe
wykorzystanie technologii ma wpływ na estetykę renderu. Jeśli chodzi o korzystanie technologii to jej konfiguracja w
Unreal Engine 4 jest toporna i nieintuicyjna w porównaniu do programu Blender. Na chwilę obecną nie posiada
skompaktowanej metody na stworzenie wiarygodnego oświetlenia opartego na raytracingu, zbyt dużo czynników jest
do ustawienia w celu uzyskania pożądanego efektu, co wpływa na czas pracy developera. Jednakże uważam, że
potrzeba kilka lat pracy nad silnikiem i raytracing będzie w pełni zintegrowany z Unreal Engine.
Kontynuacja pracy
● Wytworzenie map Ambient Occlusion
● Wytworzenie dodatkowych obrazów w silniku Blender Eevee oraz Unreal Engine z wyłączonym
raytracingiem oraz porównanie z oryginałem
● Wytworzenie sceny w mikro skali
Źródła
● https://docs.unrealengine.com/en-US/Engine/Rendering/RayTracing/index.html● https://docs.blender.org/● http://www.haarpsi.org/● https://www.researchgate.net/publication/220931731_Image_quality_metrics_PSNR_vs_SSIM● https://www.researchgate.net/publication/314115088_A_Study_on_Picture-Color_Similarity_on_Digital_Images
Dziękuję za uwagę!
Recommended