SLIM (可擴展輕量互動模型) 是一個自動優化系統,使用雲端轉碼(將資產轉換為更高效的格式)生成輕量級、優化的 Models 和平台化身的表示。啟用後,SLIM 將多個部分合併為更少的繪製調用(發送到 GPU 的渲染命令),並生成多個細節級別,允許引擎根據距離、設備能力和可用資源智能選擇最佳表示。


SLIM 提供三個主要好處:
- 視覺質量— 遠處模型的細節比舊版模型細節級別系統更高,保持與原始模型的更高相似度。
- 一致的過渡— 模型內的所有部分同時切換細節級別,消除令人不安的逐部分過渡。
- 性能— 複合網格顯著減少繪製調用、三角形數量和內存使用,能夠在所有設備層級上實現更豐富的場景。
在這些已發佈的遊戲中探索 SLIM:


前提條件
SLIM 需要以下條件:
- 地點必須 保存到 Roblox(而不是本地 .rbxl 文件),因為 SLIM 使用雲端轉碼生成優化資產。如果您在本地測試,請發佈地點然後啟用 SLIM。
- 必須為遊戲啟用 團隊創建,因為 SLIM 依賴於雲資產生成的相關屬性。
技術行為
當您發佈或測試一個啟用 SLIM 的模型的遊戲時,引擎會將模型數據上傳到雲服務,該服務生成具有多個細節級別的優化複合網格。在運行時,客戶端從 CDN 獲取這些資產,並根據距離和設備能力選擇適當的細節級別,根據距離將每個 SLIM 模型分類到渲染區域:

| 範圍 | 行為 |
|---|---|
| 完整實例流式傳輸進來;傳統的逐部分渲染。 | |
| 完整實例流式傳輸進來,但引擎在更高效時渲染 SLIM 複合體。 | |
| 實例流式傳輸出(在 DataModel 中僅存在最小佔位符,而不是完整的模型層次結構),SLIM 複合體渲染。 | |
| DataModel 中的最小佔位符,未渲染。 |
SLIM 用於模型
SLIM 最適合用於表示 靜態世界幾何 的模型 — 建築、道具、車輛、地形特徵和其他在運行時不會改變的環境物體。添加或移除部分、改變材料或在運行時修改幾何會阻止 SLIM 正確渲染模型。請參見 模型結構 以獲取一般模型結構指導和 限制 以獲取完整的排除列表。
要在模型上啟用 SLIM,請在 屬性 窗口中將其 LevelOfDetail 屬性設置為 SLIM。

當 SLIM 在模型上設置時,引擎:
- 將模型的渲染相關屬性(幾何、材料、紋理、變換)序列化為緊湊表示。模型內支持的實例類型包括 Part、MeshPart、Decal、Texture、SurfaceAppearance、PartOperation、NegateOperation 和 SpecialMesh。
- 在首次發佈或播放時將此數據上傳到雲轉碼服務。
- 雲服務生成具有多個細節級別的合成網格,去除隱藏的內部幾何並優化紋理。
- 在運行時,客戶端獲取優化的 SLIM 資產,並在引擎流式傳輸原始模型或當 SLIM 比完整模型更高效時渲染它。
如果您的遊戲使用舊版的 StreamingMesh 設置來設置 Model.LevelOfDetail,您可以通過選擇它們並在 屬性 窗口中更改屬性來轉換單個模型,或者您可以使用以下腳本在 命令欄 中批量轉換多個模型。請注意,某些與 StreamingMesh 一起使用的模型可能需要進行 SLIM 調整,特別是那些具有重疊部分或複雜的 PartOperation 層次結構的模型。
for _, descendant in workspace:GetDescendants() do
if descendant:IsA("Model") and descendant.LevelOfDetail ==
Enum.ModelLevelOfDetail.StreamingMesh then
descendant.LevelOfDetail = Enum.ModelLevelOfDetail.SLIM
end
endSLIM 用於化身
默認情況下,當平台化身位於當前流式傳輸區域之外時,將不可見。啟用 SLIM 化身會將 標準骨架 的玩家角色 — 無論他們擁有多少配件或服裝層 — 渲染為輕量級的動畫替代品,並在渲染成本的很小一部分中保持視覺保真度。


化身的關鍵 SLIM 特定屬性是 Workspace.EnableSLIMAvatars,應在 屬性 窗口中設置為 Enabled,同時將 LevelOfDetail 設置為 SLIM 在您的非化身世界模型上。

啟用 EnableSLIMAvatars 後,引擎:
- 當實際化身模型流式傳輸出時,渲染 SLIM 版本。
- 根據可用資源在 SLIM 和全解析度表示之間切換,即使在流式傳輸半徑內。
- 根據場景重要性和可用帶寬限制 SLIM 動畫。
限制
| 限制 | 詳細信息 |
|---|---|
| 需要流式傳輸 | SLIM 只在 StreamingEnabled 設置為 true 時運行。沒有流式傳輸,符合 SLIM 的模型將回退到傳統的細節級別渲染。 |
| 僅靜態模型 | 模型 SLIM 不支持在運行時修改的模型(添加/移除部分、改變屬性)或播放動畫的模型。 |
| 人形實例 | 引擎排除包含 Humanoid 的模型進行靜態 模型 SLIM 處理。使用 SLIM 化身 來處理動畫玩家角色。 |
| 化身限制 | SLIM 化身 只支持 R15 標準骨架 玩家角色。R6 骨架、NPC 和具有自定義比例的化身將回退到默認渲染。 |
| 雲端依賴 | 雲服務在 CDN 上生成和存儲 SLIM 資產。離線或本地測試而不發佈地點不會產生 SLIM 結果。 |
| 零縮放模型 | 引擎排除 Scale 為 0 的模型進行 SLIM 處理。 |
| 平台可用性 | 在尚不支持 SLIM 的平台上,設置為 SLIM 的模型將回退到 Disabled。 |
疑難排解
- 確認 StreamingEnabled 為 true。
- 確認地點已發佈到 Roblox 並且啟用了 團隊創建。
- 檢查模型的 LevelOfDetail 是否設置為 SLIM。
- 在首次發佈後等待 1–2 分鐘以完成雲轉碼,然後重新加入。
- 確保模型不包含 Humanoid 實例。
PartOperation 實例的 固體建模(聯合、交集、否定)在某些 SLIM 模型中可能未正確渲染。如果聯合在 SLIM 表示中顯示缺失或失真,請嘗試將受影響的 PartOperation 分離到自己的模型中或簡化 CSG 操作。
當原始模型中的部分具有重疊或共面的面時,可能會發生 Z-衝突。要解決:
- 將重疊的部分稍微分開(即使 0.01 studs 也足夠)。
- 避免在同一模型中相鄰部分之間的完全平整表面。
SLIM 在轉碼過程中重新生成 UV 映射(紋理如何投影到 3D 表面上)。默認的 Roblox 材料可能顯示出與原始材料略有不同的鋪設模式。為了減輕:
- 對於重要表面,使用 SurfaceAppearance 的自定義紋理。
- 將視覺相關的部分分組到同一模型中,以確保一致的紋理。
- 確認 Workspace.EnableSLIMAvatars 設置為 Enabled。
- 使用 伺服器和客戶端 測試模式進行多客戶端測試(需要至少 2 個客戶端)。
- 確保化身使用標準 R15 骨架,且沒有自定義比例。
- 確認遊戲在 Player.CharacterAppearanceLoaded 事件後不會修改化身。
全身或手指動畫可能偶爾會因骨骼複製時間而顯示視覺伪影。這是一個已知問題,正在積極改進。如果問題嚴重,請確認動畫腳本未在標準動畫管道之外修改骨骼變換。
當啟用 SLIM 化身時,渲染統計面板可能報告不正確的三角形數量。這是一個已知的報告錯誤,不會影響實際的渲染性能。