问题标签 [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.
c++ - 你能用顶点数组 OpenGL 4.4 做到这一点吗?
我正在加载 Collada(.dae 文件)并且模型有 2 个对象。第一个是带有很多顶点的布料,带有浅蓝色材料。第二个是布料应该在它掉下来时折叠起来的盒子。
这应该是一个 250 帧的动画,但我不确定它是否真的是。当我将它加载到 Assimp 中aiScene*
时,它会说HasAnimation() == 0
...它还说布料的网格没有颜色,HasVertexColors() == 0
这让我担心我必须再看看导出它。我不知道,也许你能说出来?我会将它链接到外部,因为它对于这篇文章来说太大了。(对此感到抱歉)
落布(科拉达动画.dae): http: //pastebin.com/54LkKq8k
我的问题是看不到浅蓝色的布,盒子是黑色的,如(0, 0, 0)
...
初始化 VBO:
绘制模型:
顶点着色器:
片段着色器:
blender - 从搅拌机导出动画以与 Assimp 一起使用
我注意到,如果我将搅拌机项目导出为 obj 文件,我可以选择切换“导出动画”,这将生成很多文件,每帧一个。我想使用 Collada (.dae) 格式来导出我的动画。问题是,当我加载我的 Collada 文件时,它说NumAnimations == 0
!
1)为什么应该存储动画的文件说0动画?
2)当我让它工作时,如何在 Assimp 中的帧之间交换?
animation - 使用 Assimp 了解动画加载
我制作了一个容器类,它基本上包含了渲染动画所需的所有信息。我正在使用 Assimp 库来加载动画。然后将来自scene->mVertices
等的数据分配给我的数组缓冲区,我无法弄清楚我应该如何将其他帧的数据获取到我的缓冲区中!
我知道有一个函数叫做HasAnimations()
,还有一个aiAnimation **mAnimations
. 但是我在那里找不到任何与获取下一组顶点数据相关的数据。
我已经设法用它加载了一系列 obj 文件并绘制它们,以确认我的类正常工作。但显然,当我想扩展到真正的交易时,我更愿意或实际上需要使用其他东西。因为单独加载 250 帧需要几分钟。(加载一个简单的动画应该在大约 5 秒内完成,对吧?)
我愿意使用任何类型的文件格式。但我需要知道如何在 Blender 中进行设置,以便导出动画。因为我现在似乎也失败了,因为我对 Blender 的经验很少。
我一直在寻找关于这个库和搅拌机导出的教程 2 天,但几乎没有发现任何有用的东西。我也确实查看了 Assimp 的文档,这让我到目前为止,但没有解释关于 aiAnimation 如何影响顶点的事情。或者我如何获得我需要的其他数据帧。
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
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,核心配置文件)
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。它必须在矩阵级别。
提前致谢。
c++ - Assimp链接错误
我刚刚下载assimp 3.0
了库并使用cmake构建了所需的make文件,然后编译并构建了库本身,过程成功(对StepFile.h几乎没有修改),
我的 assimp 头文件夹位于:
/usr/local/包括
我的 libassimp.a 位于:
/usr/local/lib
但是,当我在命令行项目中指定库和头文件并尝试测试我的项目时,出现以下错误:
当我添加时-lassimp
,Other Linker Flags
我得到以下错误:
c++ - 'sqrt' : 对重载函数的模糊调用 ..\assimp\vector3.inl
错误
错误 C2668:“sqrt”:对重载函数 c:\program files\assimp\include\assimp\vector3.inl 的模糊调用
当我在主 cpp 文件中包含“scene.h”时发生:
我无法理解它与什么冲突?
c++ - Assimp 不为网格和动画加载名称
我正在使用 Assimp 加载 COLLADA 模型,但scene->mMeshes[i]->mName.C_Str()
调用会" "
为每个现有的网格索引返回我(当然," "
不是它们的原始名称)。动画也是如此。
但是,我可以正确检索骨骼和节点的名称。
我也尝试过加载.ply
和.obj
模型具有相同的结果。这是我的程序的问题还是每个人都遇到同样的问题?
PS:我正在使用 Blender v2.70 导出模型。
c++ - 带有骨骼的 Assimp + COLLADA 模型 = 不正确的顶点位置
我正在使用 Assimp 加载使用 Blender v2.7 创建和导出的 COLLADA 模型,但我注意到一个有趣的问题。每当我(在 Blender 中)以“对象模式”而不是“编辑模式”对网格应用(在 Blender 中)转换时,生成的转换不会应用于我从 Assimp 导入器数据中读取的顶点,而是应用于包含网格的mParent
矩阵。aiNode
这不是真正的问题,因为我可以读取网格的顶点,然后将它们乘以aiNode
'mParent
矩阵以获得正确位置的网格顶点。
每当我尝试对有骨骼的网格做同样的事情时,问题就会出现。我不知道为什么,但在这种情况下,我在“对象模式”中应用的转换既没有应用于我直接从网格读取的顶点,也没有应用于aiNode
'smParent
矩阵。
有人可以向我解释如何使用 Assimp 和 COLLADA 模型获得带有骨骼的网格的顶点的正确位置吗?