1. 程式人生 > >Verge3D場景資料壓縮方式

Verge3D場景資料壓縮方式

概要

Verge3D通常使用glTF檔案格式載入場景。在這種格式中,場景資料的大部分通常包含在一對.gltf / .bin檔案或單個.glb檔案中(取決於所選的匯出方法)。為了減小應用程式的整體大小,可以壓縮這些檔案,然後由引擎而不是原始檔案載入。

樣本檔案的大小比較:原始檔案 vs GZIP壓縮檔案 vs LZMA2壓縮檔案

Verge3D支援載入以.xz檔案格式壓縮的場景檔案,該格式包含LZMA2壓縮演算法。在Verge3D中使用場景壓縮的優點是:

  • LZMA2提供高壓縮級別,可以顯著減小檔案大小
  • 與常見的伺服器端GZIP壓縮相比,壓縮級別更高,也需要在伺服器上進行配置
  • 在瀏覽器端快速解壓縮

在下列情況下,特別推薦使用LZMA壓縮:

  • .gltf / .bin或.glb場景檔案相對較大,因此有必要進行壓縮以減小體積
  • 網路連線速度很慢,因此每MB都很重要
  • 標準伺服器端GZIP壓縮要麼不受支援要麼不滿意,或者無法訪問伺服器來配置它

建立壓縮檔案

要在匯出時自動建立.xz檔案,您只需在匯出設定中開啟相應的選項即可。

3ds Max:

Blender:

載入xz壓縮檔案

Verge3D應用程式可以使用一對檔案my_scene.gltf / my_scene.bin或單個檔案my_scene.glb來載入場景。在這兩種情況下,您都需要具有相應的xz壓縮檔案,例如:my_scene.gltf.xz / my_scene.bin.xz

或 my_scene.glb.xz。他們必須在原來的附近。

您還需要指定壓縮場景檔案的路徑,以便應用程式可以載入它。

對於基於播放器或自定義應用程式,其中包含主.js檔案中指定的.gltf場景檔案的路徑,如下所示:

var URL = '__URL__my_scene.gltf'或:var url = 'my_scene.gltf';

 您只需將其更改為壓縮檔案的路徑:

var URL = '__URL__my_scene.gltf.xz'; 或:var url = 'my_scene.gltf.xz';

對於基於播放器的應用程式,會在URL中指定場景.gltf的檔案,例如:

http

://localhost:8668/player/player.html?load=../applications/my_awesome_app/my_awesome_app.gltf

你可以簡單地將其替換為壓縮.gltf.xz檔案的路徑:

http://localhost:8668/player/player.html?load=../applications/my_awesome_app/my_awesome_app.gltf.xz

如果使用.glb.glb.xz檔案而不是.gltf / .bin,則 同樣適用.glb.glb.xz檔案。

手動壓縮檔案或通過命令列壓縮檔案

或者,您可以使用存檔實用程式(如7-ZipXZ Utils或其他)建立.xz檔案 。

由於優化目的,.xz解壓縮程式的Verge3D實現對壓縮檔案施加了一些限制,因此不能載入每個.xz檔案。.tar.xz檔案也不受支援。考慮到這一點,建議使用下面描述的設定。

Windows系統

1)流行的檔案壓縮工具7-Zip 可用於建立.xz檔案。

要壓縮檔案,您可以右鍵單擊它,然後選擇“7-Zip” - >“Add to arcive ...” - 這將開啟相應的對話方塊視窗:

壓縮設定應如下所示:

  • 存檔格式:xz
  • 壓縮級別:任何(正常,最大和超級給出最佳結果)
  • 壓縮方法:LZMA2(唯一可用的選項)
  • 字典大小:最大8 MB - 越多越好(引擎不支援超過8 MB)

其餘選項可以預設保留。

您也可以使用7-Zip的命令列:

7z.exe a -m0=LZMA2:d23 scene.gltf.xz scene.gltf

7z.exe a -m0=LZMA2:d23 scene.bin.xz scene.bin

2)或者,您可以使用名為XZ Utils的特殊命令列工具 。它的Windows可執行檔案都可以 在這裡預建的二進位制檔案部分。

用法很簡單:

xz.exe -k -f -6 scene.gltf

xz.exe -k -f -6 scene.bin

Linux系統

1)7-Zip命令列可以在大多數Linux發行版中安裝即用,也可以從官方儲存庫中獲得名為p7zip的軟體包。

用法類似於Windows中的用法:

7z a -m0=LZMA2:d23 scene.gltf.xz scene.gltf

7z a -m0=LZMA2:d23 scene.bin.xz scene.bin

2)XZ Utils也可以在大多數Linux發行版中安裝即用或從官方儲存庫中獲得。

用法類似於Windows中的用法:

xz -k -f -6 scene.gltf

xz -k -f -6 scene.bin

MacOS系統 (未測試通過)

1)7-Zip命令列埠可以通過 Homebrew作為名為p7zip的軟體包安裝

$ brew update

$ brew install p7zip

用法與Linux中的相同。

2)XZ utils的二進位制檔案可用於MacOS 10.5+ 這裡預建的二進位制檔案部分。用法與Linux中的相同。