PBR 材質

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

基於物理的渲染(PBR)材質允許你透過在單一物體上使用多種類型的材質圖像或 圖層 來表現現實的陰影和光照。結合多個材質圖能更準確地模擬顏色、粗糙度和反射率,在任何光照環境中都能增強資產和環境的視覺元素。

一個擁有辮子的類人角色,穿著光澤的外套、帶有圖案的牛仔褲和靴子。
一個有著短髮的類人角色,穿著皮革夾克、九分褲和橘色鞋子。

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

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

啟用表面外觀

你可以通過添加一個 SurfaceAppearance 物件到任何 MeshPart 來添加 PBR 材質,這將覆蓋原來指派的材質。在一般情況下,你無法在遊戲中通過腳本修改 SurfaceAppearance 屬性,因為引擎需要一些預處理才能顯示這些圖形。與添加基本材質相似,每個材質圖像都必須指向適當的上傳的圖像資產 ID。

要為 MeshPart 啟用表面外觀:

  1. Explorer 窗口中,將滑鼠懸停在 MeshPart 上並單擊 ⊕ 按鈕。

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

    一個在 Studio 的 Explorer 窗口中被父化的 SurfaceAppearance 物件。

    當你準備將材質圖添加到 SurfaceAppearance 物件時,可以在 Properties 窗口中點擊每個圖層屬性並輸入資產 ID。

材質圖

Studio 目前支持 4 種 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 模式如何使用一個白色球體作為參考:

一個完全填滿的圖像,帶有 8x8 小淺藍色方塊的半重複圖案。背景為棋盤格以表示透明度。
範例顏色/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 設置為青色。

法線

法線,或 表面,圖層為你的表面添加了紋理深度,並表現與 高度圖 類似的行為。因此,效果可能會依賴於觀察角度和光照環境而變淡或增強。當沒有法線圖時,值設置為 0.0

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

一個陶土顏色的光滑球體。
0.0
一個陶土顏色的球體,表面稍微崎嶇。
0.5
一個陶土顏色的球體,表面非常崎嶇
1.0

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

法線圖會顯著影響網格的視覺表面,並可能強調紋理中的不理想接縫。儘可能隱藏你的紋理接縫,以避免在網格中產生視覺問題。

粗糙度

粗糙度,或 微表面,圖層決定光線如何在模型表面上散佈。當粗糙度為 0.0 時,表面完全不散射光線,導致材質上的反射和光澤感變得更銳利、更明亮。當粗糙度為 1.0 時,光線和反射在模型上均勻散佈,導致一個反射較弱的啞光表面。

粗糙度可能會影響物體在不同角度的反射性,稱為 費涅爾 效應。請參見 費涅爾 以了解更多詳細信息和維持反射行為一致性的最佳實踐。

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

一個藍色光滑球體,圖例顯示粗糙度為完全黑色的圖層。
0.0
一個藍色半光澤球體,圖例顯示粗糙度為確切的灰色。
0.5
一個藍色啞光球體,圖例顯示粗糙度為完全白色。
1.0

費涅爾

費涅爾 是指某一表面反射的量,即根據當前的觀察角度。Studio 的費涅爾處理旨在實現物理世界的準確性,儘管即使在粗糙表面下,某些角度的鏡面反射貢獻仍可能意外。在某些情況下,你可以通過使你的粗糙度圖提高約 0.1 的粗糙度來補償,以在材質上獲得一致的光照反應。

儘管 Roblox 可以準確地渲染這種光照效果,但表面的亮度和反射性在你的紋理內容創建軟體(如 Substance Painter)和 Studio 之間未必一致。請參見 服裝範例 獲取應用之間渲染的差異。

金屬度

金屬度 決定了表面的反射性。金屬度值範圍在 0.01.0 之間。如果沒有金屬度圖,Roblox 設定的默認值為 0.0

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

一個棕色的球體帶有光點。圖例顯示金屬度圖為完全黑色。
0.0
一個棕色的球體帶有光點,並有些反射性。圖例顯示金屬度圖為確切的灰色。
0.5
一個棕色的球體帶有光斑,且反射性很強。圖例顯示金屬度圖為完全白色。
1.0

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

在大多數情況下,應將此值設置為 0.0(非金屬)或 1.0(金屬)。在創建具有中等反射性質的更不常見的表面(如緞面或絲綢)時,可以使用部分金屬度值。這種做法可以微妙地偽造材質中的反射,以強調來自 顏色/albedo 圖層 的顏色,而不是環境中反射的顏色。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。