Fizycznie Poprawne Renderowanie (PBR) pozwala na realistyczne odwzorowanie cieni i oświetlenia za pomocą 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 wzbogacić wizualne elementy twoich zasobów i otoczenia.


Dostępne są różne aplikacje i w przepływach pracy do tworzenia tekstur PBR. Możesz z nich skorzystać w fazach modelowania i teksturowania podczas tworzenia niestandardowych obiektów 3D, pod warunkiem, że Roblox Studio obsługuje konkretne mapy tekstur, które używasz.
Ten przewodnik zawiera instrukcje dotyczące konfigurowania obiektów siatkowych w celu używania map tekstur PBR oraz opisuje typowe przypadki użycia i najlepsze praktyki dla wspieranych przez Roblox map tekstur PBR map tekstur. Gdy tworzysz własne powierzchnie, zapoznaj się z odniesieniami materiałowymi zawierającymi wspólne wartości materiałów, 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 nadpisuje oryginalnie przypisaną teksturę. Zazwyczaj nie możesz zmieniać właściwości SurfaceAppearance za pomocą skryptów w trakcie gry, ponieważ silnik wymaga pewnych wstępnych przetworzeń, aby wyświetlić te grafiki. Podobnie jak w przypadku dodawania podstawowej tekstury, każda mapa obrazu tekstury musi wskazywać na odpowiedni przesłany identyfikator aktywów obrazu.
Aby włączyć wygląd powierzchni dla MeshPart:
W oknie Eksplorator najedź myszką 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 aktywów.
Mapy tekstur
Studio obecnie obsługuje 5 typów map tekstur PBR: kolor, normalny, chropowatość, metaliczność i emisyjny. Każda z tych map odpowiada ważnemu aspektowi wyglądu powierzchni obiektu. Mapy tekstur zmieniają wyłącznie wygląd wizualny i nie wpływają na geometrię obiektu MeshPart.
Zobacz następujące przykłady, aby uzyskać przegląd wspieranych przez Roblox map tekstur i dodatkowych zasobów:
Właściwość ColorMap ustawia dane kolorystyczne powierzchni, w tym przejrzystość 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 kolorystycznych, z minimalną ilością informacji o oświetleniu lub fakturze. Dla dodatkowej personalizacji możesz także dodać przezroczystość do swojej tekstury albedo, dodając przezroczystość do mapy obrazu.
Tryby alfa
Dla obiektów wymagających częściowych lub całkowitych sekcji przezroczystości, takich jak trawa, liście, koronki czy dekory, takie jak brud czy zniszczone, możesz użyć różnych trybów alfa, aby zastosować przezroczystość do swojej mapy kolorystycznej. Jeśli format obrazu mapy kolorowej obsługuje kanały alfa, możesz zastosować mapę alfa w odcieniach szarości, gdzie 0.0 jest przezroczyste, a 1.0 nieprzezroczyste. Podobnie, korzystając z formatu obrazu, takiego jak .png, każda przezroczystość na mapie kolorów będzie stosowana jako przezroczystość na aktywie.
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 odsłaniają podstawowy kolor siatki wszędzie, gdzie występuje przezroczystość. Jest to domyślne ustawienie.
- Przezroczystość — Usuwa widoczną siatkę na podstawie przezroczystości w ColorMap. To renderuje siatkę jako przezroczystą i nie odsłania oryginalnego koloru siatki, gdy występuje przezroczystość.
Nieprzezroczysty
Możesz użyć trybu Enum.AlphaMode.Opaque, aby całkowicie zignorować kanał alfa ColorMap. W takim przypadku wartość alfa jest zakładana jako 1 (w pełni nieprzezroczysta).
Następujący 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 odsłonić sekcje oryginalnego koloru siatki. Ponieważ przezroczyste obszary mapy kolorów odsłaniają kolor podłoża, możesz zaprojektować unikalną mapę tekstury, która częściowo lub całkowicie odsłania właściwość koloru Color dla niestandardowych odcieni skóry lub innych sytuacji z unikalnymi kolorami.
Następujący przykład demonstruje, jak działa tryb Overlay, używając niebieskiej kuli jako odniesienia:
Następujący przykład korzysta z trybu Overlay dla niestandardowych postaci, odsłaniając oryginalny odcień skóry postaci:


Zobacz niestandardowy odcień skóry w celu uzyskania dodatkowych szczegółów na temat optymalizacji nakładki dla skóry i podobnych zastosowań.
Przezroczystość
Możesz użyć trybu Enum.AlphaMode.Transparency, aby tworzyć złożone lub bardzo drobne obiekty, takie jak koronki czy siatki, poprzez usuwanie widocznych części siatki jako alternatywy dla modelowania geometrii siatki. Ponieważ nie wpływa to na geometrię obiektu siatki, można tworzyć szczegółowe obiekty bez wpływu wydajności złożonego modelu siatki.
Następujący przykład demonstruje, jak częściowa i pełna przezroczystość w tym trybie wizualnie usuwa sekcje siatki:



Są dwa rezultaty trybu Transparency, w zależności od tego, czy MeshPart.Transparency jest ustawiony na 0 czy przynajmniej 0.02, chociaż precyzja numeryczna może spowodować, że małe wartości, takie jak 0.01, uruchomią nieprzezroczystość.
- Kiedy alfa jest używane do wycinania kształtu głównie nieprzezroczystych obiektów z ostrymi krawędziami, takich jak roślinność, koronka i siatka, ustaw MeshPart.Transparency na 0. Gdy części powierzchni są całkowicie nieprzezroczyste, silnik Roblox może je renderować z odpowiednią głębokościową okluzją. Powierzchnie nieprzezroczyste zazwyczaj lepiej działają również z efektami opartymi na głębokości, takimi jak DepthOfFieldEffect, refrakcją szkła i wody oraz refleksją wody.
- Kiedy 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 przynajmniej 0.02. To poprawia jakość mieszania dla obiektów, takich jak brudne okna i pióra z miękkimi krawędziami, ale nie zadział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, gdy kanał alfa jest w pełni 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ść i możesz zaoszczędzić pamięć, ponownie używając jednej mapy kolorów z różnymi zabarwieniami. Użyj zabarwienia kolorów, aby stworzyć dodatkowe niskokosztowe wariacje między twoimi 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) pomnożoną przez SurfaceAppearance.Color. Oznacza to, że tworzenie twojej oryginalnej SurfaceAppearance.ColorMap w kolorach bliskich białemu w szarości może stworzyć najsilniejszy efekt zabarwienia, gdy ta właściwość zostanie zastosowana.
Zabarwienie stosuje się tylko do SurfaceAppearance.ColorMap, a nie do MeshPart.Color. Możesz nadal używać kanałów alfa przy stosowaniu przezroczystości.
Gdy SurfaceAppearance.AlphaMode jest ustawione na Overlay i obecny jest kanał alfa, odsłonięty zostaje odcień 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, gdy kanał alfa jest w pełni widoczny i nie jest stosowane tam, gdzie kanał alfa jest przezroczysty.

Normalny
Normalny, lub powierzchniowy, mapa dodaje głębię tekstury do twojej powierzchni i działa podobnie do mapy wysokości. W rezultacie efekt może zanikać lub wzrastać w zależności od kąta widzenia i otoczenia oświetleniowego.
W następującym przykładzie możesz przełączać się między odniesieniem do siatki a odniesieniem do 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 normalne mapy OpenGL format - Tangent Space.
Mapy normalne wyraźnie wpływają na wizualną powierzchnię siatki i mogą uwydatniać niechciane szwy w twojej teksturze. Zawsze, gdy to możliwe, chroń szwy tekstury, aby uniknąć problemów wizualnych z siatką.
Chropowatość
Chropowatość, lub mikropowierzchnia, mapy określają, jak światło jest rozprzestrzeniane 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 błyskiem na twoim materiale. Przy 100% światło i odbicia równomiernie rozpraszają się po modelu, skutkując mniej odbijającą, matową powierzchnią.
Następujący przykład 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, nazywanym efektem Fresnela. Przetwarzanie fresnel w Studio dąży do fizyczniej dokładność w świecie rzeczywistym, chociaż możesz spodziewać się nieoczekiwanych wkładów spekulacyjnych pod pewnymi kątami, nawet w przypadku chropowatych powierzchni. W niektórych przypadkach możesz to skompensować, zwiększając wartość mapy chropowatości o około 0.1, aby osiągnąć spójną odpowiedź świetlną z twoimi materiałami.
Mimo że Roblox dokładnie renderuje ten efekt oświetleniowy, jasność i odbijalność powierzchni mogą nie reagować konsekwentnie w porównaniu z twoim oprogramowaniem do tworzenia zawartości tekstur, takim jak Substance Painter, i Studio. Zobacz przykłady odzieży dla 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% (niematerialny) lub 100% (metal), chociaż możesz używać wartości częściowej metaliczności podczas tworzenia powierzchni ze umiarkowanymi właściwościami odbijającymi, takimi jak satyna czy jedwab. Ta praktyka może subtelnie imituje odbicia w materiale, aby uwydatnić kolor z mapy kolorów/albedo nad kolorami odbitymi w otoczeniu.
Zobacz poniższy przykład dla porównań różnych wartości map metaliczności:



Różne renderery PBR używają różnych przepływów pracy do przetwarzania odbijalności. Studio używa tylko metaliczności przepływ, który określa, czy materiał jest niematerialny czy metalizowany, czasami nazywany izolatorem lub przewodnikiem.
Maska emisyjna
Tekstura EmissiveMaskContent w odcieniach szarości stosuje maskę emisyjną na powierzchni. Dzięki temu możesz użyć tekstury do kontrolowania emisyjności, oferując większą kontrolę artystyczną niż materiał Neon w trybie wszystko lub nic i pozwalając na tworzenie szczegółowych efektów świecących, takich jak oświetlony tekst, futurystyczna zbroja czy bioluminescencyjne stworzenia.
Powiązana właściwość EmissiveTint określa kolor zabarwienia dla wkładu emisyjnego, a EmissiveStrength określa siłę wkładu emisyjnego.







