silniku gier Unreal Engine 4 bazujących na technologiach ...

Post on 18-Apr-2022

3 views 0 download

Transcript of silniku gier Unreal Engine 4 bazujących na technologiach ...

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ę!