【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命令行版本:

1
2
<span class="lit">7z</span><span class="pun">.</span><span class="pln">exe a </span><span class="pun">-</span><span class="pln">m0</span><span class="pun">=</span><span class="pln">LZMA2</span><span class="pun">:</span><span class="pln">d23 scene</span><span class="pun">.</span><span class="pln">gltf</span><span class="pun">.</span><span class="pln">xz scene</span><span class="pun">.</span><span class="pln">gltf
</span>
1
<span class="lit">7z</span><span class="pun">.</span><span class="pln">exe a </span><span class="pun">-</span><span class="pln">m0</span><span class="pun">=</span><span class="pln">LZMA2</span><span class="pun">:</span><span class="pln">d23 scene</span><span class="pun">.</span><span class="pln">bin</span><span class="pun">.</span><span class="pln">xz scene</span><span class="pun">.</span><span class="pln">bin</span>

2)另外,你还可以使用一种命令行工具叫做XZ Utils。windows版下载

脚本很简单:

1
2
<span class="pln">xz</span><span class="pun">.</span><span class="pln">exe </span><span class="pun">-</span><span class="pln">k </span><span class="pun">-</span><span class="pln">f </span><span class="pun">-</span><span class="lit">6</span><span class="pln"> scene</span><span class="pun">.</span><span class="pln">gltf
</span>
1
<span class="pln">xz</span><span class="pun">.</span><span class="pln">exe </span><span class="pun">-</span><span class="pln">k </span><span class="pun">-</span><span class="pln">f </span><span class="pun">-</span><span class="lit">6</span><span class="pln"> scene</span><span class="pun">.</span><span class="pln">bin</span>

Linux

1)7-Zip下载略。脚本如下:

1
2
<span class="lit">7z</span><span class="pln"> a </span><span class="pun">-</span><span class="pln">m0</span><span class="pun">=</span><span class="pln">LZMA2</span><span class="pun">:</span><span class="pln">d23 scene</span><span class="pun">.</span><span class="pln">gltf</span><span class="pun">.</span><span class="pln">xz scene</span><span class="pun">.</span><span class="pln">gltf
</span>
1
<span class="lit">7z</span><span class="pln"> a </span><span class="pun">-</span><span class="pln">m0</span><span class="pun">=</span><span class="pln">LZMA2</span><span class="pun">:</span><span class="pln">d23 scene</span><span class="pun">.</span><span class="pln">bin</span><span class="pun">.</span><span class="pln">xz scene</span><span class="pun">.</span><span class="pln">bin</span>

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

1
2
<span class="pln">xz </span><span class="pun">-</span><span class="pln">k </span><span class="pun">-</span><span class="pln">f </span><span class="pun">-</span><span class="lit">6</span><span class="pln"> scene</span><span class="pun">.</span><span class="pln">gltf
</span>
1
<span class="pln">xz </span><span class="pun">-</span><span class="pln">k </span><span class="pun">-</span><span class="pln">f </span><span class="pun">-</span><span class="lit">6</span><span class="pln"> scene</span><span class="pun">.</span><span class="pln">bin</span>

macOS

1)7-Zip下载。

1
2
<span class="pln">$ brew update
</span>
1
<span class="pln">$ brew install p7zip</span>

脚本与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文件的路径是这样的:

1
<span class="kwd">var</span><span class="pln"> url </span><span class="pun">=</span> <span class="str">'my_scene.gltf'</span><span class="pun">;</span>

或:

1
<span class="kwd">var</span><span class="pln"> URL </span><span class="pun">=</span> <span class="str">'__URL__my_scene.gltf'</span><span class="pun">;</span>

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

1
<span class="kwd">var</span><span class="pln"> url </span><span class="pun">=</span> <span class="str">'my_scene.gltf.xz'</span><span class="pun">;</span>

或:

1
<span class="kwd">var</span><span class="pln"> URL </span><span class="pun">=</span> <span class="str">'__URL__my_scene.gltf.xz'</span><span class="pun">;</span>

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

文章
【verge3D】iframe透明背景设置

实现如下效果: 将web3D内容嵌入到网页上。 步骤: 1.创建v3d工程,名称为transparent,在blender中预备场景,导出glTF 2.逻辑编辑器中Init标签下,设置背景透明 3.编辑v3d工 …

文章
【verge3D】多渲染窗口(小窗口)的实现

实现如下效果:  http://zjbcool.com/static/app/camera_ctl/camera_ctl.html 步骤: 1.blender中添加新相机命名为camera1,设置相机尺寸为1024*1024 2.在html css中定义渲染窗口的大小和 …

文章
使用mixamo动捕数据在blender中实现写实动画

Mixamo是adobe旗下的一个基于web的在线3D人物动画制作平台,最重要的是它提供了丰富、免费的动作捕捉数据供下载。下面介绍如何将动捕数据下载并导入blender制作动画。