drac(Google开源模型压缩算法)编译与unity中的使用
环境准备:
1.下载drac源码:https://github.com/google/draco
2.所用环境:windows10,cmake,vs2015,unity
编译drac:
1.drac源码文件中新建build文件,cmd中进入build文件夹,使用一下命令编译源码:
cmake ..
将在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
成功后即可得到压缩的模型格式为.drc。
注:在参数中输入-cl 10可改变压缩率。
5.输入以下命令进行解码:
./draco_decoder.exe -i model1.drc -o model_compress.obj
unity中使用
1.将源码目录中unity文件夹下内容拖入unity工程中。
注:笔者测试时,拖入后存在一个报错,注释掉报错代码。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
3.unity场景中创建空游戏对象。为该对象添加MeshFilter、MeshRender组件。
4.为该空游戏对象添加之前拖入工程中脚本:DracoDecodingObject.cs。
5.将前述生成的.bytes文件拖入工程Resources文件夹下。
6.打开DracoDecodingObject.cs脚本,修改下图代码(将默认字符改为:拖入.bytes模型名称)。
7.点击运行,即可看到,在运行时场景中空物体被渲染为我们添加的模型。
总结:drac算法将模型编码压缩成.drc、.bytes类型,源码unity目录中DracoDecodingObject.cs将已编码模型解码为可在unity中渲染。(注:若存在错误,恳请指正,谢谢)