Renderowanie Fizyczne (PBR) pozwala na reprezentowanie realistycznego cieniowania i oświetlenia za pomocą różnych typów obrazów tekstur, zwanych mapami, na jednym obiekcie. Łączenie wielu map tekstur może dokładniej symulować kolor, chropowatość i refleksyjność w dowolnym otoczeniu oświetleniowym i może wzbogacić wizualne elementy 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, pod warunkiem, że Roblox Studio obsługuje konkretne mapy tekstur, których używasz.
Ten podręcznik zawiera instrukcje dotyczące konfigurowania obiektów siatki do używania map tekstur PBR oraz opisuje typowe przypadki użycia i najlepsze praktyki dla obsługiwanych przez Roblox PBR map tekstur. Tworząc własne powierzchnie, zapoznaj się z odniesieniami materiałowymi dotyczącymi wspólnych wartości materiałów, porównań obrazów i przykładów odzieży.
Włącz wygląd powierzchni
Możesz dodać tekstury PBR do dowolnej MeshPart, dodając obiekt SurfaceAppearance, który nadpisuje oryginalnie przypisaną teksturę. Ogólnie rzecz biorąc, nie możesz modyfikować właściwości SurfaceAppearance za pomocą skryptów podczas doświadczenia, ponieważ silnik wymaga pewnego przetwarzania wstępnego, aby wyświetlić te grafiki. Podobnie jak w przypadku dodawania podstawowej tekstury, każda mapa obrazu tekstury musi wskazywać na odpowiedni przesłany 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.

Kiedy 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 typy map tekstur PBR: kolor, normalną, chropowatość oraz metaliczność. Każda z tych map odpowiada ważnemu aspektowi wyglądu powierzchni obiektu. Mapy tekstur zmieniają tylko wygląd wizualny 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) w celu uzyskania dodatkowych informacji.



Kolor (albedo)
Mapa koloru, lub albedo, określa kolor twojej tekstury i składa się głównie z informacji o kolorze z niewielką lub żadną informacją o oświetleniu czy teksturze. Dla dodatkowej personalizacji, możesz również dodać przezroczystość do swojej tekstury 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, koronki czy naklejki jak brud czy grunge, możesz używać różnych trybów alfa, aby zastosować przezroczystość do swojej mapy kolorów. Jeśli format obrazu twojej mapy kolorowej obsługuje kanały alfa, możesz zastosować mapę alfa w skali szarości, gdzie 0.0 jest przezroczysty, a 1.0 jest nieprzezroczysty. Podobnie, używając formatu obrazu takiego jak .png, każda przezroczystość na mapie kolorów będzie zastosowana 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 używa wartości koloru bezpośrednio z mapy kolorów.
- Nakładka — Nakłada ColorMap na właściwość MeshPart.Color znajdującą się poniżej. Mapy kolorów stosujące tryb nakładki ujawniają podstawowy kolor siatki tam, gdzie obecna jest przezroczystość. To jest domyślne ustawienie.
- Przezroczystość — Usuwa widoczną siatkę na podstawie przezroczystości w ColorMap. To renderuje siatkę przezroczystą i nie ujawnia oryginalnego koloru siatki, gdy obecna jest przezroczystość.
Nieprzezroczysty
Możesz użyć trybu Enum.AlphaMode.Opaque, aby całkowicie zignorować kanał alfa ColorMap. W tym przypadku zakłada się, że wartość alfa wynosi 1 (całkowicie nieprzezroczysty).
Poniższy przykład demonstruje, jak działa tryb Opaque przy użyciu białego obiektu jako odniesienia:


Nakładka
Możesz użyć Enum.AlphaMode.Overlay, aby ujawnić sekcje oryginalnego koloru siatki. Ponieważ przezroczyste obszary mapy kolorów eksponują kolor pod spodem, możesz zaprojektować unikalną mapę tekstury, która częściowo lub całkowicie ujawnia właściwość Color siatki dla unikalnych tonów skóry lub innych sytuacji z unikalnymi kolorami.
Poniższy przykład demonstruje, jak działa tryb Overlay przy użyciu odniesienia do białej kuli:


Poniższy przykład pokazuje użycie trybu Overlay dla niestandardowych postaci, ujawniając oryginalny kolor skóry postaci:


Zobacz niestandardowy odcień skóry dla dodatkowych szczegółów na temat optymalizacji nakładki na potrzeby skóry i podobnych zastosowań.
Przezroczystość
Możesz użyć trybu Enum.AlphaMode.Transparency, aby stworzyć złożone lub bardzo drobne obiekty, takie jak koronki czy siateczki, usuwając widoczne części siatki jako alternatywę dla modelowania geometrii siatki. Ponieważ nie wpływa to na geometrię obiektu siatki, pozwala na tworzenie szczegółowych obiektów bez wpływu na wydajność złożonego modelu siatki.
Poniższy przykład pokazuje, jak częściowa i całkowita przezroczystość w tym trybie wizualnie eliminuje sekcje siatki:



Zachowanie trybu Transparency zależy od tego, czy MeshPart.Transparency jest ustawiony na 0 czy co najmniej 0.02, chociaż dokładność numeryczna może spowodować, że małe wartości takie jak 0.01 spowodują wydanie przezroczystości.
- Gdy alfa jest używana do wycinania kształtu w większości nieprzezroczystych obiektów z ostrymi krawędziami, takich jak roślinność, koronkowa tkanina i siateczki, ustaw MeshPart.Transparency na 0. Gdy części powierzchni są całkowicie nieprzezroczne, silnik Roblox może je renderować z odpowiednią głębokością opartą na przesłonięciu. Powierzchnie nieprzezroczne zazwyczaj działają lepiej z efektami zależnymi od głębokości, takimi jak DepthOfFieldEffect, refrakcja szkła i woda oraz odbicia wody.
- Gdy alfa jest używana 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 takich obiektów jak brudne okna i pióra o miękkich krawędziach, ale nie zadziała przy wszystkich efektach.
Maskowanie Koloru
Możesz użyć trybu Enum.AlphaMode.TintMask, aby zastosować barwienie SurfaceAppearance.Color do wybranych obszarów powierzchni. Barwienie jest najsilniejsze tam, gdzie kanał alfa jest w pełni widoczny, a nie stosowane tam, gdzie kanał alfa jest przezroczysty.

Barwienie koloru
Możesz zastosować barwienie do swojej mapy kolorów, modyfikując właściwość SurfaceAppearance.Color. Barwienie nie wpływa na wydajność, a możesz zaoszczędzić pamięć, ponownie używając jednej mapy kolorów z różnymi barwami. Użyj barwienia koloru, aby stworzyć dodatkowe wariacje przy niskich kosztach między twoimi teksturami PBR MeshPart lub aby programowo modyfikować kolory powierzchni PBR w czasie rzeczywistym.



Barwienie SurfaceAppearance.Color działa jako mnożnik, więc ostateczny wygląd jest funkcją Color3 (kolor texela) pomnożonego przez SurfaceAppearance.Color. Oznacza to, że tworzenie oryginalnej SurfaceAppearance.ColorMap w kolorach bliskich bieli w odcieniach szarości tworzy najsilniejszy efekt barwienia, gdy ta właściwość jest stosowana.
Barwienie 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 kanał alfa jest obecny, ujawnia się podstawowy MeshPart.Color, a barwienie SurfaceAppearance.Color stosowane jest tylko do widocznej mapy kolorów SurfaceAppearance.
Gdy SurfaceAppearance.AlphaMode jest ustawione na TintMask i kanał alfa jest obecny, kanał alfa kontroluje ilość barwienia SurfaceAppearance.Color. Barwienie jest najsilniejsze tam, gdzie kanał alfa jest w pełni widoczny, a nie stosowane tam, gdzie kanał alfa jest przezroczysty.

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



Kanały R, G i B obrazu odpowiadają odpowiednio komponentom X, Y i Z lokalnego wektora powierzchni. Jednolity obraz koloru [127, 127, 255] przekłada się na całkowicie płaską mapę normalną. Roblox obsługuje tylko mapy normalne formatu OpenGL - Tangent Space.
Mapy normalne wyraźnie wpływają na wizualną powierzchnię siatki i mogą uwydatniać niewygodne szwy w twojej teksturze. Kiedy to możliwe, trzymaj szwy tekstur z dala od widoku, aby uniknąć problemów wizualnych z twoją siatką.
Chropowatość
Mapy chropowatości, lub mikropowierzchni, określają, jak światło jest rozprzestrzeniane po powierzchni twojego modelu. Gdy chropowatość wynosi 0.0, powierzchnia w ogóle nie rozprasza światła, co skutkuje ostrzejszym i jaśniejszym odbiciem oraz blaskiem na twoim materiale. Przy 1.0 światło i odbicia równomiernie rozpraszają się po modelu, co skutkuje mniej odbijającą matową powierzchnią.
Chropowatość może wpłynąć na to, jak odbijający jest obiekt pod różnymi kątami, co nazywa się efektem Fresnela. Zobacz fresnel dla więcej informacji oraz najlepszych praktyk, aby utrzymać spójne odzwierciedlenie światła.
Poniższa figura pokazuje porównania różnych wartości mapy chropowatości:



Fresnel
Fresnel odnosi się do ilości odbicia powierzchni w odniesieniu do aktualnego kąta widzenia. Przetwarzanie Fresnela w Studio dąży do fizycznej precyzji w rzeczywistym świecie, chociaż możesz uzyskać niespodziewany wkład spekularny pod pewnymi kątami, nawet na chropowatych powierzchniach. W niektórych przypadkach możesz skompensować to, sprawiając, że twoja mapa chropowatości będzie o około 0.1 bardziej chropowata, aby uzyskać spójne odpowiedzi na oświetlenie z twoimi materiałami.
Chociaż Roblox dokładnie renderuje ten efekt oświetleniowy, jasność i odbijalność powierzchni mogą nie reagować spójnie między twoim oprogramowaniem do tworzenia zawartości tekstur, takim jak Substance Painter, a Studio. Zobacz przykłady ubrań dla różnic w renderowaniu między aplikacjami.
Metaliczność
Metaliczność określa odbijalność powierzchni. Wartości metaliczności wahają się od 0.0 do 1.0. Roblox ustawia domyślną wartość na 0.0, jeśli mapa metaliczności nie jest obecna.
Zobacz poniższą figurę dla porównań różnych wartości mapy metaliczności:



Różne rendery PBR wykorzystują różne przepływy pracy do przetwarzania odbijalności. Studio używa tylko przepływu metalicznego, który określa, czy materiał jest niemataliczny, czy metaliczny, czasami nazywane izolatorem lub przewodnikiem.
W większości przypadków powinieneś ustawić tę wartość na 0.0 (niemataliczne) lub 1.0 (metaliczne). Możesz używać częściowych wartości metaliczności, gdy tworzysz bardziej nietypowe powierzchnie o umiarkowanych właściwościach odbijających, jak satyna lub jedwab. Ta praktyka może subtelnie sfałszować odbicia w materiale, aby uwydatnić kolor z mapy koloru/albedo nad kolorami odbitymi w otoczeniu.

