Adobe Substance 3D Painter

Poziom zaawansowania 1/5

Materiały parametryczne — takie, które definiowane są pojedynczym parametrem dotyczącym koloru, połysku, metaliczności itd. są najłatwiejsze do zbudowania, i na szczęście realizują większą część zapotrzebowania na pokrycie typowych modeli 3D (głównie z dziedziny archwiz). Przykładami takich materiałów są czyste metale, plastik, gładkie powierzchnie ścian.

Materiały teksturowane, to materiały, których powierzchnia ma złożoną fakturę, i informacja o jej geometrii musi być zawarta w teksturze rozpiętej na obiekcie. Szablonowym przykładem takich materiałów jest drewno lub powierzchnie kamienne. Materiały teksturowane można stworzyć w SP na bazie biblioteki materiałów predefiniowanych. Materiały w bibliotece SP są mniej lub bardziej edytowalne i po korektach dość łatwo można dostosować je do własnych potrzeb. O tym, jak to się robi, o historii zmian w bibliotekach SP oraz o plusach i minusach takiego rozwiązania było szeroko w ostatnim opisie.

Zdarzają się sytuację, że biblioteka predefiniowanych materiałów nie zawiera niczego, co chociażby jest podobne do materiału, który potrzebujemy otrzymać. Tak się często zdarza w przypadku projektów typu archwiz, gdzie chce się przy pomocy jednego materiału pokryć duże powierzchnie, na przykład podłóg lub gruntu. SP nie zawiera predefiniowanych tekstur trawy, bruków, paneli podłogowych. W takich przypadkach budowa materiału na bazie czegoś z biblioteki SP odpada. Trzeba taki materiał zbudować od podstaw.

Materiał parametryczny tworzyło się bardzo łatwo — operowało się suwakami zmieniającymi pojedyncze parametry dla całej powierzchni materiału. Różne parametry dla różnych kanałów PBR materiału. W przypadku materiałów już teksturowanych, wbrew pozorom wcale nie jest to proces wiele bardziej skomplikowany. Problematycznym może stać się jedynie uzyskanie zestawu tekstur PBR, który trzeba do SP zaimportować, by jego składniki rozprowadzić po kanałach tworzonego materiału.

Źródła tekstur PBR

Trzeba od razu odróżnić tekstury “obrazkowe”,  które zalewają internet, w niskiej rozdzielczości, z nieprawidłowym aspektem, agresywną kompresją jpg, cieniami itd., od profesjonalnych zestawów PBR. Takie proste tekstury można oczywiście również wrzucić do SP, ale efekt będzie wymierny do jakości takiego obrazka. Dobre tekstury PBR charakteryzują się brakiem lub minimalną kompresją, kwadratowym aspektem, rozdzielczością będącą potęgą dwójki (to ważne dla silników typu Unreal), a przede wszystkim zawierające oprócz obrazu (zwanego BaseColor) zestaw dodatkowych map — tekstur dotyczących różnych aspektów fizycznych cech materiałów. Będzie to na przykład mapa połysku (RoughnesMap), mapa metaliczności (MetalnessMap), mapa cieniowania powierzchni (NormalMap) [Rys.1.]. Dodatkowo pełen profesjonalny zestaw tekstur zawiera mapy cieni rozproszonych (AO) i mapę wysokości (HeightMap). Niektóre zaawansowane materiały mogą posiadać jeszcze dodatkowe informacje zawarte w teksturach — np. SubsurfaceMap czy Opacity albo Refraction — w przypadkach materiałów przezroczystych.

[Rys. 1. Typowy zestaw tekstur PBR. Żródło A23D.co]

Komercyjne zastawy takich tekstur można bardzo szybko wygooglować (Textures.com, AmbientCG.com). Jeszcze szybciej można trafić na strony, które oferują darmowe próbki byle czego, a wymagają rejestracji, ostatecznie odsłaniając swoje prawdziwe, komercyjne oblicze. Strony całkowicie darmowe (np. PolyHeaven) oferują mały wybór albo/i niepełne PBR lub tekstury w jakichś dzikich proporcjach i rozdzielczościach.

Dobrym rozwiązaniem jest sięgnięcie po assety związane z silnikiem do gry UE4 i UE5 firmy Epic. W zasobach marketplace zarządzanym przez Epic znajduje się nie tylko ogromna ilość płatnych zestawów tekstur, ale dużo paczek materiałów darmowych. Można z nich odzyskiwać takie tekstury, eksportując je z silników UE.

Istnieje również bardzo profesjonalna strona firmy Quixel (wykupionej również przez Epic), która gromadzi wszelkiego rodzaju assety związane z grafiką 3D. W tym ogromną bazę fotorealistycznych tekstur PBR [Rys. 2.].

[Rys. 2. Browser ze strony Quixela, z próbkami tekstur PBR. Wyfiltrowane słowem “Grass” w dziedzinie “Surface”. Źródło Quixel.com]

Mało tego – użytkownicy silników UE, mogą za pomocą ich wtyczki o nazwie Bridge, zupełnie darmowo i do woli pobierać te tekstury do środowiska Unreala.
Generalnie posiadanie własnej biblioteki tekstur jest dużym atutem grafika CG, a co za tym idzie zbudowanie takiej biblioteki warte jest wysiłku i poszukiwań dobrych źródeł profesjonalnych tekstur PBR.

Importowanie zestawu tekstur do Subtance Paintera

Przygotowany został zewnętrzny zestaw tekstur PBR o wysokiej rozdzielczości 4k. Z pakietu oferowanego przez Megaskany wybrane zostały mapy Albedo (BaseColor), Roughness, Normal oraz AO. Nie używany będzie w tym przykładzie Displacement (HeightMap) jako że jego implementacja wymaga dodatkowej funkcjonalności reagującej z geometrią modelu. Nie ma również mapy Metalness, jako że przykład dotyczy gruntu (konkretnie trawy) dla którego poziom metaliczności jest wszędzie równy zeru. Taka tekstura byłaby po prostu cała czarna. Wybór tekstur nie ma dla tego opisu znaczenia. Chodzi jedynie o mechanizm ich wprowadzania w materiał. W tym przypadku jest to trawa [Rys. 3.], ale równie dobrze może to być każdy inny zestaw.

[Rys. 3. Wygląd tekstury trawy, pobrany z Megaskanów – kanał BaseColor.]

Po uruchomieniu Substance Painter i wybraniu samplowego projektu [Rys. 4.], najlepiej “PreviewSphere”, pojawi się testowa sfera, idealna do nakładania i oglądu materiałów [Rys. 5.].

[Rys. 4. Wczytywanie próbkowego projektu do testowania narzędzi w SP.]

Usuwając wszystkie warstwy we wstędze LAYERS, stworzyć należy nową, podstawową warstwę typu “Fill Layer” [Rys. 5.]. Pojawi się domyślny, biały, prawie matowy i niemetaliczny materiał parametryczny.

[Rys. 5. Założenie nowej, podstawowej warstwy typu “Fill Layer” z domyślnym materiałem parametrycznym.]

Teraz pora na import tekstur. Najwygodniej jest zrobić to, przeciągając cały pakiet PBR na browser “ASSETS” znajdujący się zawsze w dolnej części UI programu. Pojawi się okno importowe [Rys. 6.]. W oknie importowym należy ustalić dwie rzeczy. Po pierwsze, jaki rodzaj assetu zamierza się zaimportować. W tym przypadku chodzi o “Textures”. Po drugie — gdzie zapisać zaimportowane tekstury. Druga opcja jest o tyle praktyczna, że pozostawia możliwość pomiędzy wciąganiem tekstur wyłącznie do projektu, ale również możliwe jest wczytanie ich na stałe do ogólnej biblioteki programu. Dzięki temu, posiadając swoje, dobre i profesjonalnie tekstury można rozbudowywać własną, predefiniowaną bibliotekę SP.

[Rys. 6. Okno importowe przy wprowadzaniu zewnętrznych assetów do SP.]

W tym przypadku wybrana została opcja importu jedynie do pliku projektu. Zaimportowany zestaw tekstur pojawi się jako wyróżniony tagiem “Imported” w browserze ASSETS [Rys. 7.]

[Rys. 7. Wyróżnione, zaimportowane do projektu assety pojawiają się w browserze SP “ASSETS”.]

Teraz krok najważniejszy — wprowadzenie tekstur do materiału. Domyślny materiał „Fill Layer” jest materiałem parametrycznym — posiada suwaki, które pozwalają na zmianę tych parametrów lub pola jednolitych barw, jeśli parametr jest nieskalarny (np. trzykanałowa barwa dla BaseColor). [Rys. 8.].

[Rys. 8. Wstęga kanałów materiału parametrycznego.]

Wprowadzenie tekstur w miejsce parametrów odbywa się znowu metodą przeciągania. Odpowiednią teksturę PBR trzeba przeciągnąć na odpowiedni kanał warstwy. Zaczynając od BaseColor, pierwszego i najważniejszego kanału pojawi się na modelu obraz tekstury [Rys. 9.]

[Rys. 9. Wczytany pierwszy kanał tekstur PBR odpowiedzialny za czystą barwę obrazu.]

Podobnie przeciągnąć trzeba kanał Roughness — tekstura (mapy) w odcieniu szarości dla informacji odpowiadającej za połysk. Tutaj połysk jest bardzo subtelny (mapa jest prawie cała biała). Jego obecność można jednak wstępnie ocenić poprzez przełączenie kanału widoczności na Roughness w górnym prawym rogu Viewport [Rys. 10.].

[Rys. 10. Wczytanie do kanału Roughness tekstury odpowiadającej za połysk. Włączony wizualizer map Roughness.]

Pozostały dwie mapy — Normal i Ambient Occlusion. Normal mapę przeciąga się jak dwie poprzednie na odpowiedni kanał Fill Layer — Normal [Rys. 11]. Uzyskuje się dzięki tej niezwykłej mapie złudzenie przestrzennej chropowatości powierzchni. Widać to dzięki oświetleniu, reagującym na mapę cieniowaniem. Dlatego, by docenić ten efekt, najlepiej jest zmienić kierunek oświetlenia tak, by padał pod niskimi kątami w stosunku do powierzchni modelu. Shift + RightMouse pozwala obracać oświetleniem HDR-i, wydobywając wszystkie dobrodziejstwa materiałowania teksturami PBR [Rys.11].

[Rys.11. Pełen obraz materiału PBR po nałożeniu Normal mapy.]

Co zrobić z mapą AO? Domyślny materiał SP nie posiada kanałów AO. Można go jednak dodać samemu. Robi się to we wstędze CHANNELS [Rys. 12.].

[Rys. 12. Dołączanie kanału Ambient Occlusion do kanałów materiału PBR.]

Pozostaje go jedynie uaktywnić na wstędze PROPERTIES – FILL i można dociągnąć teksturę prosto na kanał Ambient Occlusion [Rys.13.]

[Rys. 13. Dołączenie mapy (tekstury) AO do materiału PBR]

Teraz coś dla nieco bardziej zaawansowanych. Ciekawym sposobem na jeszcze lepsze uwidocznienie tekstury AO jest zmultiplikowanie jej z kanałem BaseColor. Tworzy się wtedy nową warstwę Fill Layer, i w kanale BaseColor wrzuca się teksturę AO. Dodatkowo przełącza się rodzaj blendy na Multiply [Rys. 14.]

[Rys 14. Użycie tekstury AO jako multiplikatora do BaseColor.]

Tym sposobem na koniec otrzymujemy całkiem dobrze wyglądający materiał PBR [Rys. 15.]. Tego typu materiały uzewnętrzniają swoje pełne piękno dopiero przy zmiennym oświetleniu. Odbicia na warstwie informacyjnej połysku oraz cieniowanie na Normal mapie zmieniają się na materiale w Substance Painter przy obrotach oświetleniem HDRi. Sam stworzony tutaj materiał może stanowić dopiero wyjście do dalszej jego edycji, już za pomocą filtrów, histogramów, czy blen zmieniających natężenia poszczególnych kanałów. O tym w następnym, krótkim tutorialu.

[Rys. 15. Widok materiału opartego na teksturach PBR.]