3DGS迎來史詩級升級。智東西4月15日報導,今天,“AI教母”李飛飛的世界模型團隊World Labs開源了動態3D高斯潑濺(3DGS)渲染器Spark 2.0。▲Spark 2.0官宣開源(來源:X)李飛飛本人在該成果發佈的第一時間評論稱:“Spark 2.0現在可以在任意裝置上流式傳輸超過1億個高斯潑濺!能夠為基於網頁的3DGS渲染開源生態做出貢獻,我們感到無比自豪!”▲李飛飛評論(來源:X)Spark系列模型於去年首次發佈,是一個專為網頁建構的動態3D高斯潑濺(3DGS)渲染器。它與網頁端最流行的3D框架THREE.js整合,並利用WebGL2在任意帶有網頁瀏覽器的裝置上運行,包括桌面端、iOS、Android以及VR裝置。與上一版本相比,Spark 2.0新增了一套細節層級(LoD)系統,能夠在任意裝置上流式傳輸並渲染超大規模的3DGS世界。▲在兒童房間裡自由探索,物品細節清晰(來源:World Labs部落格)此外,新版還使用了.RAD的3DGS檔案格式,支援漸進式細化的流式傳輸,而虛擬潑濺分頁系統則通過固定的GPU記憶體分配,實現了對無限潑濺世界的訪問,通俗來講就是可以渲染無限大的3D場景。▲草原中的洞穴小屋,場景轉換無畸變(來源:World Labs部落格)如此流暢連貫的效果是怎麼實現的?針對大規模場景的擴展難題,Spark 2.0運用了3項圖形學與系統底層方案:細節層次最佳化、漸進式流式載入以及虛擬視訊記憶體管理。李飛飛團隊在部落格中,對Spark 2.0背後的三項技術進行了十分詳細的展開,具體如下:01. 採取連續式細節層級穩定渲染百萬級潑濺在電腦圖形學中,處理大型3D場景時常常採用細節層級系統,該系統會根據物體與觀察者之間的距離自動調整渲染的細節程度,不同的細節層級方法介於離散式與連續式之間,形成一個技術譜系。採用離散式細節層級(LoD,Level-of-Detail)時,系統需要為潑濺效果製作多個版本,從精簡到精細依次遞增,再根據各版本的近似邊界與相機的距離,在不同版本間進行切換。Spark的早期系統設計支援離散模式,但其存在明顯缺陷:當使用者在場景中移動、不同版本突然切換時,畫面會出現明顯的跳變;此外,將潑濺效果按區塊分組後,使用者還能看到清晰的邊界痕跡。Spark 2.0的LoD設計採用了一種連續式LoD方法,所有潑濺都存在於一個層級結構中,即LoD潑濺樹。Spark 2.0會沿著樹的一個邊界切割面單獨選取潑濺,從而在視口內最佳化潑濺的細節。▲LoD潑濺樹(來源:World Labs部落格)樹中的每個內部節點都是其子節點的一個低解析度版本,通過將子節點的多個潑濺合併成一個新的潑濺來近似表示子節點潑濺的形狀和顏色。這個過程一直持續到樹的根節點——一個單一的、大的潑濺,它聚合了該物體中所有潑濺的整體形狀和顏色。利用這棵LoD潑濺樹,Spark 2.0會計算出穿過該樹的一個“切片”,從而為當前視口選取最佳的N個潑濺進行渲染。通過設定一個最大潑濺預算N(根據裝置類型不同,通常在50萬到250萬個潑濺之間),系統確保每幀只需渲染恆定數量的潑濺,從而獲得穩定、高影格率的渲染性能。通過上下調整N值,即可在影格率和潑濺細節之間進行權衡。▲公園中的自行車,細節真實,前後一致性強(來源:World Labs部落格)Spark 2.0通過同時遍歷多個LoD潑濺樹實例,對該演算法進行了進一步擴展。與僅從單一根節點開始遍歷不同,針對每個3DGS物體,拓展後的演算法會將其螢幕尺寸及潑濺節點 (dm0,Sm0) 一同加入初始優先佇列,後續流程與原有邏輯保持一致,可在場景中所有3DGS物體上同步篩選需細化的細節層級。這一設計讓大規模組合世界的建立變得簡單高效:只需在空間任意位置加入3DGS LoD物體,Spark 2.0便能自動計算出每幀需渲染的所有LoD潑濺的最優全域子集。02. 設計新型檔案格式大場景3D世界在網頁上秒開Spark2.0定義了一種新的檔案格式.RAD(代表RADiance場),該格式能夠壓縮3DGS資料,並支援隨機訪問流式傳輸,從而在資料通過網路傳輸時實現漸進式細化。目前最常見的兩種3DGS資料檔案格式是.PLY和.SPZ,它們代表了兩種不同的資料編碼方式:行式儲存和列式儲存。.PLY檔案是按行順序儲存的,在接收到資料後立即顯示潑濺,從而實現漸進式載入。但它未經過壓縮,且編碼精度存在浪費。.SPZ檔案將相似類型的資料按列順序儲存在一起,從而獲得了更好的壓縮率。但遺憾的是,它無法實現漸進式載入,因為在任何潑濺獲得其所有屬性之前,必須接收完整的檔案。為實現3DGS資料的高效壓縮與流式傳輸,李飛飛團隊設計了全新的.RAD檔案格式。該格式編解碼簡潔、擴展性強、編碼精度可調節,同時支援隨機訪問。▲.RAD檔案格式(來源:World Labs部落格)檔案結構十分清晰:以RAD0檔案頭開頭,隨後依次為頭部中繼資料長度、中繼資料JSON,以及一個或多個各含6.4萬個潑濺的資料區塊。頭部中繼資料記錄了所有資料區塊的偏移地址與字節大小,支援任意順序讀取資料區塊內容。單個資料區塊也採用相似結構:以RADC塊頭起始,接著是塊中繼資料長度、中繼資料JSON,最後為該6.4萬個潑濺的壓縮資料。潑濺各項屬性按列儲存,可分別選用自訂編碼方式。同類資料集中存放,再通過Gzip壓縮,能獲得出色的壓縮率。頭部採用JSON編碼,可通過版本欄位與新增可選欄位保障後續擴展。資料類型編碼與壓縮演算法均以字串名稱在中繼資料中指定,方便後續擴展新類型。03. 採用虛擬記憶體開闢1600萬潑濺固定視訊記憶體池虛擬記憶體是一項記憶體管理技術,它以固定大小的實體記憶體為基礎,向程序提供大容量的虛擬地址空間,並通過頁表以固定尺寸的頁為單位,完成虛擬地址與實體位址的對應。Spark 2.0將這一思路應用到3DGS渲染中。具體來講,李飛飛團隊在GPU上開闢了一塊可容納1600萬個潑濺的固定視訊記憶體池,自動管理GPU中每6.4萬個潑濺為一頁的“視訊記憶體頁”,與.RAD檔案中對應大小的虛擬資料區塊之間的對應。▲虛擬記憶體(來源:World Labs部落格)資料區塊會按照LoD遍歷順序載入到空閒頁面中;當頁表佔滿,且新資料區塊優先順序更高時,系統會按最近最少使用(LRU)策略淘汰舊資料。Spark 2.0支援同時載入多個.RAD檔案並共用同一張頁表。對每個檔案,系統會記錄資料區塊到頁表的對應,以及頁表到對應檔案與資料的反向對應。在遍歷多棵LoD潑濺樹時,引擎會記錄資料區塊與檔案的訪問順序,形成全域統一的優先順序排序,進而對場景中所有3DGS物體的潑濺載入與儲存進行統一最佳化。04. 結語:Spark 2.0降低空間智能的創作門檻爭奪基礎設施定義權從2025年的首次亮相到今日的2.0版本迭代,Spark的進化軌跡某種程度上也對應著3DGS這一技術的成熟曲線。三維內容的交付長期以來被兩座大山壓著:一是資產太重,動輒GB級的檔案讓網頁端望而卻步;二是渲染太貴,高端GPU才能流暢運行的場景,手機瀏覽器只能圍觀。Spark 2.0通過連續LoD、.RAD格式和虛擬視訊記憶體“三板斧”,讓高品質三維內容像普通圖片和視訊一樣,在網際網路上自由流動、即點即看。李飛飛團隊選擇將該技術開源,降低了空間智能的創作門檻,同樣也是在爭奪下一代空間內容基礎設施的定義權。 (智東西)