Renderowanie fizyczne (PBR) tekstury pozwalają na reprezentację realistycznego cieniowania i oświetlenia, wykorzystując wiele rodzajów obrazów tekstur, czyli map, na jednym obiekcie. Łączenie wielu map tekstur może dokładniej symulować kolor, chropowatość i odbicie w dowolnym środowisku oświetleniowym, a także poprawić elementy wizualne twoich zasobów i środowiska.


Dostępnych jest wiele aplikacji i przepływów pracy do tworzenia tekstur PBR. Możesz ich używać podczas modelowania i teksturowania niestandardowych obiektów 3D, o ile Roblox Studio obsługuje konkretne mapy tekstur, których używasz.
Ten przewodnik zawiera instrukcje dotyczące konfigurowania obiektów siatki do korzystania z map tekstur PBR oraz opisuje typowe zastosowania i najlepsze praktyki dla obsługiwanych przez Roblox PBR map tekstur. Tworząc własne powierzchnie, zapoznaj się z odniesieniami do materiałów, aby zobaczyć typowe wartości materiałowe, porównania obrazów i przykłady odzieży.
Włącz wygląd powierzchni
Możesz dodać tekstury PBR do dowolnego MeshPart, dodając obiekt SurfaceAppearance, który zastępuje pierwotnie przypisaną teksturę. Ogólnie rzecz biorąc, nie możesz zmieniać właściwości SurfaceAppearance za pomocą skryptów podczas gry, ponieważ silnik wymaga wstępnego przetwarzania, aby wyświetlić te grafiki. Podobnie jak w przypadku dodawania podstawowej tekstury, każda mapa obrazu tekstury musi wskazywać na odpowiedni załadowany identyfikator zasobu obrazu.
Aby włączyć wygląd powierzchni dla MeshPart:
W oknie Eksploratora najedź na MeshPart i kliknij przycisk ⊕.
Wstaw SurfaceAppearance z menu kontekstowego.

Gdy będziesz gotowy do dodania map tekstur do obiektu SurfaceAppearance, możesz kliknąć każdą właściwość mapy w oknie Właściwości i wprowadzić identyfikator zasobu.
Mapy tekstur
Studio obecnie obsługuje 4 rodzaje map tekstur PBR: kolor, normalna, chropowatość i metaliczność. Każda z tych map odpowiada ważnemu aspektowi powierzchni obiektu. Mapy tekstur zmieniają tylko wizualny wygląd i nie wpływają na geometrię obiektu MeshPart.
Zobacz poniższe przykłady, aby uzyskać przegląd obsługiwanych przez Roblox map tekstur i dodatkowych zasobów:
Właściwość ColorMap ustawia dane kolorów powierzchni, w tym wszelką przezroczystość obecnie w mapie. Zobacz kolor (albedo) dla dodatkowych informacji.



Kolor (albedo)
Kolor, lub albedo, mapa określa kolor twojej tekstury i składa się głównie z informacji kolorystycznych z minimalną ilością informacji dotyczących oświetlenia lub tekstury. Dla dodatkowej personalizacji możesz również dodać przezroczystość w swojej teksturze albedo, dodając przezroczystość do swojej mapy obrazu.
Tryby alfa
Dla obiektów, które wymagają częściowych lub całkowitych sekcji przezroczystości, takich jak trawa, liście, koronkowe tkaniny lub naklejki, możesz używać różnych trybów alfa, aby zastosować przezroczystość do swojej mapy kolorów. Jeśli format obrazu twojej mapy kolorów obsługuje kanały alfa, możesz zastosować mapę alfa w odcieniach szarości, gdzie 0.0 jest przezroczysty, a 1.0 jest nieprzezroczysty. Podobnie, korzystając z formatu obrazu takiego jak .png, wszelka przezroczystość na mapie kolorów działa jako przezroczystość na zasobie.
Możesz zastosować przezroczystość w dwóch różnych zachowaniach, ustawiając następujące wartości AlphaMode:
- Nieprzezroczysty — Ignoruje kanał alfa ColorMap i bezpośrednio korzysta z wartości koloru z mapy kolorów.
- Nakładka — Nakłada ColorMap na kolor MeshPart.Color podłożonej siatki. Mapy kolorów używające trybu nakładki ujawniają podstawowy kolor siatki wszędzie tam, gdzie obecna jest przezroczystość. Jest to ustawienie domyślne.
- Przezroczystość — Usuwa widoczną siatkę w oparciu o przezroczystość w ColorMap. To renderuje siatkę jako przezroczystą i nie ujawnia oryginalnego koloru siatki, gdy tylko obecna jest przezroczystość.
Nieprzezroczysty
Możesz używać Enum.AlphaMode.Opaque trybu, aby całkowicie zignorować kanał alfa ColorMap. W tym przypadku wartość alfa jest przyjmowana jako 1 (całkowicie nieprzezroczysty).
Poniższy przykład ilustruje, jak działa Opaque, wykorzystując biały obiekt jako odniesienie:


Nakładka
Możesz używać Enum.AlphaMode.Overlay, aby ujawniać sekcje oryginalnego koloru siatki. Ponieważ przezroczyste obszary mapy kolorów odsłaniają kolor podstawowy, możesz zaprojektować unikalną mapę tekstury, która częściowo lub całkowicie ujawnia kolor Color dla niestandardowych odcieni skóry lub innych sytuacji z unikalnymi kolorami.
Poniższy przykład ilustruje, jak działa Overlay, używając białej kuli jako odniesienia:


Poniższy przykład używa trybu Overlay dla niestandardowych postaci, ujawniając oryginalny odcień skóry postaci:


Zobacz niestandardowy odcień skóry po dodatkowe szczegóły dotyczące optymalizacji nałożenia dla skóry i podobnych aplikacji.
Przezroczystość
Możesz używać trybu Enum.AlphaMode.Transparency, aby stworzyć złożone lub niezwykle delikatne obiekty, takie jak koronki lub siatka, usuwając widoczne części siatki jako alternatywę dla modelowania geometrii siatki. Ponieważ to nie wpływa na geometrię obiektu siatki, może to pozwolić na tworzenie szczegółowych obiektów bez wpływu na wydajność, jak w przypadku złożonego modelu siatki.
Poniższy przykład ilustruje, jak częściowa i pełna przezroczystość w tym trybie wizualnie usuwa sekcje siatki:



Istnieją dwa wyniki trybu Transparency, w zależności od tego, czy MeshPart.Transparency jest ustawione na 0 czy co najmniej 0.02, chociaż precyzja numeryczna może spowodować, że małe wartości takie jak 0.01 uruchomią przezroczystość nieprzezroczystą.
- Gdy alfa jest używane do wycinania kształtu głównie nieprzezroczystych obiektów z ostrymi krawędziami, takich jak roślinność, koronki i siatki, ustaw MeshPart.Transparency na 0. Gdy części powierzchni są całkowicie nieprzezroczyste, silnik Roblox może je renderować z odpowiednią głębokością opartą na przesłanianiu. Powierzchnie nieprzezroczyste generalnie lepiej działają z efektami opartymi na głębokości, takimi jak DepthOfFieldEffect, załamanie szkła i odbicie wody.
- Gdy alfa jest używane do dodawania detali do półprzezroczystych obiektów lub obiektów z gładkimi gradientami przezroczystości, ustaw MeshPart.Transparency na co najmniej 0.02. To poprawia jakość mieszania dla obiektów takich jak brudne okna i pióra z miękkimi krawędziami, ale nie będzie działać we wszystkich efektach.
Maska kolorów
Możesz użyć trybu Enum.AlphaMode.TintMask, aby zastosować tynkowanie SurfaceAppearance.Color w selektywnych obszarach powierzchni. Tynkowanie jest najsilniejsze tam, gdzie kanał alfa jest całkowicie widoczny i nie jest stosowane, gdzie kanał alfa jest przezroczysty.

Zabarwienie koloru
Możesz zastosować zabarwienie do swojej mapy kolorów, modyfikując właściwość SurfaceAppearance.Color. Zabarwienie nie wpływa na wydajność, a także możesz zaoszczędzić pamięć, ponownie wykorzystując jedną mapę kolorów z różnymi tynkami. Używaj tynkowania koloru, aby tworzyć dodatkowe tanie wariacje między teksturami PBR twojego MeshPart lub aby programowo modyfikować kolory powierzchni PBR w czasie rzeczywistym.



Zabarwienie SurfaceAppearance.Color działa jako mnożnik, więc ostateczny wygląd jest funkcją Color3 (kolor texela) razy SurfaceAppearance.Color. Oznacza to, że tworzenie twojej oryginalnej SurfaceAppearance.ColorMap w prawie białych odcieniach szarości tworzy najsilniejszy efekt zabarwienia, gdy ta właściwość jest stosowana.
Zabarwienie stosuje się tylko do SurfaceAppearance.ColorMap, a nie do MeshPart.Color. Możesz nadal używać kanałów alfa podczas stosowania przezroczystości.
Gdy SurfaceAppearance.AlphaMode jest ustawione na Overlay i obecny jest kanał alfa, ujawniany jest podstawowy kolor MeshPart.Color, a zabarwienie SurfaceAppearance.Color aplikuje się tylko do widocznej mapy kolorowej SurfaceAppearance.
Gdy SurfaceAppearance.AlphaMode jest ustawione na TintMask i obecny jest kanał alfa, kanał alfa kontroluje ilość zabarwienia SurfaceAppearance.Color. Zabarwienie jest najsilniejsze tam, gdzie kanał alfa jest całkowicie widoczny i nie jest stosowane tam, gdzie kanał alfa jest przezroczysty.

Normalna
Normalna, lub powierzchniowa, mapa dodaje głębokość tekstury do twojej powierzchni i zachowuje się podobnie jak mapa wysokości. W rezultacie efekt może zanikać lub intensyfikować się w zależności od kąta widzenia i środowiska oświetleniowego. Gdy mapa normalna nie jest obecna, wartość jest ustawiana na 0.0.
W poniższej ilustracji możesz przełączać się między odniesieniem siatki a odniesieniem mapy w celu porównań wartości mapy normalnej:



Kanały R, G i B obrazu odpowiadają kolejno komponentom X, Y i Z lokalnego wektora powierzchni. Jednolity obraz w kolorze [127, 127, 255] przekształca się w całkowicie płaską mapę normalną. Roblox obsługuje tylko OpenGL format - Tangent Space mapy normalne.
Mapy normalne wyraźnie wpływają na wizualną powierzchnię siatki i mogą podkreślać nieestetyczne szwy w twojej teksturze. Kiedy tylko to możliwe, ukrywaj szwy tekstur, aby uniknąć problemów wizualnych z siatką.
Chropowatość
Chropowatość, albo mikropowierzchnia, mapy określają, jak światło jest rozpraszane na powierzchni twojego modelu. Gdy chropowatość wynosi 0.0, powierzchnia nie rozprasza światła wcale, co skutkuje znacznie ostrzejszym i jaśniejszym odblaskiem i połyskiem na materiale. Przy wartości 1.0, światło i odblaski równomiernie rozpraszają się po modelu, co skutkuje mniej refleksyjną matową powierzchnią.
Chropowatość może wpływać na to, jak refleksyjny jest obiekt pod różnymi kątami, nazywane to efektem Fresnela. Zobacz fresnel dla więcej szczegółów oraz najlepszych praktyk dotyczących utrzymania spójnego zachowania odblaskowego.
Poniższa ilustracja pokazuje porównania różnych wartości mapy chropowatości:



Fresnel
Fresnel odnosi się do ilości odbicia powierzchni w odniesieniu do obecnego kąta widzenia. Procesowanie Fresnela w Studio ma na celu fizyczną dokładność rzeczywistego świata, chociaż możesz uzyskać nieoczekiwany wkład spekularny pod pewnymi kątami, nawet przy chropowatych powierzchniach. W niektórych przypadkach możesz skompensować, czyniąc swoją mapę chropowatości mniej więcej 0.1 bardziej chropowatą, aby uzyskać spójną odpowiedź oświetlenia z materiałami.
Mimo że Roblox dokładnie renderuje ten efekt oświetlenia, jasność i refleksyjność powierzchni mogą nie reagować spójnie między oprogramowaniem do tworzenia treści tekstur, takim jak Substance Painter, a Studio. Zobacz przykłady odzieży dla różnic w renderowaniu pomiędzy aplikacjami.
Metaliczność
Metaliczność określa refleksyjność powierzchni. Wartości metaliczności wahają się od 0.0 do 1.0. Roblox ustawia wartość domyślną na 0.0, jeśli mapa metaliczności jest nieobecna.
Zobacz poniższą ilustrację dla porównań różnych wartości mapy metaliczności:



Różne renderery PBR używają różnych przepływów pracy do przetwarzania refleksyjności. Studio korzysta tylko z przepływu pracy metaliczności, który określa, czy materiał jest niemateriałowy, czy metalowy, czasami określany jako izolator lub przewodnik.
W większości przypadków powinieneś ustawić tę wartość na 0.0 (niemateriałowy) lub 1.0 (metalowy). Możesz używać częściowych wartości metalicznych podczas tworzenia mniej powszechnych powierzchni o umiarkowanych właściwościach refleksyjnych, takich jak satyna czy jedwab. Ta praktyka może subtelnie oszukiwać odbicia w materiale, aby podkreślić kolor z mapy kolorów/albedo nad kolorami odbitymi w otoczeniu.

