組裝資產圖庫 是將資產收集和配置到體驗中央位置的過程,以便輕鬆存取和重複使用。這個過程可以節省您準備構建環境的時間,尤其是如果您配置每個素材的值以提高性能並最佳化低端到中端裝置的記憶使用。
使用 環境藝術—組裝.rbxl 作為參考,本節環境藝術課程向您展示如何從精煉資產中組裝資產圖庫,包括步驟指示:
- 從你的可地磚化紋理中創建自定義材料,用於你的地形。
- 為您的修邊單元創建表面外觀對象,並將它們應用到資產圖庫中開放的網格上。
- 設置為您的資產渲染參數,以確保在所有裝置上的最佳效果。
- 將您的資產轉換為包裝,以便您可以在所有項目中更新和重複使用它們。
完成此部分後,您將學習如何以創意方式利用資產圖庫來替換或轉換灰箱環境,並添加最後的細節來增強整個 3D 空間。

創建自訂材料
工作室代表自訂材料為 MaterialVariant 對象內的 MaterialService 。這些 MaterialVariant 對象擁有四個屬性,可將四個可切割的 紋理地圖 結合,創建具有物理特性的高質量自定義材料:
- MaterialVariant.ColorMap – 代表反射紋理地圖。
- MaterialVariant.MetalnessMap – 代表金屬紋理地圖。
- MaterialVariant.NormalMap – 代表普通紋理地圖。
- MaterialVariant.RoughnessMap – 代表粗糙度紋理地圖。
在向這些屬性提供紋理地圖之後,您可以將新的自訂材料應用到兩個零件、網格和地形上。您可以使用或修改樣本紋理地圖 .png 文件來創建粗糙苔蘚、盛開粗糙苔蘚、粗糙苔蘚與石頭以及石頭自定義材料在最終樣本雷射標籤環境中,或您可以使用自己在上一節教學中設計的材料。
要創建 MaterialVariant 對象以用於你的可切割紋理:
在工具欄的 首頁 或 模型 標籤中,單擊 材料管理器 按鈕。 材料管理器 窗口打開。
在 材料 列表中,選擇最接近您地磚紋理的基本材料。例如,如果您正在為粗糙苔理紋理創建 MaterialVariant 對象,請選擇預設地面材料,以便材料繼承其物理特性。
在 工具欄 中,單擊 ⊕ 圖示。新的 MaterialVariant 在調色板中顯示,右下角的圖示表示它是自定义材料。
在 檢查器 中,導航到 一般 部分,然後將材料重命名,以與你的可拖曳紋理名稱對齊。
在 紋理地圖 部分,在 顏色 右側,點擊 匯入 按鈕。顯示一個檔案瀏覽器。
在檔案瀏覽器中,選擇 反射 紋理地圖.png,然後選擇 開啟 按鈕。文件瀏覽器關閉,新的顏色地圖顯示,其資產ID。
重複此過程對於 金屬性 、 普通 和 粗糙度 紋理地圖。自訂材料會更新以反映紋理地圖。
在 覆蓋部分 中,啟用 設為覆蓋 切換以確保當您將地面應用到地形時,Studio 使用此自訂材料。
(可選) 如果你正在創建一種代表有機材料的自訂材料,
- 在 瓷磚 部分,點擊 模式 下拉選單。
- 選擇 有機 來隨機化輸出並減少可見的瓷磚。
重複此過程以包含您想要包含在體驗中的每個可切割的紋理。
創建表面外觀包
工作室會在 SurfaceAppearance 個對象內使用修邊表,您可以將其傳給 MeshParts 包含 UV 數據的對象。與自訂材料類似, SurfaceAppearance 對象具有四個屬性,可將四個修邊紙張紋理地圖結合,創建高質量的 3D 視覺表面處理:
SurfaceAppearance.ColorMap – 代表反射紋理地圖。Class.SurfaceAppearance.MetalnessMap``Class.SurfaceAppearance.NormalMap – 代表普通紋理地圖。SurfaceAppearance.RoughnessMap – 代表粗糙紋理地圖。
在向這些屬性提供紋理地圖之後,您可以將 SurfaceAppearance 對象設為與uv數據映射到您的修邊板的MeshPart 對象的子對象,uv數據將自動適用於父網格。正因如此,將 SurfaceAppearance 對象變成 包 很有用,這樣您就可以在所有模組資產和物件中重複使用相同的 SurfaceAppearance 對象。例如,下列所有網格都有與單個 SurfaceAppearance 對象包中代表的同一個修邊紙板布局相對應的 UV 數據。

您可以使用或修改樣本紋理地圖 .png 文件來創建一個 SurfaceAppearance 對uv數據具有尊重的對象,該對象適用於最終樣本激光標籤環境內的模組資產和物件,或您可以使用自己在教學的上一部分設計的自己的模組資產和物件。
要創建SurfaceAppearance包,可以兒童傳給你的模組套件和道具:
將 表面外觀 對象插入 Workspace。
選擇 外觀 物件,然後在 屬性 窗口中選擇 顏色地圖 屬性。會出現一個彈出窗口。
點擊 添加圖像… 按鈕。顯示檔案瀏覽器。
選擇對應的可切割紋理的 反射率 紋理地圖,然後選擇 開啟 按鈕。檔案瀏覽器關閉, 顏色地圖 屬性更新以新的資產ID。
重複此過程對於 金屬性地圖 、 普通地圖 和 粗糙地圖 屬性,選擇其各自的紋理地圖從文件瀏覽器中。
在 導航器 窗口中,右鍵單擊 外觀表面 對物件,然後從上下文選單中選擇 轉換為包裝 。轉換到包裝 對話框顯示。
填寫 標題 和 說明 欄位,將所有權設為自己或群組,然後點擊 提交 按鈕。完成後,一個疊加鏈符號會顯示在表面外觀對物件的圖示上,以識別它為包裝。
(可選) 選擇 外觀表現 對物件的子 包裝鏈 對物件,然後在 屬性 視窗中啟用 自動更新 以自動更新包裹,如果您對 外觀表現 對物件進行任何修改。
导入模块资产和道具
工作室代表您以 Model 對象匯入的模組資產和道具,每個素材件都有子 MeshParts 對象。例如,如果你匯入了帶有頂部裝飾、底部裝飾和牆部件的牆部分,Studio 將 或 檔案視為 牆部分 ,包括獨立的子牆部分 頂部裝飾 、 底部裝飾 和 牆部件 。

使用 3D 匯入器,您可以將樣本模組化套件和物件匯入工作室,用於資產圖庫中使用,或者您可以匯入您在教學的前一部分設計的任何資產。有關此工具功能的更多資訊,請參閱 3D匯入器。
要將模組資產和物件匯入體驗:
在工具欄的 首頁 或 虛擬人偶 標籤中,點擊 匯入3D 按鈕。一個檔案瀏覽器顯示。
選擇 .fbx 檔案,用於模組資產或物件。
檢查對象預覽,並確認匯入設定對您的對物件是否正確。
驗證任何 警告或錯誤訊息。
點擊 匯入 。資產在 瀏覽器窗口 和視角中顯示。
重複此過程以每個模組資產和物道具。
將所有資產移至你的灰箱幾何附近的體驗區域。這個區域是你的資產圖庫。
應用表面外觀資料
當您在第三方建模軟件中通過解開網格上的 UV 的過程時,軟件會將 UV 數據存儲在網格的 .fbx 或 .obj 文件中。當您將此網格匯入 Studio 時,結果的 MeshPart 對象保留該數據,但您仍需要從修剪單中應用含有紋理地圖屬性的 SurfaceAppearance 對象,才能在素材上顯示您的修剪紋理。
要將 SurfaceAppearance 紋理地圖資料應用於你資產圖庫中開啟的網格:
- 在 導航器 窗口中,單擊您的 外觀表現 包裹,然後按下 Ctrl D ( ⌘ D ) 以複製它。
- 將複製的 表面外觀 包轉換為模組資產或物件。資產會將其 UV 資料應用到紋理地圖並顯示其視覺處理。
- 重複此過程以每個模組資產和物道具。
設置物理和渲染參數
現在您已將資產放置於 Studio 中,設定物理和渲染參數以允許資產在記憶和 GPU 限制的裝置上保持最高可能的視覺品質是很重要的。一般來說,您遵循本節中的指導越多,您的體驗就越高效。然而,仔細考慮你將每個資產放置在整個環境中的上下文是確保你保持你的美感目標和遊戲需求的關鍵。
已錨定
BasePart.Anchored 屬性決定 Roblox 引擎的物理系統是否會影響對物件的位置。當您為 Part 或 MeshPart 啟用此屬性時,它會將對象從經體驗中永遠運行的動態模擬的物理計算中移除,這意味著對象永遠不會因重力或其他對象的碰撞而變更位置。
不模擬物理回應的對象便宜渲染,因為它們不需要那些物理計算所需的 GPU。當您釋放 GPU 時,您會提高體驗的性能,特別是對於需要保存 GPU 以進行快速遊玩的低端設備。正因如此,每個 資產除了門之外 在最終掃描雷射標籤環境中都被錨定。
可否碰撞
BasePart.CanCollide 屬性決定對象是否能夠物理地與其他對象互動。當您為 Part 或 MeshPart 啟用此屬性時,對象是不可穿透的,Roblox 引擎會在物理計算中為它計算。這些計算可能會對您的體驗性能產生影響,當引擎必須考慮許多物件時,在物理計算中。
為了緩解這對性履約的影響,禁用此屬性對使用者永遠不會互動的對象。例如,最終樣本雷射標籤環境會為所有葉子停用此屬性。

可觸碰
BasePart.CanTouch 屬性決定是否發生 Touched 和 TouchEnded 事件在對物件上。當您為 Part 或 MeshPart 啟用此屬性時,Roblox 引擎會檢查對物件的觸碰事件狀態,以確認是否需要啟動或停止事件。
此過程發生於每個畫面,如果引擎需要一次檢查許多物件的觸碰事件狀態,就可能會佔用大量記憶。為了緩解記憶上的部分影響,只為必須發出事件的對象啟用此屬性。
可查詢
BasePart.CanQuery 屬性決定 Roblox 引擎是否在空間查詢操作中考慮對象,例如射光線投射。工作室預設啟用此屬性,每次 Part 或 MeshPart 即檢查是否每個對象需要呼叫空間查詢操作,因此引擎會檢查是否每個對象需要呼叫空間查詢操作。此過程發生於每個單獨的框架,當引擎需要一次對多個對象進行這些檢查時,可能會佔用大量記憶。
為此原因,建議對 Roblox 引擎不需要考慮空間查詢操作的對象禁用此屬性。當決定禁用此屬性的位置時,請考慮每個資產如何影響遊玩體驗。例如,最終樣本雷射標籤環境會為建築物的每一面牆保留此屬性,因為引擎需要考慮這些表面,因為用戶從雷射標籤槍發射雷射時。如果引擎沒有考慮這些資產,那麼雷射就會直接射穿建築物,好像它根本不存在一全部 所有。
投射陰影
BasePart.CastShadow 屬性決定對象是否投射陰影。當您為 Part 或 MeshPart 啟用此屬性時,Roblox 引擎在執行階段時計算對象的每個vertex位置,然後從太陽射出光束到其鄰近對象,直到與另一個對象碰撞為止,創建陰影。
這些計算可能會帶來性能成本,特別是當您有許多幾何複雜度的對象時。這是因為具有幾何複雜度的對象比具有幾何簡單的對象有更多的多邊形,這意味著它們有更多的邊點需要計算以獲得對象的陰影。物件中的多邊形越少,操作速度越快且陰影便宜。

陰影可以為具有 3D 幾何深度的物體提供很強的現實感,因此當你決定禁用此屬性時,請考慮物體在環境上提供重要視覺改善的地方,以及用戶會注意到缺少的陰影的地方。例如,葉子的複雜陰影可以提供在使用者可能看到它們的戶外空間中很大的沉浸感,但同樣的沉浸感對於使用者絕不會互動的葉子來說並不是必要的。


雙面
MeshPart.DoubleSided 屬性決定是否在網格中渲染兩個面或多邊形。當您為平面 MeshPart 啟用此屬性時,例如葉子、頭髮或布卡,Roblox 引擎會在網格上渲染兩個面或多邊形,以允許用戶無論看什麼角度都能看到物體的完整性。例如,以下樹葉是單向平面網格,啟用此特性時,面向相機的任何樹葉都會對用戶可見。


這個屬性對於添加現實主義到您的環境有用,但它會帶來性能成本,因為引擎需要渲染對物件的邊緣兩次:一次是面向使用者攝影機的方向,再次是面向使用者攝影機的任何網格。為了緩解部分性履約影響,最終樣本雷射標籤環境只為葉子啟用此屬性,因為它具有強大的視覺效果,可以在 3D 空間中呈現現實主義。
碰撞穩定性
MeshPart.CollisionFidelity 屬性決定網格或聯盟的物理命中箱與視覺表示之間的匹配程度。預設情況下,此設置會渲染與網格形狀大致相同的命中箱,這意味著用戶與對象碰撞的地方與網格的實際幾何形狀相似。例如,以下圖像中的城堡網格有一個預設命中箱,幾乎匹配其幾何形狀。


您可以將此屬性設為不同值,以減少網格命中箱的精度。例如,當您將此屬性設為 船體 時,Roblox 引擎會顯著減少網格命中箱的邊緣,當您將此屬性設為 箱子 時,引擎會將網格命中箱減少到圍繞網格的立方體。此外,如果您想提高網格命中箱的精度,您可以將此屬性設為 精確凸起分解 來增加命中箱中的vertex數量。



與 BasePart.CastShadow 相似,愈多垂直面需要成像,愈高性能成本。為此原因,重要的是要考慮您希望用戶如何與每個網格互動,以便確認您是否能減少引擎需要渲染的網格點數數量,以減少網格的命中箱所需的數量。在不需要精確的命中箱時,將此屬性設置為 箱 或 船體 。
要展示此概念,請參考以下顯示每個牆模型的命中箱的圖像,該圖像會在最終樣本雷射標籤環境的第一和第二層之間提供升高的高度。主牆的預設命中箱有許多不需要的幾何圖形,當只需要提供一個表面來防止使用者在那個方向移動時。如果您將此網格的屬性設為 盒子 ,則可以保留命中箱的目的,同時移除此重複的幾何形狀。



當你做出這些決定時,考慮如何變更預設值可能會對使用者產生負面影響,因為他們正在導航你的環境。例如,如果您將屬性設為 盒子 對牆壁模型的修飾網格,用戶如果嘗試在牆壁附近跳躍,將與命中箱碰撞。相反,將這些網格設為 船體 ,因此您會減少其頂點數量,同時將命中箱保持更接近網格幾何形狀的狀態。


請注意,精確地滿足網格形狀的命中箱可能是很重要的,尤其是當你需要控制用戶是如何準確地碰撞網格形狀時。例如,在最終樣本雷射標籤環境中,用戶只能碰撞門口的邊緣,而不是門口本身,否則他們永遠無法進入或離開戰鬥口袋。

渲染準確度
MeshPart.RenderFidelity 屬性決定網格顯示給用戶的細節程度。當您將此屬性設為 Enum.RenderFidelity.Automatic 時,Roblox 引擎會減少網格的穩定性,用戶離網格越遠,網格上的每個點都會準確地渲染,無論距離之間的距離有多大。當您將此屬性設為 Enum.RenderFidelity.Precise 時,網格上的每個點都會準確地渲染,無論距離之間的距離有多大。
物件越多,引擎必須準確地將它們從任何距離渲染給使用者,特別是如果它們有高vertex數量,效能成本就越高。為了減少這對性履約的影響,將此屬性設置為 Enum.RenderFidelity.Performance 對幾何複雜度的對象,例如樣本資產圖庫中的葉子,因為它們不需要從遠處顯示整個對象以滿足任何遊戲需求。這樣會降低體驗的多邊形數量,但不會降低整體視覺質量。
將資產轉換為包裝
現在您所有的模組資產都在工作室中,配備了用於保留高視覺質量的渲染參數,是時候將它們轉換為包裹了。將資產轉換為包裹很重要,因為它可以讓你在當前體驗和其他項目中反覆使用它們。此外,您可以輕鬆對即時填充到所有實例的包進行編輯,節省大量時間在循環過程中。
因為您的 SurfaceAppearance 物件已經是包裝,當您將您的 Model 物件轉換為包裝時,它們會變成巢穴包裝。巢穴包允許您維護與 Model 對象包獨立的複雜層次的子對象,可以獨立於對象包進行修改。這樣可以讓您更好地控制您資產的個別組件。

要將模組資產和物件轉換為包裝:
在 導航器 窗口中,右鍵單擊模組資產或物件,然後從上下文選單中選擇 轉換為包裝 。轉換到包裝對話框顯示。
填寫 標題 和 說明 欄位,將所有權設為自己或群組,然後點擊 提交 按鈕。完成後,一個疊加鏈符號會顯示在模型的圖示上,以識別它為包裝。
重複此過程以每個模組資產和物道具。
一旦您對資產圖庫的整體布局感到滿意,您就可以過渡到裝飾您新打磨的資產環境,並配置 3D 空間的額外元素來帶來生活。