Skip to content

Latest

More results

SLIM 簡介:可縮放輕量互動模型

利用輕量級成像合成材料的力量,為每個裝置建立更宏大、細節更豐富的世界

Roblox 提供數百萬種體驗,涵蓋簡單的迷你遊戲,以及充滿高保真度 3D 素材的廣闊開放世界。 我們的目標是提供所需支援,在各種裝置上為使用者帶來創作者所構想的日益密集且複雜的體驗,這意味著我們需要在引擎、內容傳遞系統和基礎設施方面進行創新。 可縮放輕量互動模型 (SLIM) 是多個開發工作的一部分,使創作者能夠在不影響效能的情況下,實現其宏大的藝術願景。 

SLIM 可讓創作者在 Roblox 體驗中自動建立任何物件的輕量級呈現,將用戶端所需的繪製呼叫、三角形和資料模型執行個體的數量降至最低,以呈現強大、無縫的世界。 SLIM 為我們的串流模型提供強大的新方式來優化內容,讓使用高階遊戲個人電腦的使用者和使用低階行動裝置的使用者,都能以其裝置所能處理的最高保真度擁有同等體驗。

SLIM Scene.webp
啟用執行個體串流和 SLIM 後,上述場景使用的資料模型執行個體、三角形和繪製呼叫數量少了許多。
不使用執行個體串流和 SLIM使用執行個體串流和 SLIM
用戶端資料模型執行個體159,74592,536
三角形2 千萬335 萬
繪製呼叫2,4021,454

串流的兩大支柱:執行個體和素材

在喜愛的串流服務上觀看電影時,裝置不會在開始觀看前下載整個檔案。 它只會下載足夠的資料,使你能立即開始觀看,然後在接下來的幾秒內持續下載(或緩衝),讓觀看體驗不會中斷。 若使用低階裝置或連線速度緩慢,平台會自動調整,傳送保真度較低的內容版本,同時下載足夠的資料以串流高保真度內容。

Roblox 使用類似的概念即時串流內容,但呈現高保真度 3D 模擬所需的資料本身就帶來了挑戰。 雖然影片的時間軸為線性,內容是從單一視角觀看,但 Roblox 體驗包含廣闊的互動式 3D 世界,其中充滿眾多類型的素材,可以從使用者控制的多種視角觀看。 每日有 1.515 億活躍使用者在各種裝置上遊玩、探索,均需要串流內容。因此,優化內容的傳輸和顯示方式擁有巨大潛力。1

使用者在 Roblox 上看到的一切,無論是汽車、樹木、虛擬人偶或建築物,都會在引擎中呈現為多個執行個體。 例如,一輛可用的汽車會被分解成保險槓、車門、車輪等執行個體。 每個執行個體皆使用多種素材在體驗中建構,例如 3D 網格、紋理、動畫和音訊等。

Roblox 上幾乎所有串流都分為兩種核心技術:執行個體串流和素材串流。

  • 執行個體串流決定了使用者的裝置需要串流哪些執行個體。 無需串流使用者尚未看到或與之互動的體驗部分。 在上述範例中,只有代表附近建築物的執行個體會串流至用戶端。

  • 素材串流決定了串流執行個體的品質。 無需為距離太遠的山脈下載高解析度 4K 紋理,因為使用者無法看清細節。 在上圖中,遠處的建築物和佔用少量畫面空間的建築物,使用了數量削減的網格和較低解析度的紋理。 

此操作的中央處理器是我們稱為 Harmony 的系統,該系統會在每一幀中監控各使用者的可用資源。 Harmony 會調整執行個體和素材串流,根據裝置的記憶體、GPU 和 CPU 負載以及網路頻寬,提供最佳體驗。 對於高階遊戲個人電腦,Harmony 會將所有內容提升至最高品質。 對於連線不佳的行動裝置,它會自動縮小,以保持使用者體驗流暢。

團隊在 Tech Talks Podcast 的第 30 集中討論了串流、雲端轉碼和 SLIM 背後的技術。

SLIM:可縮放輕量互動模型

SLIM 的核心概念簡單但強大:SLIM 可自動建立創作者世界中任何物件或模型的多個輕量級優化的呈現,並將其儲存至伺服器上,以便在執行階段擷取。 接著,各個使用者用戶端可根據裝置的可用資源,呈現原始執行個體和資產,或動態切換為僅呈現其中一個輕量級 SLIM。

SLIM 使用兩種主要技術來產生輕量級的呈現:

1.  合成

首先,SLIM 會將多個部分合併成較少部分。 下方的汽車不需要 112 個獨立網格和 24 個獨立紋理,其輕量級呈現可能只需要一個網格和四個紋理。 合成過程經過精確調整,以符合引擎最終將內容成像的方式,消除物件內不可見的幾何圖形,並減少成像所需的繪製呼叫數量。

SLIM 汽車比較.webp

2.  細節等級 (LoD)

在合成模型後,SLIM 會產生不同細節等級的多個版本。 這意味著建立三角形數量明顯更少的 3D 網格版本,並以更低的解析度生成紋理,就如同我們使用傳統 LoD 技術,處理任何單一網格或紋理素材一般。 應用於 SLIM 模型時,這些技術可以進一步優化,因為我們有每個基礎執行個體的個別座標框架。 這使得我們能夠全面瞭解,創作者如何試圖將這些素材一併成像。 有了這些概念後,SLIM 讓我們能夠作出更明智的決定,知道該移除哪些不必要的細節,以及該保留哪些使用者會注意到的細節。

未定義

在正確的時間呈現正確的圖像

一旦我們建立了物件的多個呈現形式,SLIM 必須決定哪一個要用於特定使用者的裝置,或是否改用傳統成像技術。 系統會將世界分成三個不同的區域。 思考這些區域的簡單方法是,想像從玩家向外延伸的同心圓細節。

未定義

串流的邊界實際上並非圓形。 其形狀取決於多種因素。

HH 區域(重量級執行個體、重量級成像)

在 HH 區域中,完整的重量級執行個體會從伺服器串流至用戶端資料模型,而用戶端會決定要下載的特定素材呈現形式,並為每個執行個體進行成像。 在此區域中,仍可使用網格 LoD 和紋理 mip 來進行縮放,但不會進行合成。 在 SLIM 之前,這就是每個串流至體驗的執行個體成像方式。 

HL 區域(重量級執行個體、輕量級成像)

HL 區域位於 HH 和 LL 區域之間。 在此區域中,用戶端在資料模型中具有重量級執行個體,但可以選擇使用完整的成像管道或 SLIM 管道進行成像。 即使使用者遇到網路延遲,此區域也會進行調整,以確保 HH 和 LL 區域之間的無縫轉換。 HH 和 HL 區域之間的轉換點是動態的,這使 Harmony 能夠立即縮放,以應對資源的陡升或陡降。

LL 區域(輕量級執行個體、輕量級成像)

在 LL 區域中,用戶端僅串流定義 SLIM 模型的座標框架所需的超輕量級執行個體呈現,以及最少的中繼資料。 在此區域中,只會將輕量級合成 SLIM 模型加以成像,而非每個單一執行個體和素材。 與在每個重量級執行個體中串流並使用傳統成像管道相比,LL 區域需要的三角形和繪製呼叫少了許多,並減少了使用者裝置上的記憶體使用量。

此區域技術可讓用戶端隨時將整個可見世界進行成像,而不會一次性使用每個重量級執行個體和素材的完整運算成本。 遠處的物件是高度優化的輕量級呈現,會隨著使用者靠近而被高保真度的物件取代。 SLIM 建立複合模型和多個縮放 LoD 模型的能力,讓 Harmony 有更多手段,可優化每個使用者裝置的素材品質。

當所有元素結合在一起,玩家應該會感到完全沉浸其中,而不會注意到任何轉換點或不同的細節等級。

未來方向:SLIM 將如何發展?

SLIM 只是多步驟流程中的第一步,我們很期待看到創作者如何將這項技術融入其工作流程中。 我們正在探索在未來朝兩個主要方向擴展 SLIM。

確定還有哪些地方可以使用 SLIM;

我們從創作者在 Studio 中指定的靜態模型開始探究,但未來 SLIM 將能夠優化 Roblox 上一些最複雜的模型:平台虛擬人偶。 對創作者來說,虛擬人偶及其所有相關動畫、多層次穿搭和飾品,可能是一個無法預測的變數。 讓虛擬人偶經過 SLIM 處理,代表引擎可以有效限制個別虛擬人偶模型使用的資源。

最終,我們希望讓創作者能選擇利用 SLIM 來變更動態模型。 想像一下,在一個模型中,伺服器可以主動進行變更(例如,門打開或某個部分遭破壞),但透過一些巧妙的技巧,用戶端可以重複使用相同的輕量級呈現。

優化 SLIM 管道

現在我們擁有端對端管道,為引擎提供了嶄新面向的靈活度,我們也聚焦於使管道本身更智慧、更快速且更有效率。 其中包含:

  • 紋理重新整合:智慧地將多個模型紋理封裝到單一優化的紋理表中。

  • 自動分割:自動使用對世界的語義和空間理解,識別最佳的 SLIM 模型。

  • 更輕量的呈現:對於不太仰賴延遲的動態物件,我們正在探索生成幾乎無需資源即可在用戶端上成像的 2D 呈現。

  • 階層式 SLIM:將 SLIM 模型一個接一個地嵌入,以便簡化整個執行個體群組,並讓引擎可在不同的粒度層級之間動態選擇,例如從一棵樹到一片森林,再到由森林和其他物件覆蓋著的整片土地。

  • 提升解析度:今天,我們聚焦於優化效能,但很快,這個系統將使我們能提高未來硬體的素材解析度,同時保有創作者的原始藝術意圖。 這種新架構意味著,隨著平台的引擎在模擬現實方面成效更佳,我們可以持續升級其使用的呈現方式。 

SLIM 與 Harmony 以及我們其餘的串流和內容傳遞架構相結合,是平台願景的重大進展,為更多玩家提供更廣闊且更詳細的世界。 我們的引擎、內容傳遞和雲端基礎設施緊密整合,再加上數百萬創作者的龐大內容基礎,使我們能夠建立高度連結的系統,從而改善整體體驗。 隨著平台的引擎在模擬現實方面成效更佳,我們可以持續升級其使用的呈現方式。 今天,我們聚焦於優化效能,但不久這個系統將使我們能提高未來硬體的素材解析度,同時保有創作者的原始藝術意圖。

我們正在打造一個平台,不僅尊重該種藝術意圖,而且還能夠在任何可使用 Roblox 的地方,透過各種裝置,智慧且自動地將創作傳遞給任何使用者。 我們迫不及待想看到社群運用這項技術打造的成果。

1截至 2025 年第三季。