PBR 紋理

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

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

A humanoid avatar with dreadlocks, a glossy jacket, jeans with decals, and boots.
A humanoid avatar with a short haircut, leather jacket, capri pants, and orange shoes.

各種應用程式和工作流程可用於創建 PBR 紋理。在自訂 3D 物件創作品的模型和紋理階段,您可以使用這些工具,提供 Roblox Studio 支持 您使用的特定紋理地圖。

本指南提供有關設置網格對象以使用 PBR 紋理地圖的指示,並描述 Roblox 支持的 PBR 紋理地圖的常見使用案例和最佳做法。當創建自己的表面時,請參閱材料參考以獲得常見材料值、圖像比較和服裝示例。

啟用表面外觀

您可以通過添加覆蓋原始已分配紋理的 MeshPart 對象來到任何 SurfaceAppearance 中添加 PBR 紋理。一般來說,你不能在體驗期間透過腳本修改 SurfaceAppearance 屬性,因為引擎需要一些預處理來顯示這些圖形。與添加基本紋理類似,每個紋理圖像地圖必須指向適當的上傳的圖像資產ID。

要啟用表面外觀對於 MeshPart :

  1. 導航器 窗口中,將鼠標懸停在 MeshPart 上,然後點擊 ⊕ 按鈕。

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

    A SurfaceAppearance object parented within a MeshPart in Studio's Explorer window.

    當您準備好將紋理地圖添加到 SurfaceAppearance 物件時,您可以點擊 屬性 窗口中的每個地圖屬性並輸入一個資產ID。

紋理地圖

工作室目前支持 4 種類型的 PBR 紋理地圖:顏色普通粗糙金屬性。這些地圖各自對應物件體表面外觀的重要方面。紋理地圖只改變視覺外觀,不會影響 MeshPart 物件象的幾何形狀。

查看以下範例,了解 Roblox 支持的紋理地圖和額外資源的概觀:

ColorMap 屬性設置表面的顏色資料,包括地圖中存在的任何透明度。請參閱 顏色(反射率) 以獲得額外資訊。

A completely filled image, mostly red with various black splotches and white scratches.

範例地圖
>

A blank white sphere with a dark background.

示例網格
>

A red sphere with black splotches and white scratches with a dark background.

網格和紋理
>

顏色 (反射率)

顏色 ,或 反射率 ,地圖決定了你紋理的顏色,主要由少量的顏色信息和沒有任何照明或紋理信息組成若要進一步自訂,您也可以在圖像地圖上添加透明度,以增加不透明度。

Alpha 模式

對於需要部分或完整透明度的物體,例如草、葉子、蕾絲或像塵土或搖滾一樣的裝飾,您可以使用各種 測試版模式 來應用透明度到您的顏色地圖。如果您的顏色地圖圖像格式支持Alpha通道,您可以在0.0透明的情況下應用Alpha通道地圖,而1.0不透明。同樣地,當使用圖像格式,例如 .png 時,任何顏色地圖上的不透明度都會應用於素材上的透明度。

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

  • 重疊 — 重疊 ColorMap 在底層網格上的 MeshPart.Color 。使用 重疊 的顏色地圖揭示網格透明處的基礎顏色。這是預設設定。
  • 透明度 — 移除基於透明度在ColorMap的可見網格。這會渲染網格透明,並且在透明存在時不會揭露原始網格顏色。
  • 染色面罩 — 將染色的 ColorMap 融入未染色的 ColorMap 上。
覆蓋

您可以使用 重疊 來揭示網格的原始顏色的部分。由於透明區域的顏色地圖暴露了底層顏色,因此您可以設計一個獨特的紋理地圖,部分或全面揭示網格的 Color 屬性對於特殊膚色或其他具有獨特顏色的情況。

以下示例展示使用白色球體參考如何運作 重疊模式

A completely filled image of a semi-repeating pattern with 8 by 8 small light blue squares. The background is checkered to indicate transparency.

透明示例顏色/反射率地圖
>

A blank white sphere over a dark background.

範例網格對象 (白色)
>

A white sphere with small blue squares scattered over the surface.

AlphaMode 設為 覆蓋 使用參考地圖和材料
>

下面的例子使用 覆蓋模式 對自定义角色進行示範,揭示角色的原始膚色:

A completely filled image of a texture map for a 3D humanoid model. Various parts of the image is checkered or partially checkered to indicate varying levels of transparency.

包含透明在部分中的原始網格顏色的顏色地圖
>

Four of the same humanoid models with different skin tones: light brown, black, white, dark green.
使用 覆蓋模式 單色地圖的多種變化角色

請參閱自訂膚色以獲得有關優化覆蓋膚色和類似應用程式的額外細節。

透明度

您可以使用 透明模式 來創建複雜或極其精細的對象,例如蕾絲或網狀,通過移除網格的可見部分來替代雕刻網格幾何圖形。因為這不會影響網格對物件的幾何結構,因此您可以創建詳細對象,而不會影響複雜網格模型的性能影響。

下面的例子展示了如何在此模式中部分透明和完全透明,視覺上移除網格的部分:

A sphere with a basket-like surface.

沒有透明度
>
>

A sphere with regular triangular patterns on its surface partially invisible.
半透明在部分中
>
A sphere with regular triangular patterns on its surface completely invisible.
完全透明在部分中
>

根據 模式是否設為 或 至少 最少 ,數值精度可能會導致小值,例如 觸發不透明的透明度。

  • 當使用 alpha 來切除大多數不透明物體的形狀,例如葉子、編織布和網時,將 MeshPart.Transparency 設為 0 。當表面的部分完全不透明時,Roblox 引擎可以以適當的深度基礎隱藏它們。不透明表面也一般來說會與深度基礎效果,例如 DepthOfFieldEffect 、玻璃和水折射率,以及水反射率,運作得更好。
  • 當使用 alpha 來為半透明對象或透明度幾乎相同的對象添加細節時,將 MeshPart.Transparency 設為 至少 0.02。這會提高污窗和軟邊羽毛等對象的混合質量,但不會適用於所有效果。
染色面罩

您可以使用 Enum.AlphaMode.TintMask 模式來應用 SurfaceAppearance.Color 染色到表面的選擇區域。染色最強烈的地方是Alpha通道完全可見,並且不會應用在Alpha通道透明的地方。

A warm, light colored brick texture with darker grey textured grout between the bricks.
範例磚塊紋理,顯示磚面上和磚縫中的顏色細節。

顏色染色

您可以透過修改 SurfaceAppearance.Color 屬性來為您的顏色地圖上色。染色不會影響性能,您可以通過重複使用單一顏色地圖的不同染色來節省記憶。使用顏色染色來創建額外的低成本變化之間你的 MeshPart PBR 紋理或在實時修改你的 PBR 表面顏色。

A statue with a default yellow tint and reflective jade-like properties.

來自 Duvall Drive 神秘之處 的雕像網格無色。
>

A statue with a red tint and continues to have a shiny reflective properties from its other texture maps.
雕像網格與 Color 設為紅色。
A statue with a green tint and continues to have a shiny reflective properties from its other texture maps.

雕像網格與 Color 設為綠色。
>

SurfaceAppearance.Color 染色作為乘數應用,因此最終外觀是由 Color3 (texel 顏色) 乘以 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通道透明的地方。

A floating square plane with a cyan slate texture, that gradually changes from fully transparent on the left to fully opaque on the right. A thin horizontal bar below the floating plane has a gradient with black on the left and white on the right.
AlphaMode 設為 Transparency。底部的灰色渐變條指示了Alpha值。MeshPart.Color 設為紅色,而 SurfaceAppearance.Color 設為青色。

正常

普通表面 地圖會將紋理深度添加到你的表面,並且與高度地圖相似地行動。因結果,效果可能會根據視角和照明環境而淡化或強化。當普通地圖不存在時,值會設為 0.0

在下圖中,您可以在網格參考和地圖參考之間切換,以進行普通地圖值的比較:

A clay colored smooth sphere.
0.0
A clay colored sphere with a moderately rocky surface.
0.5
A clay colored sphere with an extremely rocky surface
1.0

圖像的 RGB 通道分別對應本地表面向量的 XYZ 組成部分。一致的顏色圖像 [127, 127, 255] 轉換為完全平坦的普通地圖。Roblox 只支持 OpenGL 格式 - 斜角空間 普通地圖。

普通地圖會顯著影響網格的視覺表面,並可強調網格中不便的縫紉。當可能的時候,保持你的紋理縫隙隱藏,以避免與網格有視覺問題。

粗略度

粗糙度 ,或 微表面 ,地圖決定光如何在模型表面上分布。當粗糙度為 0.0 時,表面不會散射光,導致材料上的反射和光澤更鋒利和更亮。在 1.0 時,光和反射均勻地散射到模型上,導致反射率較低的磨砂類似表面。

粗糙度可能會影響物體在不同角度的反射率,也稱為 弗蘭德 效果。查看 fresnel 以獲得更多詳情和最佳實踐,以保持一致的反射行為。

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

A blue glossy sphere with a legend indicating the roughness map is completely black.
0.0
A blue semi-glossy sphere with a legend indicating the roughness map is exactly grey.
0.5
A blue matte sphere with a legend indicating the roughness map is completely white.
1.0

弗雷塞爾

弗蘭勒 指的是對表面的反射量,以當前視角為參考。工作室的弗蘭勒處理目標是物理世界準確度,雖然你也可以在粗糙表面上獲得意外的反射貢獻,但在某些角度也可能會獲得意外的反射貢獻。在某些情況下,您可以通過使粗糙度地圖約0.1更粗來補償,以實現與材料一致的照明反應。

雖然 Roblox 準確地渲染此照明效果,但表面的亮度和反射率可能不會一致地回應您的紋理內容創建軟件,例如《物質畫家》和《工作室》。查看 服裝範例 以了解應用程式之間渲染的差異。

金屬性

金屬性 決定了表面的反射率。金屬值介於 0.01.0 之間。Roblox 將默认值設為 0.0 如果沒有金屬地圖存在。

請參閱以下圖表比較各種金屬性地圖值:

A brown sphere with light splotches. A legend indicates the metalness map is completely black.
0.0
A brown sphere with light splotches and some reflectiveness. A legend indicates the metalness map is exactly grey.
0.5
A brown sphere with moderate splotches and lots of reflectiveness. A legend indicates the metalness map is completely white.
1.0

不同的 PBR 渲染器使用各種工作流程來處理反射率。工作室只使用 金屬性工作流程 來決定材料是否為 非金屬金屬 ,有時稱為 絕緣體導體

在大多數情況下,您應該將此值設置為 0.0 (非金屬) 或 1.0 (金屬)。您可以在創建具有中等反射性質的更罕常見表面時使用部分金屬值,例如磨砂或絲絨。這種練習可以悄悄地假冒材料中的反射來突出環境中反射的顏色。顏色/反射率地圖上的顏色是指環境中反射的顏色。