Google 3D压缩项目Draco简析

Google 3D压缩项目Draco简析


2017年1月份时,google发布了名为“Draco”的开源3D图形压缩库
github源码下载地址: https://github.com/google/draco

编译

我在Windows下成功编译,用的是VS2017,首先下载好源码后,用CMAKE-GUI对源码进行编译。会生成 draco_encoder 和 draco_decoder 两个可执行文件,也可以用VS看其源码。

编码

使用 draco_encoder 压缩 obj 或 ply 的文件,其中 ply文件格式只包含顶点信息,而obj文件包含顶点信息和面的信息。顶点信息就是该点的物体坐标、法线向量、纹理坐标等,如果绑定了骨骼,还有各块骨骼的权重。
面的信息指怎么由顶点围成面,它是一系列顶点索引的集合。
obj文件编码:

./draco_encoder -i in.obj -cl 10  -qp 10

其中-i是输入文件;-cl是压缩等级,等级范围是(0—10),压缩等级越大压缩效果越好,压缩时间越长;-qp是顶点坐标量化位数,默认为14位。
ply文件编码:

,/draco_encoder  -point_cloud -i in.ply -cl 10  -qp 10

其中-i是输入文件;-point_cloud表示不压缩面信息,只压缩顶点信息;-cl是压缩等级;-qp是顶点坐标量化位数,默认为14位。
注意:当qp等于0时表示不进行量化,进行无损压缩。-point_cloud情况下除了浮点型数据无损压缩用SequentialAttributeEncodersController方法进行压缩,其余情况用KdTreeAttributesEncoder方法进行压缩。

常用的输入参数如下:

-h | -?        show help
-i <input>     input file name
-o <output>    output file name
-point_cloud   forces the input to be encoded as a point cloud
-qp <value>    quantization bits for the position attribute, default=14
-qt <value>    quantization bits for the texture coordinate attribute, default=12
-qn <value>    quantization bits for the normal vector attribute, default=10
-qg <value>    quantization bits for any generic attribute, default=8
-cl <value>    compression level [0-10], most=10, least=0, default=7
--skip         ATTRIBUTE_NAME skip a given attribute (NORMAL, TEX_COORD, GENERIC)
--metadata     use metadata to encode extra information in mesh files

解码

./draco_decoder -i in.drc -o out.obj

其中-i是输入文件,-o是输出文件。

项目代码整体框架分为两部分压缩mesh(顶点信息以及面信息)以及压缩pointcloud(只有顶点信息)。

其中包含面信息的压缩方法比较多,主要是用 edge breaker 算法去压缩面的信息,并产生 CornerTable,用平行四边形差分方式压缩顶点属性信息。当输入文件不包含面时压缩顶点属性值的算法主要是kd树,将所有属性组合成一个多维向量进行压缩。

相比MPEG的G-PCC点云压缩项目而言,Draco的压缩效率比较低,但是压缩、解压速度却比它快得多,因此Draco适合用在一些实时性要求高的项目中。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值