PBR 紋理

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

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

一個有著辮子的類人角色,穿著光澤外套、帶有貼紙的牛仔褲和靴子。
一個有著短髮的類人角色,穿著皮夾克、七分褲和橙色鞋子。

有多種應用和工作流程可用於創建 PBR 紋理。您可以在自定義 3D 物體創建的建模和紋理階段使用這些紋理,前提是 Roblox Studio 支持 您正在使用的特定紋理圖。

本指南提供了有關 設置 您的網格物體以使用 PBR 紋理圖的說明,並描述了 Roblox 支持的 PBR 紋理圖 的常見用例和最佳實踐。創建您自己的表面時,請參見 材料參考 以獲取常見材料值、圖像比較和服裝示例。

啟用表面外觀

您可以通過添加 SurfaceAppearance 對象來將 PBR 紋理添加到任何 MeshPart,該對象會覆蓋原始分配的紋理。一般來說,您無法在遊戲中通過腳本修改 SurfaceAppearance 屬性,因為引擎需要一些預處理來顯示這些圖形。與添加基本紋理類似,每個紋理圖像圖層必須指向適當的上傳圖像資產 ID。

要為 MeshPart 啟用表面外觀:

  1. 資源管理器 窗口中,將鼠標懸停在 MeshPart 上,然後單擊 ⊕ 按鈕。

  2. 從上下文菜單中插入 SurfaceAppearance

    在 Studio 的資源管理器窗口中,SurfaceAppearance 對象作為 MeshPart 的父對象。

    當您準備將紋理圖添加到 SurfaceAppearance 對象時,您可以單擊 屬性 窗口中的每個圖層屬性並輸入資產 ID。

紋理圖

Studio 目前支持 5 種 PBR 紋理圖:顏色法線粗糙度金屬度發光。這些圖層中的每一個都對物體的表面外觀的某個重要方面負責。紋理圖僅改變視覺外觀,並不影響 MeshPart 物體的幾何形狀。

請參見以下示例,以獲取 Roblox 支持的紋理圖的概述和其他資源:

ColorMap 屬性設置表面的顏色數據,包括圖層中存在的任何透明度。請參見 顏色 (albedo) 獲取更多信息。

一幅完全填充的圖像,主要是紅色,帶有各種黑色斑點和白色刮痕。
示例圖層
一個空白的白色球體,背景為深色。
示例網格
一個紅色球體,帶有黑色斑點和白色刮痕,背景為深色。
網格和紋理

顏色 (albedo)

顏色,或 albedo,圖層決定了您的紋理顏色,並主要由顏色信息組成,幾乎沒有光照或紋理信息。為了進一步自定義,您還可以通過在您的 albedo 紋理中添加不透明度來添加 透明度

Alpha 模式

對於需要部分或完全透明的物體,例如草、葉子、蕾絲或污垢或污漬等貼紙,您可以使用各種 alpha 模式 將透明度應用於您的顏色圖層。如果您的顏色圖層圖像格式支持 alpha 通道,您可以應用灰度 alpha 圖層,其中 0.0 是透明的,1.0 是不透明的。類似地,當使用像 .png 這樣的圖像格式時,顏色圖層上的任何不透明度都會作為資產上的透明度應用。

您可以通過設置以下 AlphaMode 值來以兩種不同的行為應用透明度:

  • 不透明 — 忽略 ColorMap 的 alpha 通道,並直接使用顏色圖層中的顏色值。
  • 覆蓋 — 將 ColorMap 覆蓋在底層網格的 MeshPart.Color 上。使用覆蓋模式的顏色圖層在透明度存在的地方顯示網格的基礎顏色。這是默認設置。
  • 透明度 — 根據 ColorMap 中的透明度移除可見的網格。這使網格變得透明,並在透明度存在時不顯示原始網格顏色。
  • 色調面具 — 將著色的 ColorMap 混合到未著色的 ColorMap 上。
不透明

您可以使用 Enum.AlphaMode.Opaque 模式來完全忽略 ColorMap 的 alpha 通道。在這種情況下,alpha 值被假定為 1(完全不透明)。

以下示例演示了 Opaque 模式如何使用藍色物體作為參考:

一種帶有透明度的圓點紋理。背景完全透明。
顏色/albedo 圖層帶有透明度
一個藍色球體在平面上。
示例網格物體
球體的表面上散佈著圓點圖案。透明度值被忽略。
AlphaMode 設置為 Opaque
覆蓋

您可以使用 Enum.AlphaMode.Overlay 來顯示網格原始顏色的部分區域。由於顏色圖層的透明區域暴露了底層顏色,您可以設計一個獨特的紋理圖層,部分或完全顯示網格的 Color 屬性,以便用於自定義膚色或其他具有獨特顏色的情況。

以下示例演示了 Overlay 模式如何使用淺藍色球體作為參考:

一幅完全填充的圖像,帶有小的淺藍色方塊的半重複圖案。背景為棋盤格以指示透明度。
顏色/albedo 圖層帶有透明度
一個空白的青色球體,背景為深色。
示例網格物體
一個白色球體,表面上散佈著小藍色方塊。
AlphaMode 設置為 Overlay

以下示例使用 Overlay 模式來顯示自定義角色,顯示角色的原始膚色:

一幅完全填充的圖像,顯示 3D 類人模型的紋理圖層。圖像的各個部分是棋盤格或部分棋盤格,以指示不同的透明度。
顏色圖層在某些區域包含透明度,以暴露原始網格顏色
四個相同的類人模型,具有不同的膚色:淺棕色、黑色、白色、深綠色。
使用 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 表面顏色。

一個帶有默認黃色色調和反射性翡翠屬性的雕像。
來自 The Mystery of Duvall Drive 的雕像網格,沒有著色。
一個帶有紅色色調的雕像,並繼續從其其他紋理圖層中具有光澤的反射性。
雕像網格,Color 設置為紅色。
一個帶有綠色色調的雕像,並繼續從其其他紋理圖層中具有光澤的反射性。
雕像網格,Color 設置為綠色。

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 通道透明的地方不應用。

一個漂浮的方形平面,帶有青色板岩紋理,從左側逐漸變為完全透明,右側為完全不透明。漂浮平面下方的細長橫條具有黑色到白色的漸變。
AlphaMode 設置為 Transparency。底部的灰度漸變條表示 alpha 值。MeshPart.Color 設置為紅色,SurfaceAppearance.Color 設置為青色。

法線

法線,或 表面,圖層為您的表面添加了紋理深度,並且行為類似於 高度圖。因此,效果可能會根據觀察角度和光照環境而淡化或加強。

在以下圖中,您可以在網格參考和圖層參考之間切換,以比較法線圖層值:

一個粘土顏色的光滑球體。
一個粘土顏色的球體,表面有中等的岩石感。
一個粘土顏色的球體,表面非常岩石感。

圖像的 RGB 通道分別對應於局部表面向量的 XYZ 分量。顏色為 [127, 127, 255] 的均勻圖像轉換為完全平坦的法線圖層。Roblox 只支持 OpenGL 格式 - 切線空間 法線圖層。

法線圖層顯著影響網格的視覺表面,並且可以強調紋理中的尷尬接縫。盡可能保持紋理接縫隱藏,以避免網格的視覺問題。

粗糙度

粗糙度,或 微表面,圖層決定了光線如何在模型的表面上散佈。當粗糙度為 0% 時,表面根本不散射光線,導致材料的反射和光澤度更尖銳和明亮。在 100% 時,光線和反射均勻地散佈在模型上,導致表面呈現較少反射的啞光效果。

以下圖顯示了各種粗糙度圖層值的比較:

一個藍色光澤球體。
0%
一個藍色半光澤球體。
50%
一個藍色啞光球體。
100%

粗糙度可能會影響物體在不同角度的反射性,這被稱為 菲涅耳 效應。Studio 的菲涅耳處理旨在實現物理現實的準確性,儘管即使在粗糙表面上,您也可能在某些角度獲得意外的鏡面貢獻。在某些情況下,您可以通過將粗糙度圖層值增加約 0.1 來補償,以實現與材料的一致光照響應。

儘管 Roblox 準確渲染此光照效果,但表面的亮度和反射性可能在您的紋理內容創建軟件(如 Substance Painter)和 Studio 之間不會一致響應。請參見 服裝示例 以獲取應用程序之間渲染的差異。

金屬度

金屬度 決定了表面的反射性。在大多數情況下,您應該將此值設置為 0%(非金屬)或 100%(金屬),儘管在創建具有中等反射性質的表面(如緞面或絲綢)時,您可以使用部分金屬度值。這種做法可以微妙地偽造材料中的反射,以突出來自 顏色/albedo 圖層 的顏色,而不是環境中反射的顏色。

請參見以下圖以比較各種金屬度圖層值:

一個帶有光斑的棕色球體。
0%
一個帶有光斑和一些反射性的棕色球體。
50%
一個帶有中等光斑和大量反射性的棕色球體。
100%

不同的 PBR 渲染器使用不同的工作流程來處理反射性。Studio 僅使用 金屬度工作流程,該工作流程決定材料是 非金屬 還是 金屬,有時稱為 絕緣體導體

發光面具

灰度的 EmissiveMaskContent 內容紋理在表面上應用 發光面具。這使您可以使用紋理來控制發光性,提供比全有或全無的 Neon 材料更具藝術性的控制,並允許您創建詳細的發光效果,例如發光文本、未來主義盔甲或生物發光生物。

相關的 EmissiveTint 屬性決定了發光貢獻的著色顏色,而 EmissiveStrength 決定了發光貢獻的強度。

一個橙色球體,帶有著色為品紅色的南瓜燈發光面具。
EmissiveTint = [255, 0, 255]
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。