问题标签 [assimp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
518 浏览

mingw - Mingw 编译的 Asset Importer 链接慢

我正在使用Asset Importer (assimp)加载模型。然而,当我开始构建我的程序时,我发现链接步骤非常缓慢 - 大约 55 秒,而在不包括 assimp 库和头文件的情况下它需要不到 2 秒。我在整个项目中有大约 30 个文件,只有 1 个实现文件使用 assimp。

我正在使用 mingw g++ 编译器,为了让 AssImp 工作,我必须使用 CMake 构建它(使用 no_boost 标志,没有工具编译)。我已经尝试过动态和静态链接它,但速度相同。在查看了输出 lib 和 dll 大小(34 和 20 MB),并遇到了这个Compiling assimp with MinGW帖子之后,我尝试在没有调试符号的情况下构建(删除 cmake 选项中 -g 的所有实例)但无法强制 CMake 停止将调试信息构建到库中 - 我并不完全确定这会首先影响链接时间。

然后我查看了可能的 CodeBlocks + MinGW 构建速度变慢,并看到了这篇文章: 为什么 MinGW 很慢?,如果 assimp 的编译很慢,但链接到另一个程序的速度很慢,这将是有意义的。

这只是使用 assimp 不可避免的现实,还是我做错了什么?

0 投票
1 回答
2264 浏览

opengl - 将assimp中的网格加载到opengl中的vbo

我正在使用本教程底部的代码使用 assimp 加载网格。 网格加载

所以我加载网格,然后将第一个加载到 vbo 中,然后将它们链接到 vao。

但是如何将第二个网格加载到 vbo 中?就像第二个网格应该包含在g_vp[g_point_count * 3 * sizeof (float)]? 因为我已经尝试过了,但它不起作用,但可能还有其他问题。

0 投票
1 回答
2414 浏览

opengl - 使用 assimp 加载不同的纹理类型

默认情况下,我会像这样加载所有内容

它非常非常慢,所以我决定使用 assimp。模型本身加载得很好。但它们根本没有任何纹理(存在诸如颜色之类的东西) 在此处输入图像描述

我加载这样的材料

我设置aiTextureType为漫反射,但在我的 .obj 文件中也有shininess, specular, ambient材质。

我画的都是这样

那么如何加载其他类型的材料呢?

0 投票
0 回答
654 浏览

c++ - 未找到 -lassimp 的 xcode 错误库

我使用以下答案中描述的方法:https : //stackoverflow.com/a/18922738/2197292 在我的 Mac OS X 10.9 上构建 Assimp 3.0。我使用 Xcode 5.0.2。然后我将 libassimp.a 添加到框架中,并将 /usr/local/include/assimp 添加到标头搜索路径中。我错过了什么吗?当我构建我的项目时,我收到了这个错误:

0 投票
1 回答
793 浏览

c++ - Assimp 没有从 OpenGL 中的 MD5 模型 Bob 的节点中加载骨骼名称

我目前正在加载一个 MD5 模型,用于使用 ASSIMP 测试动画(来自以下教程:http ://ogldev.atspace.co.uk/www/tutorial38/tutorial38.html )。到目前为止,一切似乎都加载得很好(静态模型渲染得很好),但由于某种原因,Assimp 中的节点不显示骨骼名称。每个节点的名称是<MD5_Root><MD5_Mesh>不是它应该显示的任何骨骼名称。

以下是代码片段,它使用节点名称检查 ASSIMP 中的所有骨骼名称。永远不会到达字符串变成"HOI". nodeName 应该成为像“pubis”或“upperarm.L”这样的骨骼名称。

此外,还有一段 .MD5 文件,它可能会显示一些有用的信息。

由于某种原因,它没有正确加载名称,或者它可能是 MD5 文件本身的错误?

0 投票
1 回答
514 浏览

opengl - CDT eclipse OS X 10.6.8 上的 AssImp 库问题:体系结构 i386 不支持的文件格式

我一直在尝试在 Eclipse (CDT) 中的 OpenGL 项目中链接非常有用的 AssImp 库

我按照这个问题的答案成功安装了 AssImp 库:

构建开放资产导入库 (Assimp) 时遇到问题

我还按照这个问题的答案在 Eclipse(CDT) 中成功设置了 OpenGl:

OS X 上 Eclipse 中的 OpenGL 和 GLUT

现在,当我尝试构建一些正在使用 AssImp-lib 的代码时,会出现以下错误:

ld:警告:在 /usr/local/lib/libassimp.a 中,文件是为不受支持的文件格式构建的,该文件格式不是被链接的体系结构 (i386)

我猜这个库是为错误的架构而构建的......我尝试在 CMake 的“CMAKE_OSX_ARCHITECTURES:”标志中填写“i386”,但这对任何方式都没有帮助......


好的,我更改了架构,但它仍然给出了一些链接错误..

有人有同样的错误吗?

未定义符号:“_get_crc_table”,引用自:libassimp.a(unzip.co) 中的 _unzOpenCurrentFile3 “ inflateInit2",引用自:Assimp::XGLImporter::InternReadFile(std::basic_string, std::allocator > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(XGLLoader.cpp.o) Assimp::BlenderImporter: :InternReadFile(std::basic_string, std::allocator > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(BlenderLoader.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)在 libassimp.a(XFileParser.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&) 在 libassimp.a(XFileParser.cpp.o) _unzOpenCurrentFile3 在 libassimp.a(unzip.co) "_inflateEnd" ,引用自:Assimp::XGLImporter::InternReadFile(std::basic_string, std::allocator > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(XGLLoader.cpp.o) Assimp::BlenderImporter:: InternReadFile(std::basic_string, std::allocator > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(BlenderLoader.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&) in libassimp.a(XFileParser.cpp.o ) Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a(XFileParser.cpp.o) _unzCloseCurrentFile in libassimp.a(unzip.co) "_inflateSetDictionary",引用自:Assimp::XFileParser:: XFileParser(std::vector > const&)在 libassimp.a(XFileParser.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)在 libassimp.a(XFileParser.cpp.o) "_inflate",引用自:Assimp::XGLImporter::InternReadFile(std::basic_string, std::allocator > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(XGLLoader.cpp.o) Assimp::BlenderImporter::InternReadFile (标准::basic_string, std::allocator > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(BlenderLoader.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&) in libassimp.a(XFileParser .cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a(XFileParser.cpp.o) _unzReadCurrentFile in libassimp.a(unzip.co) "_crc32",引用自:_unzReadCurrentFile in libassimp.a(unzip.co) _unzReadCurrentFile in libassimp.a(unzip.co) "_inflateReset",引用自:Assimp::XFileParser::XFileParser(std::vector > const&) in libassimp.a(XFileParser.cpp.o ) Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a(XFileParser.cpp.o) ld: 未找到符号a(BlenderLoader.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)在 libassimp.a(XFileParser.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a(XFileParser.cpp.o) _unzReadCurrentFile in libassimp.a(unzip.co) "_crc32",引用自: _unzReadCurrentFile in libassimp.a(unzip.co) _unzReadCurrentFile in libassimp.a(unzip.co) "_inflateReset" ,引用自:Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a(XFileParser.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a( XFileParser.cpp.o) ld: 未找到符号a(BlenderLoader.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)在 libassimp.a(XFileParser.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a(XFileParser.cpp.o) _unzReadCurrentFile in libassimp.a(unzip.co) "_crc32",引用自: _unzReadCurrentFile in libassimp.a(unzip.co) _unzReadCurrentFile in libassimp.a(unzip.co) "_inflateReset" ,引用自:Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a(XFileParser.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)in libassimp.a( XFileParser.cpp.o) ld: 未找到符号vector > const&)in libassimp.a(XFileParser.cpp.o) _unzReadCurrentFile in libassimp.a(unzip.co) "_crc32",引用自:libassimp.a(unzip.co) 中的_unzReadCurrentFile libassimp.a(unzip.co) 中的_unzReadCurrentFile co) "_inflateReset",引用自:Assimp::XFileParser::XFileParser(std::vector > const&) in libassimp.a(XFileParser.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)在 libassimp.a(XFileParser.cpp.o) ld 中:找不到符号vector > const&)in libassimp.a(XFileParser.cpp.o) _unzReadCurrentFile in libassimp.a(unzip.co) "_crc32",引用自:libassimp.a(unzip.co) 中的_unzReadCurrentFile libassimp.a(unzip.co) 中的_unzReadCurrentFile co) "_inflateReset",引用自:Assimp::XFileParser::XFileParser(std::vector > const&) in libassimp.a(XFileParser.cpp.o) Assimp::XFileParser::XFileParser(std::vector > const&)在 libassimp.a(XFileParser.cpp.o) ld 中:找不到符号libassimp.a(XFileParser.cpp.o) 中的向量 > const&) Assimp::XFileParser::XFileParser(std::vector > const&) 在 libassimp.a(XFileParser.cpp.o) 中 ld: 未找到符号libassimp.a(XFileParser.cpp.o) 中的向量 > const&) Assimp::XFileParser::XFileParser(std::vector > const&) 在 libassimp.a(XFileParser.cpp.o) 中 ld: 未找到符号

0 投票
0 回答
789 浏览

c++ - 使用 Assimp 加载 3D 对象时内存位置异常的 std::bad_alloc

我正在尝试使用用 VS2008 构建的 Assimp 加载 3D 对象。Assimp 示例代码正确加载对象,直到我定义(但不实例化)一个网格类来处理我的构建中的对象数据。具体来说,当我包含检查向量大小的代码时会发生错误。无论我是否使用 Assimp 的 noboost 版本,都会出现此问题。我尝试了几个不同的 .obj 文件,结果相同。

使用调试器,我发现 Assimp 加载程序在读取 .obj 文件的面时失败。这发生在 Assimp 的 ObjFileParser.cpp 的第 317 行:

Mesh.cpp(该类未实例化或用作 main.cpp 中的预声明)

主文件

在 mlock.c 中抛出内存位置异常的 std::bad_alloc

我的调用堆栈是

输出:

地板.obj:

0 投票
1 回答
828 浏览

c++ - 通过 OpenGL Assimp 加载的对象有时会反转法线

目前,我正在尝试在搅拌机中制作的圆柱体对象上进行照明(在 z 轴上缩放的基本圆柱体,未进行进一步处理)并通过 Assimp 使用以下选项加载该对象aiProcess_GenSmoothNormals | aiProcess_Triangulate | aiProcess_CalcTangentSpace | aiProcess_FlipUVs。在搅拌机的波前导出选项triangulate中设置了该选项。

问题是在 cilinder 上进行了一些缩放(通常高于某个缩放阈值),我的 OpenGL 实现显示了反转的法线(我有一个显示法线的几何着色器),并且因为它反转了法线,所以照明也反转了。这只发生在这些具有一定缩放比例的圆柱状物体上(至少,只有在我发生这种情况时)。我场景中的所有其他对象都可以正常工作,除了这些圆柱体。

我不知道这是否与 Assimp 加载 .obj 文件的方式有关,或者与混合器在导出时处理法线的方式有关,或者可能与较大的 z 比例有关,因为它破坏了正常的插值或任何东西?在下面,您将找到反向法线(左)和正确法线(右)的图像,其中反向法线对象通过搅拌器完成了较大的 z 比例。

不正确和正确的法线


编辑

这次我手动对搅拌机中的圆柱体进行了三角测量并验证了它们的法线。所有圆柱体的法线都正确,然后按原样导出。但是,一个管道现在有正确的照明,但其他管道的法线仍然是反转的,而它们与工作管道具有相同的三角剖分,这令人困惑。下图显示了圆柱体的法线。

搅拌机中管道的法线


编辑

好吧,我想通了。一旦我开始将正确点亮的管道缩放到与不正确管道(左侧)完全相同的比例,然后正确管道的法线再次反转(在我的 OpenGL 程序中反转,在 Blender 中,法线看起来仍然很好)。因此,圆柱体长度的比例肯定与它们的法线反转有关,尽管我不知道那可能是什么。

0 投票
1 回答
844 浏览

c++ - 使用 Assimp 在 Ogre 中渲染对象时的问题

当我尝试查看 Assimp 支持的 3D 文件(.3ds .dae 等)时,它们无法正确显示。例如,“Jeep1.3ds”向我展示了一半的车身。信息,网格和法线的所有节点都正确获得,并且顶点和面的数量是正确的(我认为)。纹理不符合正确的坐标,我猜会与上面有关......在图片中你可以“欣赏”我的结果并纠正。感谢您的任何帮助或意见。

在此处输入图像描述

食人魔代码

Assimp .CPP

假设.H

0 投票
1 回答
206 浏览

c++ - .ply 文件中的垃圾脸相关信息

我正在尝试使用ASSIMP从 ply 文件中提取顶点/法线/面信息,然后使用 OpenGL 渲染它。以下是代码:

顶点值打印得很好,但是与面部相关的信息是一种垃圾,这种东西:

Q1。我在面部相关代码中做错了吗?

Q2。此外,我解析的任何 ply 文件中似乎都没有正常的相关信息。我必须手动计算一切的正常值。ply 根本没有正常信息吗?

PS:我已经在几个不同的层文件上尝试了代码,我仍然得到面部信息的垃圾值。


编辑 1:

通过将代码更改为以上,我将备用数字作为输出 -