Renderowanie oparte na fizyce (PBR) pozwala na realistyczne odwzorowanie cieni i oświetlenia poprzez użycie wielu typów obrazów tekstur, zwanych mapami, na jednym obiekcie. Łączenie wielu map tekstur może dokładniej symulować kolor, chropowatość i odbicie w dowolnym środowisku oświetleniowym oraz może poprawić wizualne elementy twoich zasobów i otoczenia.


Istnieje wiele aplikacji i przepływów pracy dostępnych 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 przewodnik 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 map tekstur PBR map tekstur. Tworząc własne powierzchnie, zapoznaj się z odniesieniami materiałowymi w celu uzyskania 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 dowolnego 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 gry, ponieważ silnik wymaga pewnego wstępnego przetwarzania, 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.

Gdy będziesz gotowy, aby dodać mapy 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 5 typów map tekstur PBR: kolor, normalna, chropowatość, metaliczność i emisyjna. 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ść obecną w mapie. Zobacz kolor (albedo) w celu uzyskania dodatkowych informacji.



Kolor (albedo)
Kolor, lub albedo, mapa określa kolor twojej tekstury i składa się głównie z informacji o kolorze z niewielką ilością informacji o oświetleniu lub teksturze. 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, koronki lub naklejki, takie jak brud lub grunge, możesz użyć 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 przezroczyste, a 1.0 jest nieprzezroczyste. Podobnie, gdy używasz formatu obrazu takiego jak .png, wszelka przezroczystość na mapie kolorów stosuje się 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 kolor MeshPart.Color pod spodem. Mapy kolorów używające trybu nakładki ujawniają podstawowy kolor siatki wszędzie tam, gdzie obecna jest przezroczystość. To jest ustawienie domyślne.
- 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 takim przypadku wartość alfa jest przyjmowana jako 1 (całkowicie nieprzezroczysta).
Poniższy przykład demonstruje, jak działa tryb Opaque, używając niebieskiego obiektu jako odniesienia:
Nakładka
Możesz użyć Enum.AlphaMode.Overlay, aby ujawnić sekcje oryginalnego koloru siatki. Ponieważ przezroczyste obszary mapy kolorów odsłaniają kolor pod spodem, możesz zaprojektować unikalną mapę tekstur, która częściowo lub całkowicie ujawnia właściwość koloru Color dla niestandardowych odcieni skóry lub innych sytuacji z unikalnymi kolorami.
Poniższy przykład demonstruje, jak działa tryb Overlay, używając odniesienia do jasnoniebieskiej kuli:
Poniższy przykład używa trybu Overlay dla niestandardowych postaci, ujawniając oryginalny odcień skóry postaci:


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



Są dwa wyniki trybu Transparency, w zależności od tego, czy MeshPart.Transparency jest ustawione na 0 lub przynajmniej 0.02, chociaż precyzja numeryczna może spowodować, że małe wartości, takie jak 0.01, wyzwolą przezroczystość nieprzezroczystą.
- Gdy alfa jest używana do wycięcia 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 renderować je z odpowiednią głębokością. Powierzchnie nieprzezroczyste również zazwyczaj lepiej działają z efektami opartymi na głębokości, takimi jak DepthOfFieldEffect, refrakcja szkła i wody oraz odbicie 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 przynajmniej 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ć ze wszystkimi efektami.
Maska koloru
Możesz użyć trybu Enum.AlphaMode.TintMask, aby zastosować zabarwienie SurfaceAppearance.Color do wybranych obszarów powierzchni. Zabarwienie jest najsilniejsze tam, gdzie kanał alfa jest całkowicie widoczny i nie jest stosowane tam, 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 możesz zaoszczędzić pamięć, ponownie używając jednej mapy kolorów z różnymi zabarwieniami. Użyj zabarwienia koloru, aby stworzyć dodatkowe niskokosztowe wariacje między teksturami PBR 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 oryginalnej SurfaceAppearance.ColorMap w prawie białych kolorach w 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, ujawnia się podstawowy MeshPart.Color, a zabarwienie SurfaceAppearance.Color stosuje się tylko do widocznej mapy kolorów 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 do mapy wysokości. W rezultacie efekt może zanikać lub intensyfikować się w zależności od kąta widzenia i środowiska oświetleniowego.
Na poniższej ilustracji możesz przełączać się między odniesieniem siatki a odniesieniem mapy w celu porównania 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 format OpenGL - Tangent Space map normalnych.
Mapy normalne wyraźnie wpływają na wizualną powierzchnię siatki i mogą uwydatniać nieestetyczne szwy w twojej teksturze. Kiedy to możliwe, ukrywaj szwy tekstur, aby uniknąć problemów wizualnych z twoją siatką.
Chropowatość
Chropowatość, lub mikropowierzchnia, mapy określają, jak światło jest rozpraszane na powierzchni twojego modelu. Gdy chropowatość wynosi 0%, powierzchnia w ogóle nie rozprasza światła, co skutkuje znacznie ostrzejszym i jaśniejszym odbiciem oraz połyskiem na twoim materiale. Przy 100% światło i odbicia równomiernie rozpraszają się po modelu, co skutkuje mniej odbijającą matową powierzchnią.
Poniższa ilustracja pokazuje porównania różnych wartości mapy chropowatości:



Chropowatość może wpływać na to, jak odbijający jest obiekt pod różnymi kątami, co nazywane jest efektem Fresnela. Przetwarzanie fresnela w Studio dąży do fizycznej dokładności w rzeczywistym świecie, chociaż możesz uzyskać nieoczekiwany wkład spekularny pod pewnymi kątami, nawet przy chropowatych powierzchniach. W niektórych przypadkach możesz skompensować to, zwiększając wartość mapy chropowatości o około 0.1 bardziej chropowate, aby uzyskać spójną reakcję oświetleniową z twoimi materiałami.
Chociaż Roblox dokładnie renderuje ten efekt oświetleniowy, jasność i odbicie powierzchni mogą nie reagować spójnie między twoim oprogramowaniem do tworzenia treści tekstur, takim jak Substance Painter, a Studio. Zobacz przykłady odzieży w celu uzyskania różnic w renderowaniu między aplikacjami.
Metaliczność
Metaliczność określa odbijalność powierzchni. W większości przypadków powinieneś ustawić tę wartość na 0% (niemeta) lub 100% (metal), chociaż możesz używać częściowych wartości metaliczności podczas tworzenia powierzchni o umiarkowanych właściwościach odbijających, takich jak satyna lub jedwab. Ta praktyka może subtelnie oszukiwać odbicia w materiale, aby uwydatnić kolor z mapy kolorów/albedo nad kolorami odbitymi w otoczeniu.
Zobacz poniższą ilustrację, aby porównać różne wartości mapy metaliczności:



Różne renderery PBR używają różnych przepływów pracy do przetwarzania odbijalności. Studio używa tylko przepływu metaliczności, który określa, czy materiał jest niemeta czy metal, czasami nazywany izolatorem lub przewodnikiem.
Maska emisyjna
Tekstura w odcieniach szarości EmissiveMaskContent stosuje maskę emisyjną na powierzchni. Pozwala to na użycie tekstury do kontrolowania emisyjności dla większej kontroli artystycznej niż materiał Neon i pozwala na tworzenie szczegółowych efektów świetlnych, takich jak podświetlony tekst, futurystyczna zbroja lub bioluminescencyjne stworzenia.
Powiązana właściwość EmissiveTint określa kolor zabarwienia dla wkładu emisyjnego, a EmissiveStrength określa siłę wkładu emisyjnego.







