问题标签 [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 投票
3 回答
640 浏览

c++ - 你能用顶点数组 OpenGL 4.4 做到这一点吗?

我正在加载 Collada(.dae 文件)并且模型有 2 个对象。第一个是带有很多顶点的布料,带有浅蓝色材料。第二个是布料应该在它掉下来时折叠起来的盒子。

这应该是一个 250 帧的动画,但我不确定它是否真的是。当我将它加载到 Assimp 中aiScene*时,它会说HasAnimation() == 0...它还说布料的网格没有颜色,HasVertexColors() == 0这让我担心我必须再看看导出它。我不知道,也许你能说出来?我会将它链接到外部,因为它对于这篇文章来说太大了。(对此感到抱歉)

落布(科拉达动画.dae): http: //pastebin.com/54LkKq8k

我的问题是看不到浅蓝色的布,盒子是黑色的,如(0, 0, 0)...

初始化 VBO:

绘制模型:

顶点着色器:

片段着色器:

0 投票
1 回答
988 浏览

blender - 从搅拌机导出动画以与 Assimp 一起使用

我注意到,如果我将搅拌机项目导出为 obj 文件,我可以选择切换“导出动画”,这将生成很多文件,每帧一个。我想使用 Collada (.dae) 格式来导出我的动画。问题是,当我加载我的 Collada 文件时,它说NumAnimations == 0

1)为什么应该存储动画的文件说0动画?

2)当我让它工作时,如何在 Assimp 中的帧之间交换?

0 投票
1 回答
1583 浏览

animation - 使用 Assimp 了解动画加载

我制作了一个容器类,它基本上包含了渲染动画所需的所有信息。我正在使用 Assimp 库来加载动画。然后将来自scene->mVertices等的数据分配给我的数组缓冲区,我无法弄清楚我应该如何将其他帧的数据获取到我的缓冲区中!

我知道有一个函数叫做HasAnimations(),还有一个aiAnimation **mAnimations. 但是我在那里找不到任何与获取下一组顶点数据相关的数据。

我已经设法用它加载了一系列 obj 文件并绘制它们,以确认我的类正常工作。但显然,当我想扩展到真正的交易时,我更愿意或实际上需要使用其他东西。因为单独加载 250 帧需要几分钟。(加载一个简单的动画应该在大约 5 秒内完成,对吧?)

我愿意使用任何类型的文件格式。但我需要知道如何在 Blender 中进行设置,以便导出动画。因为我现在似乎也失败了,因为我对 Blender 的经验很少。

我一直在寻找关于这个库和搅拌机导出的教程 2 天,但几乎没有发现任何有用的东西。我也确实查看了 Assimp 的文档,这让我到目前为止,但没有解释关于 aiAnimation 如何影响顶点的事情。或者我如何获得我需要的其他数据帧。

0 投票
0 回答
233 浏览

ios - I have an .obj containing UVW mapping and my assimp fail to load it

I am using assimp for ios from h t tps://github.com/cfr/assimp-ios these file are exported from 3d max:

  • .obj h t t ps://drive.google.com/file/d/0B_Nuhl0WqfMjMUF5cks2YmR2Rlk/edit?usp=sharing
  • .mlt h t t ps://drive.google.com/file/d/0B_Nuhl0WqfMjMmtSSVZyYV85b3c/edit?usp=sharing

I import the file with this statement:

with no error report from aiGetErrorString() then i check imported data by logging value in

(where n and k is index of particular mesh and vertex)

The result is

  • mNumUVComponents[0] is 2 for all value of n
  • mTextureCoords[0][k].z is 0 for all value of n and k However
  • mTextureCoords[0][k].x, mTextureCoords[0][k].y is correct according to .obj

    for example, 1st texture coordinate for 1st object in .obj is vt -248.0264 1000.0000 50.0000 the respective logging show that:

  • mNumUVComponents[0] is 2

  • mTextureCoords[0][0].x is -248.0264

  • mTextureCoords[0][0].y is 1000.0000 mTextureCoords[0][0].z is 0

0 投票
1 回答
655 浏览

c++ - 我遇到的 glDrawRangeElements 问题

我遇到了一些问题glDrawRangeElements()。基本上,我将给定模型中的每个网格都保存在同一个顶点/索引缓冲区中,并用于glDrawRangeElements()有选择地绘制它们(如果必须在每次绘制之间更改材质等)。

这是我用来在模型中绘制网格的函数:

在哪里va.drawRange()

subMesh[i].start 是子网格的第一个索引。subMesh[i].end 是最后一个索引。这些值是在导入网格时确定的(使用 assimp):

此代码针对场景中 assimp 导入的每个网格运行。

我遇到的问题是 drawMesh(0) 和 drawMesh(1) 绘制相同的东西,即使 subMesh[0] 和 subMesh[1] 包含不同的值(具体来说, subMesh[0] 有 start = 0 和 end = 35,subMesh[1] 的 start = 36 和 end = 71)。如果我一次绘制整个网格,使用glDrawElements(),它会正确绘制两个子网格,所以我知道顶点和索引数据是正确的。

我究竟做错了什么?

(PS。我使用的是 OpenGL 3.3,核心配置文件)

0 投票
0 回答
446 浏览

c# - 在 MonoGame 中使用 AssimpNet 进行 3d 编程

我使用 Windows 8 和 Visual C# 2010 IDE 以及最新版本的 MonoGame。由于 MonoGame 对 3d 模型的支持有限,并且我想导入 3ds 或 Obj 文件,因此我决定尝试使用 AssimpNet。虽然导入我需要的文件应该没有问题(还没有尝试过),但我不知道如何处理导入的场景对象来渲染我的网格。是否有任何与 XNA 或 MonoGame 相关的网站可以展示如何做到这一点并最好深入处理这个问题?我在 Google 中搜索了各种术语,但没有找到。AssimpNet 的帮助文件和文件文档要么不起作用,要么只提供定义。我正在寻找一个通过 C# 深入讨论 3d 编程信息的站点,最好是 Monogame 或 XNA。我不能简单地为此使用 DrawModel。它必须在矩阵级别。

提前致谢。

0 投票
2 回答
2182 浏览

c++ - Assimp链接错误

我刚刚下载assimp 3.0了库并使用cmake构建了所需的make文件,然后编译并构建了库本身,过程成功(对StepFile.h几乎没有修改),

我的 assimp 头文件夹位于:

/usr/local/包括

我的 libassimp.a 位于:

/usr/local/lib

但是,当我在命令行项目中指定库和头文件并尝试测试我的项目时,出现以下错误:

当我添加时-lassimpOther Linker Flags我得到以下错误:

0 投票
1 回答
843 浏览

c++ - 'sqrt' : 对重载函数的模糊调用 ..\assimp\vector3.inl

错误

错误 C2668:“sqrt”:对重载函数 c:\program files\assimp\include\assimp\vector3.inl 的模糊调用

当我在主 cpp 文件中包含“scene.h”时发生:

我无法理解它与什么冲突?

0 投票
1 回答
870 浏览

c++ - Assimp 不为网格和动画加载名称

我正在使用 Assimp 加载 COLLADA 模型,但scene->mMeshes[i]->mName.C_Str()调用会" "为每个现有的网格索引返回我(当然," "不是它们的原始名称)。动画也是如此。

但是,我可以正确检索骨骼和节点的名称。

我也尝试过加载.ply.obj模型具有相同的结果。这是我的程序的问题还是每个人都遇到同样的问题?

PS:我正在使用 Blender v2.70 导出模型。

0 投票
1 回答
670 浏览

c++ - 带有骨骼的 Assimp + COLLADA 模型 = 不正确的顶点位置

我正在使用 Assimp 加载使用 Blender v2.7 创建和导出的 COLLADA 模型,但我注意到一个有趣的问题。每当我(在 Blender 中)以“对象模式”而不是“编辑模式”对网格应用(在 Blender 中)转换时,生成的转换不会应用于我从 Assimp 导入器数据中读取的顶点,而是应用于包含网格的mParent矩阵。aiNode

这不是真正的问题,因为我可以读取网格的顶点,然后将它们乘以aiNode'mParent矩阵以获得正确位置的网格顶点。

每当我尝试对有骨骼的网格做同样的事情时,问题就会出现。我不知道为什么,但在这种情况下,我在“对象模式”中应用的转换既没有应用于我直接从网格读取的顶点,也没有应用于aiNode'smParent矩阵。

有人可以向我解释如何使用 Assimp 和 COLLADA 模型获得带有骨骼的网格的顶点的正确位置吗?