draco安装与测试

draco是什么?

Google大法好,这是该开源项目的地址:https://github.com/google/draco

官方描述:

Draco是用于压缩和解压缩3D几何网格和点云的库,旨在改善3D图形的存储和传输。

通俗地讲:
draco帮我们把3D模型中的.obj文件,编码压缩成draco的.drc文件,在之后的使用过程中,我们再用draco提供的API将.drc解码。

经测试,256MB的.obj在默认参数压缩的情况下,可压缩至6MB;而如果像我们平时用到的普通3D模型,几MB大小的.obj,压缩后就是几十几百KB的.drc。

准备

由于Windows对于开发者不友好,笔者强烈推荐Windows用户安装虚拟机,使用Ubuntu进行下面的cmake和make等操作。

Mac用户和Linux用户请略过。

  1. VirtualBox下载:https://www.virtualbox.org/wiki/Downloads
  2. Ubuntu下载:http://cn.ubuntu.com/download/
  3. VirtualBox设置共享文件夹:参考疑难解决

下载源码

安装git

打开终端,安装git。

install_git

clone

git安装完成后,使用命令git clone https://github.com/google/draco.git下载源码。

git_clone

编译

为了获得编码所使用的draco_encoder文件、和解码所使用的draco_decoder文件,需要cmake和make这两个步骤。

cmake

进入刚才新建的文件夹,这时我们可以看到名为draco的文件夹了,这就是这个开源项目的源码,右键该文件夹,然后选择“在终端打开”。

执行cmake后发现,就像上面的git一样,Ubuntu还没有安装cmake,按照提示安装即可。

执行cmake ./

cmake

你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。
CMake就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。

上面我们可以直接cmake是因为draco文件夹中已经内置了CMakeLists.txt。

make

这里很简单,直接执行make,然后等待它完成。

make

此时进入draco文件夹,可以看到我们已经生成draco_encoder、draco_decoder文件了。

en_de

测试

继上一篇,现在我们已经得到了draco_encoder、draco_decoder,并且该项目也为我们准备了一些测试数据,就在testdata文件夹中。

testdata

draco_encoder可以将.obj或.ply编码压缩成.drc,我们就先拿测试数据中的bun_zipper.ply开刀。

依然在draco_encoder的外层文件夹draco,右键后选择“在终端打开”,执行命令./draco_encoder -i testdata/bun_zipper.ply -o bunny.drc

encoder_saved

见到saved就说明压缩成功了,draco文件夹下已经可以找到bunny.drc,大小为82KB,而压缩前为3MB。

参数配置

压缩参数有两个:

  1. 压缩率:用cl表示,10为最大化压缩,1为最低档压缩。
  2. quantization bits(量化位?):用qp表示,数值越小输出文件越小,模型效果越差。推荐使用默认配置。

可以看到在上一步压缩测试对象的时候,draco默认使用了参数 cl:7、qp:14。

现在我们自己动手:

  • 当参数为 cl:10 时:
    执行./draco_encoder -i testdata/bun_zipper.ply -o bunny_cl10.drc -cl 10
  • 当参数为 cl:10、qp:12 时:
    执行./draco_encoder -i testdata/bun_zipper.ply -o bunny_qp12_cl10.drc -qp 12 -cl 10

测试不同数值的cl、qp参数,输出文件的大小如下表:

bunny.drc cl = 1 cl = 7 cl = 10
qp = 12 95KB 57KB 53KB
qp = 14 121KB 默认 82KB 推荐 76KB

cl参数的值越高,压缩率越高,压缩后文件体积越小,但在解码时更为耗时,因此需要对cl参数的取值做一个权衡。

降低qp参数的值虽然能够缩小输出文件,但降多了会对复杂模型的效果有较大影响,因此推荐尝试性地使用。

压缩obj

我准备了一个obj文件,名为tttttt.obj,大小为256MB,放在draco文件夹中,执行./draco_encoder -i tttttt.obj -o tttttt_cl10.drc -cl 10
压缩后的drc大小为5.7MB。


猜你喜欢

转载自blog.csdn.net/weixin_40011134/article/details/80940856