提供Verge3D教程和Web3D开发技术服务

【verge3d】资产压缩

在最新发布的verge3D for blender2.2版本中,verge3D支持LZMA2算法的场景数据压缩。下文依据官方手册中有关技术说明。

原文地址:https://www.soft8soft.com/docs/#manual/introduction/Scene-data-compression

经实际测试可行,但貌似glb格式不能支持单面物体导出,如果有单面物体会导致不能渲染,并且拼图逻辑也无法加载。

概述

verge3D一般使用glTF格式加载场景数据。在这种格式下,场景的大部分数据一般由一组.gltf/.bin文件,或者一个单独的.glb文件构成(取决于选择的导出方式)。为了整体减少一个程序的体积,这些文件需要经过压缩,然后加载到引擎。

verge3D支持以.xz格式压缩的场景数据,这是一个包含LZMA2压缩算法的格式。在verge3D中使用场景压缩的优势如下:

  • LZMA2支持高压缩比,有效减小文件尺寸
  • 比普通的服务器端压缩格式GZIP有更好的压缩比,而且GZIP格式还需要在服务器端进行配置
  • 在浏览器端解压速度快

这种方式也并非总是有效果或效果显著,需要根据以下情况进行衡量:

  • .gltf/.bin 或.glb场景文件相对很大,并且压缩后体积要明显变小
  • 网络连接速度很慢,需要按MB计算
  • 标准的服务端GZIP压缩不支持或不满意,并且在服务器上无法配置

创建压缩文件

压缩文件要求是包含LZMA2压缩算法的.xz格式。为了创建这种格式的文件,你可以使用压缩工具如7-Zip,XZ Utils,或其它。

Verge3D 出于优化目的,在解压时受到一些约束,所以不是所有.xz文件都能加载。.tar.xz文件也不支持。考虑到这点,建议压缩文件时使用下面的设置。

Windows

1)使用流行的7-Zip创建.xz文件。
你可以在要压缩的文件上右键,选择“7-Zip”–>“添加压缩”,在弹出的对话框中做如下配置:
压缩配置如下:

  • 压缩格式:xz
  • 压缩级别:任意
  • 压缩方式:LZMA2(唯一选项)
  • 字典大小:8MB以上,最大越好(超过8MB引擎不支持)

其它选项默认。

你也可以使用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下载略。脚本如下:

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

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

2)XZUtils下载略。脚本如下:

xz -k -f -6 scene.gltf

xz -k -f -6 scene.bin

macOS

1)7-Zip下载。

$ brew update

$ brew install p7zip

脚本与Linux同。

2)XZUtils的macOS 10.5+下载。脚本与Linux同。

Verge3D下使用xz压缩文件

一个Verge3D程序使用一组my_scene.gltf/my_scene.bin文件,或一个单独的my_scene.glb文件加载场景。这两种情况下,你都需要有对应的xz压缩文件,如:my_scene.gltf.xz/my_scene.bin.xz,或my_scene.glb.xz。把这些压缩文件放到原始文件旁边。

你还需要指定压缩文件的路径,以便能够加载到程序里。

如果是 Player-based applications创建的应用,正常它的.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

对于Player-based and Custom applications创建的应用,正常的加载.gltf文件的路径是这样的:

var url = 'my_scene.gltf';

或:

var URL = '__URL__my_scene.gltf';

改成加载.gltf.xz文件路径:

var url = 'my_scene.gltf.xz';

或:

var URL = '__URL__my_scene.gltf.xz';

同样,对于.glb格式,做以上设置。

zjbcool

zjbcool
关闭菜单