assimp,如何保存压缩的 assbin 文件

Posted

技术标签:

【中文标题】assimp,如何保存压缩的 assbin 文件【英文标题】:assimp, how to save compressed assbin file 【发布时间】:2018-10-26 21:24:45 【问题描述】:

我正在使用 assimp 将一些 .obj 文件转换为专有格式 assbin,以便在我正在编写的引擎中更快地加载它们。 我的代码是:

Assimp::Exporter Exporter;
Assimp::Importer Importer;
const aiExportFormatDesc* format = Exporter.GetExportFormatDescription(11);
const aiScene* pScene;

printf("Converting: Arbor Obj/Arbor");
pScene = Importer.ReadFile("Objects/Arbor Obj/Arbor.obj", aiProcess_Triangulate | aiProcess_GenSmoothNormals | aiProcess_FlipUVs);
Exporter.Export(pScene, format->id, "Objects/Arbor Obj/Arbor.ass", aiProcess_Triangulate | aiProcess_GenSmoothNormals | aiProcess_FlipUVs);

它完美无缺,但我不知道如何保存压缩的 assbin 文件。 根据网上找到的文档,我确实知道这是可能的,但我不知道如何实现。

【问题讨论】:

你在说什么样的压缩?为什么你认为它应该在那里?在快速查看 assbin 编写器源代码后,我没有看到任何关于压缩支持的提示。当然,您可以使用 zlib/lz4/zstd/... 之类的通用压缩,但它与 assimp 并没有真正的关系。 让我想到这一点的文本之一就是这里的这篇文章: const char* AICMD_MSG_DUMP_HELP = "assimp dump [] [-b] [-s] [-z] [常用参数]\n" "\t -b 二进制输出\n" "\t -s Shortened \n" "\t -z Compressed \n" "\t[查看 assimp_cmd 文档以获取所有常用参数的完整列表] \n" "\t -cfast 快速后处理预设, 只运行几个重要步骤 \n" "\t -cdefault 默认后处理:运行所有推荐的步骤\n" "\t -cfull 触发几乎所有后处理步骤 \n" ; #include "../../code/assbin_chunks.h" 文件* out = NULL;布尔缩短 = false; // ---------------------------------------- ------------------------------------------------------- // 压缩二进制转储文件(从偏移量 head_size 开始) void CompressBinaryDump(const char* file, unsigned int head_size) // 为简单起见 ... 再次将文件复制到内存中并在那里压缩 FILE* p = fopen(file,"r"); fseek(p,0,SEEK_END);常量 uint32_t 大小 = ftell(p); fseek(p,0,SEEK_SET); if (size uLongf out_size = (uLongf)((size-head_size) * 1.001 + 12.); 【参考方案1】:

目前不支持编写压缩的 assimp.xml 或 assimp.bin 格式。看看这个feature requestfir 关注它的进展。

【讨论】:

感谢您的回复。我会做的,也会尝试其他一些方法。如果在我的研究过程中发现任何有用的东西,我会发布

以上是关于assimp,如何保存压缩的 assbin 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将栅格保存在包中

如何在 MATLAB 中将 .mat 文件内容保存在内存中?

如何使用 assimp 在 C++ 中旋转蒙皮模型的骨骼?

Assimp FBX 加载器和 PBR 纹理

matlab中如何保将显示出来的图像保存

如何让 AssImp 正常工作?