Tag: lwjgl wavefront

将OBJ文件中的四边形转换为三角形?

起初,它似乎很明显……无论在哪里找到4个指数,每个面都会生成2个三角形,对吧? 含义如下: v 1.000000 1.000000 0.000000 v -1.000000 1.000000 -0.000000 v 1.000000 -1.000000 0.000000 v -1.000000 -1.000000 -0.000000 f -4 -3 -2 -1 ……反过来,需要转换为: v 1.000000 1.000000 0.000000 v -1.000000 1.000000 -0.000000 v 1.000000 -1.000000 0.000000 v -1.000000 -1.000000 -0.000000 f -4 -3 -2 f -2 -3 -1 当然,这个特定的例子可以正确呈现。 然而,并非所有情况都像将面分割成两个面一样简单(其中第一个面包含原始面的前三个顶点,第二个面包含最后3个顶点,如上例所示)。 以下面的多维数据集为例: v 0.000000 1.000000 1.000000 […]

为什么我的OBJ解析器渲染这样的网格?

我已经把自己的OBJ解析器/导入器支持添加到我一直在研究的3D渲染引擎上。 我遵循了这里发现的几乎’发球’的规格,目前的例外是限制对组,面,顶点,法线和纹理坐标的所有支持(所以没有材料库或自由forms的多边形支持,至今) 。 我的目标是简单地逐行解析 – 在我进行时生成面向对象的,分层的树状场景图 – 并允许开发人员自动将数据绑定到着色器程序,只需很少的手动调用开始操纵和查看网格。 最终结果是我的引擎成功解析了大多数 (如果不是全部 )有效的OBJ格式文件,提取了适当的数据并将其发送到基本着色器进行渲染。 但是,即使数据似乎在场景图中正确表示,由于某种原因它很少正确呈现…… 请注意,一个简单的平面(从3DS Max导出,只包含4个顶点和2个面)渲染完美,但是立方体或任何更高级的平面通常最终看起来像这样: 我不知道出了什么问题,AFAIK我的代码实际上应该解析并渲染基本的几何图形……那么为什么不呢? 为方便起见,我在这里上传了我的项目 。 它包含一个NetBeans项目,其中包含我的引擎的最小版本和一个Test应用程序。 我还包括3个不同版本的OBJ立方体网格和单个平面网格。 可以通过编辑Test.java顶部的值来配置应用程序,并且唯一的输入控件是用于网格平移的A,S,W和D,以及用于网格旋转的鼠标移动。 虽然我已经设法大幅度减少了项目,但最值得注意的类包括文件顶部的额外注释/信息。 考虑到所有事情,我会采取任何我能得到的想法……而且肯定不会受到重视!