剛剛,李飛飛最新成果發佈,手機也能跑億級粒子的 3D 世界了|附體驗地址

來源: 更新:

拍一圈照片,就能生成一個可交互的 3D 世界,已經不是什麼新鮮話題了。但問題是如何把一個大世界塞進普通人的手機瀏覽器裏。

就在剛剛,李飛飛旗下 AI 世界模型公司 World Labs 發佈並開源了一個最新成果:Spark 2.0。

這個專爲網頁端設計的動態 3D 高斯點雲(3DGS)渲染引擎,讓在任何設備的瀏覽器裏流暢運行上億粒子的超大 3D 場景,開始逐漸成爲現實。

爲什麼把億級粒子的 3D 世界塞進手機這麼難?

你可能聽說過「3D Gaussian Splatting」,簡稱 3DGS。用一句話解釋,它是一種把真實場景變成 3D 可交互內容的技術,不用建模,拍一圈照片就能生成。

和傳統 3D 建模用三角形面片不同,3DGS 用的是數百萬個半透明的彩色橢球體,每一個叫做一個「splat」(潑濺體/斑點)。

左側使用紋理映射三角網格,右側使用高斯斑點,對同一對象進行渲染。

每一個 splat 並不是一個簡單的點,而是一個有完整「人格」的橢球體。它記錄着自己在空間中的位置、三條軸的半徑長短、朝向角度、RGB 顏色值,以及透明度。

最關鍵的是透明度這個屬性。它決定了這個 splat 在疊加時對周圍的影響權重。如果把單個 splat 的空間密度畫出來,你會得到一條高斯曲線:中心最實,向外逐漸虛化,邊緣自然消融進背景裏。

正是這種「軟邊界」的疊加方式,讓數百萬個 splat 堆在一起之後,能呈現出磚牆的顆粒感、樹葉的透光感、玻璃的反射,而不是一堆硬邊三角形拼出來的塑料質感。

效果好,信息量也大。一個高質量的 3DGS 掃描場景,動輒幾千萬個 splat,文件體積輕鬆突破 1 GB。

這就帶來了一個棘手的問題:普通手機能流暢渲染的上限大概是 100 萬到 500 萬個 splat,比動輒 4000 萬的高質量掃描差了整整一個數量級。

現有渲染器也沒法把多個掃描對象放在同一個場景里正確渲染,要麼只能單獨渲染一個,要麼排序亂掉、對象「貼在」彼此表面上,看起來一團糟。

於是乎,Spark 應運而生。根據官方博客介紹,Spark 最開始是 World Labs 自己用的內部工具。World Labs 需要在網頁上展示 3DGS 生成的世界,但市面上的渲染器都有硬傷,有的只能渲染單個對象,有的依賴 WebGPU(很多設備還不支持),有的不支持動態動畫。

幾番對比下來,他們決定乾脆自己造一個。

他們選擇的技術底座是 THREE.js,Web 上最流行的 3D 框架,運行在 WebGL2 之上,幾乎覆蓋所有現代設備。核心渲染邏輯分三步走,先在 GPU 上生成跨對象的全局 splat 列表,再統一按從遠到近排序,最後一次性渲染完畢。

「全局排序」聽起來平平無奇,實則是讓多個 3DGS 對象共存於同一場景、不互相穿模的關鍵所在。Spark 還在此基礎上開放了一套 GPU 處理流水線,用戶可以對每個 splat 做重新上色、透明度調整、動態動畫等自定義操作,用 GLSL 編寫,或者像 Blender 那樣連節點圖來實現。

1.0 版本解決了多對象渲染的問題,但 4000 萬 splat 的場景依然是一道跨不過去的坎。這纔有了 Spark 2.0。

讓設備永遠只渲染「夠用」的信息量

Spark 2.0 的核心是三項技術的組合,LoD 細節層級、漸進式流式加載和虛擬內存管理。單獨拿出來看,每一項都有先例可循,但三者合力,才撐起了在手機瀏覽器裏流暢渲染億級 splat 世界的能力。

1. 連續 LoD 樹:把好鋼用在刀刃上

LoD(Level of Detail)在遊戲圈早已是成熟概念。近處的樹用幾千個三角形,遠處的樹只留幾十個,按需分配,省算力。Unreal Engine 的 Nanite 系統也是這個思路,把三角形細節和視距掛鉤,自動縮放。

Spark 2.0 把同樣的邏輯搬到了 splat 上,做得更徹底。

離散切換幾個版本容易產生畫面「跳變」,Spark 的做法是構建一棵完整的「連續 LoD 樹」,每個內部節點都是其子節點 splat 融合後的近似版本,層層向上匯聚,最終到達根節點,也就是整個場景最粗粒度的單一 splat。

渲染時,系統根據當前視角在這棵樹上動態劃一刀,靠近視角的區域取底層細節,遠處取高層粗粒度。

整個過程受一個固定的 splat 預算約束,移動端約 50 萬,桌面端約 250 萬。場景裏總共有多少 splat 都無所謂,實際送上 GPU 的數量始終穩定在預算範圍內,幀率自然穩了。

在此之上,Spark 還引入了「注視點渲染」(Foveated Rendering),把更多預算集中分配給你正在看的方向,邊緣和背後的區域細節自動收窄。這個效果放在 VR 設備上尤其直觀,通常需要眼動追蹤才能實現,Spark 用固定錐形區域近似模擬,同樣奏效。

2. 全新 .RAD 格式:像刷短視頻一樣「流式」加載

渲染效率的問題解決了,傳輸效率的問題同樣棘手。現有的 3DGS 文件格式有兩個:.PLY 和 .SPZ。前者未壓縮,10M splat 高達 2.3 GB,雖然可以邊下邊顯示,但體積實在喫不消。

後者用列式存儲加 Gzip 壓縮,同等數據量壓縮到 200-250 MB,代價是必須等整個文件下載完才能顯示,因爲每個 splat 的屬性分散在文件各處,缺了哪一段都拼不出完整內容。

爲了魚和熊掌兼得,Spark 2.0 設計了新格式 .RAD(RADiance fields)。它把 splat 數據切成每塊 64K 個 splat 的獨立小塊,分別壓縮,並在文件頭中記錄所有塊的字節偏移位置,支持隨機訪問任意一塊。

第一塊永遠是整個場景最粗粒度的 64K 個 splat,下載完畢後場景輪廓立刻可見。此後系統根據視角判斷哪些區域最需要細化,優先拉取對應的數據塊,畫面從模糊逐漸推演出細節。3 個並行的 Web Worker 線程在後臺同步拉取和解碼,你走到哪,細節就跟到哪。

3. GPU 虛擬內存:在有限顯存裏裝下無限空間

流式加載解決了帶寬的問題,但 GPU 內存的硬上限依舊是個難啃的骨頭。移動端瀏覽器對顯存有嚴格約束,塞不下整個 4000 萬 splat 的場景。

Spark 2.0 借鑑了操作系統的虛擬內存機制來應對這個問題。

系統會在 GPU 上分配一個固定內存池,上限 1600 萬個 splat,用一張頁表記錄哪些 .RAD 數據塊當前駐留在 GPU 上。需要渲染某個區

域時調入對應的塊,內存滿了就按最久未使用的順序換出舊塊。

得益於這一機制,不同來源的 3DGS 場景可以共享同一個內存池。理論上,只要網速跟得上,無數個獨立的掃描場景可以無縫拼接成一個無限大的世界。

一行鏈接,交付世界

Spark 2.0 發佈之後,李飛飛也第一時間公開表態,「Spark 2.0 現在可以在任何設備上流暢播放超過 1 億個 splat 對象,非常榮幸能爲基於 Web 的 3DGS 渲染開源生態系統做出貢獻。」

她沒有着重強調「做到了什麼」,而是把重點放在「爲開源社區貢獻了什麼」。這個表述耐人尋味。3DGS 渲染是一個仍在快速演進的領域,單靠一家公司推不動整個生態,開源纔是加速這件事的正確姿勢。

從已有的落地案例來看,開發者確實在用 Spark 做各種方向的嘗試。Webby 獎得主 James C. Kane 獨立開發了一款名爲 Starspeed 的多人宇宙飛船射擊遊戲。

整個遊戲場景由超過 1 億個 splat 構建,附帶 10 首合成波風格原聲音樂,全部通過瀏覽器以 .RAD 格式流式加載,驚豔的科幻環境可以直接在網頁裏跑起來。

附體驗地址

:https://starspeed.game/

藝術方向則有 Hugues Bruyère 的《Dormant Memories》。他是互動體驗工作室 Dpt. 的聯合創始人,這個系列把真實地點的 3D 掃描和想象中的空間並置在一起,做成可探索的交互環境。現實與虛構之間的邊界在 splat 顆粒感裏變得模糊,倒是意外地切題。

附體驗地址

:https://smallfly.com/dormant_memories/

來自 Hololive 空間信息技術部門的藤原龍則用 Spark 渲染了多個大型真實捕獲場景,單場景最高達到 4000 萬 splat,在智能手機、Quest 和 Vision Pro 上均能流暢運行。

附體驗地址

:https://works.lilea.net/spark/

這些來自開發者的多元化嘗試,充分證明了 Spark 2.0 在不同設備和應用場景下的強悍實力。但這僅僅是故事的一半。

對於一家致力於打造「AI 世界模型」的公司而言,李飛飛團隊的野心絕不止於提供一個開源的渲染工具。如果說 Spark 2.0 解決了「如何流暢觀看」的最後一步交付難題,那麼如何低門檻地創造這些 3D 內容,纔是他們真正的殺手鐧。

Spark 和 World Labs 的創作平臺 Marble 深度綁定,用一行文字或一張圖片在 Marble 裏生成 3D 世界,用 Marble Studio 把多個世界拼合成更大的場景,再用 Spark 渲染成可分享的網頁體驗,這條鏈路目前已經跑通。

技術進步往往以「強無止境」爲最高原則,但有時「夠用」或許纔是最合適。Spark 2.0 講的正是這麼一個故事。

而讓設備在任何時候只渲染「剛好夠用」的 splat,這個想法本身並不新鮮,但把它落地到網頁端的渲染上,還要同時兼容手機瀏覽器和 Quest,每一步都是實打實的工程問題。

當 AI 能生成無限大的 3D 世界時,我們用什麼載體把它交付給每一個普通人?現在,World Labs 給出的最新答案是一個網頁鏈接。

附上博客地址:

https://www.worldlabs.ai/blog/spark-2.0

#歡迎關注愛範兒官方微信公衆號:愛範兒(微信號:ifanr),更多精彩內容第一時間爲您奉上。

相關推薦
請使用下列任何一種瀏覽器瀏覽以達至最佳的用戶體驗:Google Chrome、Mozilla Firefox、Microsoft Edge 或 Safari。為避免使用網頁時發生問題,請確保你的網頁瀏覽器已更新至最新版本。
Scroll to Top