drac(Google开源模型压缩算法)编译与unity中的使用

环境准备:

1.下载drac源码:https://github.com/google/draco

2.所用环境:windows10,cmake,vs2015,unity

编译drac:

1.drac源码文件中新建build文件,cmd中进入build文件夹,使用一下命令编译源码:

cmake ..

drac(Google开源模型压缩算法)编译与unity中的使用_第1张图片

将在buid文件夹下生成编译结果。

2.用vs2015打开build下vs解决方案:draco.sln,编译该解决方案,生成:

draco_encoder.exe(用于编码模型)、

draco_decoder.exe(用于解码draco_encoder.exe编码生成的文件)。

注:笔者在vs Debug模式下编译,draco_encoder.exe、draco_decoder.exe生成于build/Debug路径下。

模型压缩:

3.在Debug路径中放入测试模型:model1.obj。

4.cmd中进入Debug路径,输入以下命令进行编码。

 ./draco_encoder.exe -i model1.obj -o model1.drc

drac(Google开源模型压缩算法)编译与unity中的使用_第2张图片

成功后即可得到压缩的模型格式为.drc。
注:在参数中输入-cl 10可改变压缩率。

5.输入以下命令进行解码:

./draco_decoder.exe -i model1.drc -o model_compress.obj

unity中使用

1.将源码目录中unity文件夹下内容拖入unity工程中。

drac(Google开源模型压缩算法)编译与unity中的使用_第3张图片

 

注:笔者测试时,拖入后存在一个报错,注释掉报错代码。unity中需使用bytes类型模型,须将前述得到的.drc模型或原始.obj模型转化为.bytes。

2.使用以下命令生成.bytes格式模型:

./draco_encoder.exe -i model1.drc -o model1.bytes
// 直接通过.obj模型生成.bytes
 ./draco_encoder.exe -i model1.obj -o model1.bytes

drac(Google开源模型压缩算法)编译与unity中的使用_第4张图片

3.unity场景中创建空游戏对象。为该对象添加MeshFilter、MeshRender组件。

4.为该空游戏对象添加之前拖入工程中脚本:DracoDecodingObject.cs。

5.将前述生成的.bytes文件拖入工程Resources文件夹下。

drac(Google开源模型压缩算法)编译与unity中的使用_第5张图片

 6.打开DracoDecodingObject.cs脚本,修改下图代码(将默认字符改为:拖入.bytes模型名称)。

drac(Google开源模型压缩算法)编译与unity中的使用_第6张图片

7.点击运行,即可看到,在运行时场景中空物体被渲染为我们添加的模型。

drac(Google开源模型压缩算法)编译与unity中的使用_第7张图片

 总结:drac算法将模型编码压缩成.drc、.bytes类型,源码unity目录中DracoDecodingObject.cs将已编码模型解码为可在unity中渲染。(注:若存在错误,恳请指正,谢谢)

你可能感兴趣的:(drac(Google开源模型压缩算法)编译与unity中的使用)