问题标签 [wavefront]

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 投票
1 回答
1267 浏览

indexing - directX 9 中的对象加载器

我写了一个程序来在directx 9中加载一个obj文件。我所做的只是从文件中读取顶点数据和索引数据(我没有读取任何纹理或顶点法线数据)。然后我将这些数据直接插入顶点和索引缓冲区。

当我运行代码时,对象被渲染,但它们不是正确的形状。网格变形。这是我的代码 -

当我显示一个立方体时,它只显示了一半,并且缺少一些面。我怀疑是索引缓冲区有问题,但我不知道如何解决。

我真的需要帮助。谢谢大家。

0 投票
0 回答
412 浏览

opengl - 如何使用 libg3d 将波前模型加载到 OpenGL

我正在做我的论文项目。我需要一些帮助来尝试将波前 (.obj) 模型加载到 OpenGL。我一直在寻找,我找到了可以让你加载各种 3d 模型格式的Libg3D 。

我在理解如何加载模型以及是否可以通过 libg3d 将模型加载到我的 opengl 应用程序时遇到问题。

0 投票
1 回答
2243 浏览

opengl - 将 OpenGL 中的网格渲染为一系列子组?

我正在完成一个波前对象解析器,我想用它来构造通用网格对象。我的引擎使用 OpenGL 4 和着色器来绘制引擎中的所有内容。

我的问题是关于如何确保渲染网格的最佳渲染效率。

波前.obj 文件通常指定了许多对象子组。

可能会为子组分配特定的材料(例如闪亮的红色)。

因此,网格可能是相当复杂的子组集合,每个子组都分配有自己的材质。

我的问题是——

问:我是否需要分别绘制每个子组,例如为每个子组调用 glDrawElements ?(因此,如果我有 4 个单独的子组,我将不得不进行 4 次 glDrawElements 调用,从而通过 4 次统一更改(对于材质/纹理)调用着色器 4 次)

如果这是正确的,那么我将不得不计算:

每个子组中的索引(意味着每个子组有一个单独的索引数组和 VAO) 子组开始的顶点偏移量

这似乎非常低效,我是在吠叫错误的树吗?

此外,来自Wavefront obj wiki 页面

谁能建议平滑着色值表示什么?例如 s1、s2、s4 等。

0 投票
1 回答
383 浏览

c++ - 如何组织要渲染的对象

我想渲染从波前 obj 文件导入的对象。该对象具有多个组和材质:

模型的不同部分需要单独渲染,因为它们具有不同的材质。

我将构建一个包含有关模型的信息的容器,并且我想知道组织要渲染的对象的“队列”的最佳/常用方法是什么。

我的想法,我不知道它是否好,如下(使用伪代码):对于每个组,g将所有顶点信息存储在 object 中VertexInformation g1, g2,并将每个usemtl关于面(和使用的材料)的信息存储在FaceInformation f1, f2, f3, f4.

然后渲染将如下所示:

g1或者也许更好地一次加载所有顶点g2

是这样吗?或者它有一些巨大的缺点?

0 投票
2 回答
2471 浏览

java - WaveFront .obj 文件 - “f”命令有什么作用?

我一直在阅读David Brackeen 的用 Java 开发游戏。直到现在我都明白了书中的一切。在 Wavefront 对象文件中,我了解该v命令的作用,但我不了解该f命令。例如:

f命令在这里做什么?

0 投票
1 回答
892 浏览

java - 波前 .obj .Mtl 结构

我正在尝试使用 lwjgl 在 Java 中加载 .obj 文件,而无需使用任何库来执行此操作。我创建了一个类来加载没有材质和纹理的模型。这很容易。但现在我想用材质和纹理来加载模型。我的问题是关于 .mtl 文件的知识。我在任何地方都没有找到 .mtl 文件的任何解释。但我需要知道这些 Ka、Kd、Ks、Tr、Ns 和 map_... 是什么意思。也许有人知道网络上某个地方的一个很好的解释?

我的第二个问题是关于 .obj 文件中纹理的纹理坐标。我不明白如何在具有 2D 纹理坐标的 3D 模型上绘制 2D 纹理,因为您需要 3D 房间中的第三个值,因为 3D 房间中的 2D 平面也需要每个顶点 3 个值。

0 投票
1 回答
16061 浏览

blender - Wavefront .obj 文件的规格是什么?

我想为 Blender 的 .obj 文件编写一个解析器。文件格式似乎不言自明,但似乎也缺少一些数据。例如,一个简单的立方体(默认的 Blender 立方体)有 8 行顶点,但我期望看到 36 行(12 个三角形组成一个立方体)。

我认为,至少对我来说,这种困惑源于在 direct3d 中创建立方体的方式。Direct3d 需要 36 个顶点来形成一个立方体。所以我认为我需要推断其他 28 个顶点。当尝试解析更复杂形状的顶点时,这种类型的猜测可能会导致问题。所以,我想如果我能找到有关文件格式的官方规范,它可能会为我提供一些关于如何解释数据的见解。

之前似乎有人问过同样的问题:如何从 DCC 工具(如 Blender)中获取 OBJ 文件中适当数量的顶点以用于 OpenGL ES? 但它对我没有任何有用的信息。

0 投票
1 回答
1326 浏览

android - 将波前文件绘制到 android opengl gles20

这是我的问题。我试图从资产中读取波前 obj 文件,显然它可以正确读取,但是当我尝试将对象绘制到 8 个三角形的 glsurfaceview 2 上时,没有绘制,我不知道为什么。

这是 obj 文件(一个八面体):

这是读取文件的代码:

这是将对象绘制到 opengl GLES20 中的代码:

0 投票
0 回答
201 浏览

php - 来自php中多维数组的3d波前对象坐标数据

嗨,我做了一个简单的脚本(算法)来用 php 解析波前目标文件。我可以提取每个顶点的 3d 坐标并将它们分配到一个数组中,我有每个顶点的数组 $y、$x、$z。我的目标是围绕主坐标创建一个顶点立方体,所以我将每个轴的负坐标和正坐标转换为绝对值,然后将它们除以分离距离。

例如:

相同的过程为我提供了每个轴的 $number_of_vertex 。从中我可以使用循环来创建新点的 x、y、z 坐标,以在我的 3d 形状周围形成一个点的立方体。我的最终目标是只保留原始 3d obj 02.0000 以内的点,这是一种三角测量形式,我想就如何有效地做到这一点提供一些建议。

首先形成一个立方体然后提取端点对我来说很重要,因为我希望结果对象是原始对象的细分版本,由类似于用于 3d 打印的 gcode 的相同大小的矩形面制成,但在我的情况下,我的对象将是由多个小方脸组成。

谢谢,我希望我的目标足够明确。

0 投票
3 回答
857 浏览

opengl - Wavefront *.OBJ 文件中的第三个纹理坐标

Wavefront *.OBJ文件中纹理坐标中的第3个分量是什么意思?

文件看起来像


更新模型是在 3DS Max 中创建的,源纹理是 PNG 文件。所以纹理是二维的


更新 2

当我翻转第二个坐标时,当我使用 OpenGL 渲染它时,纹理看起来正确。第三坐标

u1 = u v1 = 1 - v

w - 根本不使用。