![Material MakerUI v0.9 Material MakerUI v0.9](/img/static/blog/material-makerui-v0.9.jpg.webp)
Ukazała się kolejna wersja otwartoźródłowego Material Maker, dla Windowsa i Linuksa, autorstwa RodZilli (kontekst wskazuje na to, że jest to pseudonim programisty, a nie przedsiębiorstwo). Narzędzie służące do proceduralnego generowania materiałów, bazujące na silniku gier Godot. W Material Maker materiały zostają zdefiniowane jako grafy, gdzie węzły (nodes) odpowiadają za ich utworzenie lub transformację.
![Material Maker v0.8 Skulls Material Maker v0.8 Skulls](/img/static/blog/material-maker.v0.8-skulls.jpg.webp)
Większość węzłów zostało ustanowionych jako shadery napisane przy użyciu języka GLSL. Material Maker dostarcza połączone shadery, a nie generuje obrazu dla poszczególnych węzłów, aby uzyskać efekt końcowy w postaci tekstury. Jest także możliwe tworzenie nowych węzłów za pomocą ich łączenia lub grupowania, albo ich zaprogramowania w GLSL.
Zobacz też: GitHub przejmuje npm. Imperium Microsoftu rozrasta się
Węzły generujące
Węzły generujące zawierają konfigurowalny wzorzec, jaki może być użyty do zdefiniowania podstawowych kształtów, materiału lub tekstury. Węzły przekształcające zmieniają kolor i kształt obrazu wejściowego, w celu stworzenia bardziej złożonej tekstury. Węzły są niezależne od rozdzielczości, toteż możliwe jest przeistaczanie poprzez zbliżenie na detal i pozostaje to bez wpływu na finalną jakość wygenerowanej w ten sposób tekstury. Jedynie niektóre z węzłów ograniczają możliwą rozdzielczość na wyjściu, takie jak generator obrazu lub filtry konwolucyjne (blur, emboss, generator normal mapy).
Material Maker jest w stanie wyeksportować tekstury zgodne z silnikami gier Godot, Unity i Unreal. Obsługuje przy tym argumenty linii poleceń i jeśli zostanie uruchomiony bez nich, wtedy zostanie rozpoczęty pusty projekt.
material_maker –export -t <engine> -o <output_path> <input_files>
Gdzie engine oznacza cel (Godot, Unity, Unreal), output_path definiuję ścieżkę w jakiej pojawi się plik wynikowy, input_files stanowią listę plików z jakimi Material Maker będzie pracował.
Material Maker jest dystrybuowany na licencji MIT i może zostać pobrany z itch.io. W praktyce jego funkcje (workflow) zdają się odpowiadać, na chwilę obecną, uproszczonej wersji Substance Designer.
Material Maker 0.9 przyniósł wraz z sobą następujące zmiany:
Interfejs użytkownika:
- Panele boczne mogą zostać przeniesione na krawędzie okna, poprzez przeciągnięcie ich za belkę z nazwą lub w menu View -> Panes, jakie służy do konfigurowania UI.
- Nowe okienko Hierarchy ukazuje bieżącą hierarchię zgrupowanych materiałów. Jest w stanie przedstawić podgląd, od 0 do 3, dla każdej grup materiałów, co może zostać skonfigurowane poprzez kliknięcie prawym przyciskiem myszy na okienko. Nawigacja pomiędzy wieloma grupami jest przez to wygodniejsza.
- Okienko grafu wyświetli podgląd 2D jako tło, jeśli kliknie się w przyciski z "cegiełkami" (bricks).
- Nowe menu podręczne dla dodawania węzłów lub edycji grafu wyświetli się po naciśnięciu klawisza spacji lub poprzez połączenie wyjścia z pustą przestrzenią.
- Nowe menu które pozwoli przełączyć się pomiędzy ciemnymi i jasnymi motywami UI.
- Polecenia Paste i Duplicate utworzą teraz nowy węzeł w miejscu położenia kursora.
- Usunięto przycisk "oka". Teraz wystarczy kliknąć w slot wyjściowy (output slot), aby pojawił się podgląd. Wtedy pojawi się okrąg sugerujący zaznaczenie.
Export:
Komenda linii poleceń export zostało całkowicie przepisana, aby można było eksportować do kilku silników gier i aby generować dodatkowe pliki. Są teraz 3 opcje eksportu:
- Godot: wyeksportuje wszystkie pliki PNG ia .tres które mogą być bezpośrednio użyte w Godocie. Alternatywnie to rozszerzenie Material Maker dla Godota będzie niedługo zaktualizowane o plugin importujące pliki .ptex. Tekstury materiałow PTEX mogą być prerenderowane w czasie importu lub wygenerowane w środowisku uruchomieniowym (runtime).
- Unity: Export generuje niezbędne pliki PNG i .mat (pliki materiałów), już gotowe do użycia.
- Unreal: wygeneruje pliki PNG, a te zostaną bezpośrednio wykorzystane jako materiał Unreal. Utworzenie prostego materiału dla silnika Unreal zostało opisane w dokumentacji.
Linia poleceń:
- Ścieżka opisująca położenie pliku .ptex może być użyta jako argument linii poleceń w celu bezpośredniego otwarcia projektu. Umożliwiono też powiązanie Material Maker z rozszerzeniem nazwy plików .ptex.
- Jest możliwe wyeksportowanie wielu plików dla silników Godot, Unity i Unreal używając --export jako argumentu liniii poleceń.
Węzły (Nodes):
- Węzły komentujące mają teraz edytowalne tytuły i kolory.
- Węzeł funkcji 3D signed distance obsługuje teraz indeks kolorów, a węzły 3D/SDF/Render otrzymały nowy indeks kolorów dla wyniku.
- Zostały dodane nowe węzły dla tekstur 3D (2D texture projection, pattern, fractional Brownian motion), operatory tekstur 3D (rotate, colorize, distort, blend), nadto węzeł służący do miksowania tekstur 3D według indeksu i węzeł przyłączający teskturę 3D.
- Został dodany węzeł 2D z fraktalnymi ruchami Browna (fractional Brownian motion) ze wsparciem dla wartości i szumów Perlina i Voronoi.
- Dodano nowe węzły Splatter i Tiler. Splatter inicjuje obraz wejściowy kilka razy dla swojego wyjścia. Tiler robi to samo, umieszczając instancje na siatce i stosując losowe przesunięcie (wyniki są podobne, ale Tiler może obsłużyć o wiele więcej instancji). Oba mogą losowo skalować i obracać instancje oraz obsługiwać maskę wejściową, która definiuje strefy, w których nie można utworzyć instancji. Wreszcie, oba akceptują tablice 2x2 lub 4x4 dla obrazów i wybierają je losowo dla każdej instancji oraz mają skalę szarości i wariant kolorów.
- Nowy węzeł Tiler2x2 ma 4 wejścia i wyprowadza tablicę 2x2 jako wynik swojego wejścia, przydatne do tworzenia tablic dla Splattera i Tilera.
Pozostałe:
- Można teraz utworzyć nowe typy slotów wejściowych i wyjściowych, zwyczajnie edytując plik .json i dodając plik podglądu shadera.