![]()
拍一圈照片,就能生成一個可交互的 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
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.