物理基礎渲染 (PBR) 紋理允許您通過在單個物體上使用多種類型的紋理圖像或 圖層 來表示現實的陰影和光照。結合多個紋理圖可以更準確地模擬顏色、粗糙度和反射率,並可以增強您資產和環境的視覺元素。


有多種應用和工作流程可用於創建 PBR 紋理。您可以在自定義 3D 物體創建的建模和紋理階段使用這些紋理,前提是 Roblox Studio 支持 您正在使用的特定紋理圖。
本指南提供了有關 設置 您的網格物體以使用 PBR 紋理圖的說明,並描述了 Roblox 支持的 PBR 紋理圖 的常見用例和最佳實踐。創建您自己的表面時,請參見 材料參考 以獲取常見材料值、圖像比較和服裝示例。
啟用表面外觀
您可以通過添加 SurfaceAppearance 對象來將 PBR 紋理添加到任何 MeshPart,該對象會覆蓋原始分配的紋理。一般來說,您無法在遊戲中通過腳本修改 SurfaceAppearance 屬性,因為引擎需要一些預處理來顯示這些圖形。與添加基本紋理類似,每個紋理圖像圖層必須指向適當的上傳圖像資產 ID。
要為 MeshPart 啟用表面外觀:
在 資源管理器 窗口中,將鼠標懸停在 MeshPart 上,然後單擊 ⊕ 按鈕。
紋理圖
Studio 目前支持 5 種 PBR 紋理圖:顏色、法線、粗糙度、金屬度 和 發光。這些圖層中的每一個都對物體的表面外觀的某個重要方面負責。紋理圖僅改變視覺外觀,並不影響 MeshPart 物體的幾何形狀。
請參見以下示例,以獲取 Roblox 支持的紋理圖的概述和其他資源:
ColorMap 屬性設置表面的顏色數據,包括圖層中存在的任何透明度。請參見 顏色 (albedo) 獲取更多信息。



顏色 (albedo)
顏色,或 albedo,圖層決定了您的紋理顏色,並主要由顏色信息組成,幾乎沒有光照或紋理信息。為了進一步自定義,您還可以通過在您的 albedo 紋理中添加不透明度來添加 透明度。
Alpha 模式
對於需要部分或完全透明的物體,例如草、葉子、蕾絲或污垢或污漬等貼紙,您可以使用各種 alpha 模式 將透明度應用於您的顏色圖層。如果您的顏色圖層圖像格式支持 alpha 通道,您可以應用灰度 alpha 圖層,其中 0.0 是透明的,1.0 是不透明的。類似地,當使用像 .png 這樣的圖像格式時,顏色圖層上的任何不透明度都會作為資產上的透明度應用。
您可以通過設置以下 AlphaMode 值來以兩種不同的行為應用透明度:
- 透明度 — 根據 ColorMap 中的透明度移除可見的網格。這使網格變得透明,並在透明度存在時不顯示原始網格顏色。
不透明
您可以使用 Enum.AlphaMode.Opaque 模式來完全忽略 ColorMap 的 alpha 通道。在這種情況下,alpha 值被假定為 1(完全不透明)。
以下示例演示了 Opaque 模式如何使用藍色物體作為參考:
覆蓋
您可以使用 Enum.AlphaMode.Overlay 來顯示網格原始顏色的部分區域。由於顏色圖層的透明區域暴露了底層顏色,您可以設計一個獨特的紋理圖層,部分或完全顯示網格的 Color 屬性,以便用於自定義膚色或其他具有獨特顏色的情況。
以下示例演示了 Overlay 模式如何使用淺藍色球體作為參考:
以下示例使用 Overlay 模式來顯示自定義角色,顯示角色的原始膚色:


有關優化皮膚和類似應用的覆蓋的更多詳細信息,請參見 自定義膚色。
透明度
您可以使用 Enum.AlphaMode.Transparency 模式來創建複雜或極其精細的物體,例如蕾絲或網狀物,通過移除網格的可見部分作為雕刻網格幾何形狀的替代方案。由於這不會影響網格物體的幾何形狀,因此可以讓您創建詳細的物體,而不會對複雜的網格模型造成性能影響。
以下示例演示了在此模式下部分和完全透明度如何在視覺上移除網格的部分:



Transparency 模式有兩種結果,取決於 MeshPart.Transparency 是否設置為 0 或 至少 0.02,儘管數值精度可能導致小值(如 0.01)觸發不透明透明度。
- 當 alpha 用於切割大多數不透明物體的形狀,並且邊緣清晰,例如葉子、蕾絲布和網狀物時,將 MeshPart.Transparency 設置為 0。當表面的某些部分完全不透明時,Roblox 引擎可以正確渲染它們,並且不透明表面通常在基於深度的效果(如 DepthOfFieldEffect)、玻璃和水折射以及水反射方面效果更好。
- 當 alpha 用於為半透明物體或具有平滑透明度漸變的物體添加細節時,將 MeshPart.Transparency 設置為 至少 0.02。這提高了對於像髒窗戶和柔邊羽毛等物體的混合質量,但不會對所有效果有效。
色調面具
您可以使用 Enum.AlphaMode.TintMask 模式將 SurfaceAppearance.Color 色調應用於表面的選定區域。色調在 alpha 通道完全可見的地方最強,並且在 alpha 通道透明的地方不應用。

顏色著色
您可以通過修改 SurfaceAppearance.Color 屬性來對顏色圖層應用色調。著色不會影響性能,您可以通過重複使用單一顏色圖層並使用不同的色調來節省內存。使用顏色著色來在您的 MeshPart PBR 紋理之間創建額外的低成本變化,或在實時中以編程方式修改您的 PBR 表面顏色。
SurfaceAppearance.Color 著色作為乘數應用,因此最終外觀是 Color3(紋理顏色)乘以 SurfaceAppearance.Color 的函數。這意味著在接近白色的灰度顏色中創建原始的 SurfaceAppearance.ColorMap 會在應用此屬性時產生最強的著色效果。
著色僅適用於 SurfaceAppearance.ColorMap,而不適用於 MeshPart.Color。在應用 透明度 時,您可以繼續使用 alpha 通道。
當 SurfaceAppearance.AlphaMode 設置為 Overlay 且存在 alpha 通道時,底層的 MeshPart.Color 會顯示出來,並且 SurfaceAppearance.Color 著色僅適用於可見的 SurfaceAppearance 顏色圖層。
當 SurfaceAppearance.AlphaMode 設置為 TintMask 且存在 alpha 通道時,alpha 通道控制 SurfaceAppearance.Color 著色的量。色調在 alpha 通道完全可見的地方最強,並且在 alpha 通道透明的地方不應用。

法線
法線,或 表面,圖層為您的表面添加了紋理深度,並且行為類似於 高度圖。因此,效果可能會根據觀察角度和光照環境而淡化或加強。
在以下圖中,您可以在網格參考和圖層參考之間切換,以比較法線圖層值:



圖像的 R、G 和 B 通道分別對應於局部表面向量的 X、Y 和 Z 分量。顏色為 [127, 127, 255] 的均勻圖像轉換為完全平坦的法線圖層。Roblox 只支持 OpenGL 格式 - 切線空間 法線圖層。
法線圖層顯著影響網格的視覺表面,並且可以強調紋理中的尷尬接縫。盡可能保持紋理接縫隱藏,以避免網格的視覺問題。
粗糙度
粗糙度,或 微表面,圖層決定了光線如何在模型的表面上散佈。當粗糙度為 0% 時,表面根本不散射光線,導致材料的反射和光澤度更尖銳和明亮。在 100% 時,光線和反射均勻地散佈在模型上,導致表面呈現較少反射的啞光效果。
以下圖顯示了各種粗糙度圖層值的比較:



粗糙度可能會影響物體在不同角度的反射性,這被稱為 菲涅耳 效應。Studio 的菲涅耳處理旨在實現物理現實的準確性,儘管即使在粗糙表面上,您也可能在某些角度獲得意外的鏡面貢獻。在某些情況下,您可以通過將粗糙度圖層值增加約 0.1 來補償,以實現與材料的一致光照響應。
儘管 Roblox 準確渲染此光照效果,但表面的亮度和反射性可能在您的紋理內容創建軟件(如 Substance Painter)和 Studio 之間不會一致響應。請參見 服裝示例 以獲取應用程序之間渲染的差異。
金屬度
金屬度 決定了表面的反射性。在大多數情況下,您應該將此值設置為 0%(非金屬)或 100%(金屬),儘管在創建具有中等反射性質的表面(如緞面或絲綢)時,您可以使用部分金屬度值。這種做法可以微妙地偽造材料中的反射,以突出來自 顏色/albedo 圖層 的顏色,而不是環境中反射的顏色。
請參見以下圖以比較各種金屬度圖層值:



不同的 PBR 渲染器使用不同的工作流程來處理反射性。Studio 僅使用 金屬度工作流程,該工作流程決定材料是 非金屬 還是 金屬,有時稱為 絕緣體 或 導體。
發光面具
灰度的 EmissiveMaskContent 內容紋理在表面上應用 發光面具。這使您可以使用紋理來控制發光性,提供比全有或全無的 Neon 材料更具藝術性的控制,並允許您創建詳細的發光效果,例如發光文本、未來主義盔甲或生物發光生物。
相關的 EmissiveTint 屬性決定了發光貢獻的著色顏色,而 EmissiveStrength 決定了發光貢獻的強度。











