当前位置: 首页 > 工具软件 > Draco > 使用案例 >

draco3D轻量化技术在Unity3D中应用

汤念
2023-12-01

draco3D轻量化技术在Unity3D中应用

之前完成了draco3D对glb模型轻量化的处理工作,并完成了正常的加载。先进行draco3D在U3D中的应用。

方法一:将.obj模型压缩成.drc、.bytes类型再做加载。使用工具地址:https://github.com/google/draco.下载后直接解压,得到draco-master文件夹,将其中unity文件夹直接丢进unity工程文件中。PlayerSettings-OtherSettings-Allow’unsafe’Code打钩。解决报错,这里我使用unity版本是2018.3.0f2。

安装cmake,地址https://cmake.org/download/,下载之后直接安装。在draco-master文件夹下创建build文件夹,使用cmd命令到build文件夹下输入cmake ..进行编译。然后使用VS打开build文件夹下的draco.sln解决方案进行编译,生成debug文件夹中的两个exe。

开始对obj格式的模型进行压缩:在debug文件夹下放入测试用的obj模型,cmd进行debug路径,输入:draco_encoder.exe -i model1.obj -o model1.bytes -cl 10,1047KB的obj模型压缩成bytes后只有29KB,回到unity场景中,创建一个空物体添加MeshFilter、MeshRender组件,添加DracoDecodingObject.cs,将bytes文件放到Resources下,修改DracoDecodingObject脚本代码:int numFaces = dracoLoader.LoadMeshFromAsset("model", ref mesh);运行场景,模型正常加载。该压缩生成的模型在场景中,点面数都没有变化。对于性能的优化可能微乎其微,但可以减少发布包的大小。

方法二:FBX模型通过draco算法压缩为gltf格式,并在Unity内加载。首先下载转换工具:https://github.com/facebookincubator/FBX2glTF/releases/tag/v0.9.7,其中的exe。通过CMD命令进行压缩转换:’exe地址’ -i ‘输入模型地址’ -o ‘输出地址’,输出位一个文件夹,压缩过程存在贴图寻找报错。

开始加载,unity加载gltf,用到unity版本为2022.1.16f1c1,用到的工具地址:https://github.com/siccity/gltfutility,并且在unity内部Package Manager-Add package by name,输入com.unity.nuget.newtonsoft-json包名称和3.0.1版本。

加载代码:

using Siccity.GLTFUtility;

void ImportGLTFAsync(string filepath) {

   Importer.ImportGLTFAsync(filepath, new ImportSettings(), OnFinishAsync);

}

void OnFinishAsync(GameObject result) {

   Debug.Log("Finished importing " + result.name);

}

该方法加载卡顿,并且模型和贴图中出现中文,会出现贴图颜色差异。

 类似资料: