我是露天的新手。我正在使用jogl玩它。我正在使用这个 模型.

我成功地将其渲染到窗口。但是,我想应用纹理/材料。我不确定该怎么做。

来自.obj文件:

f 6307/4525/3 6303/4524/3 6327/4523/3 6315/4526/3
usemtl kahki_light_pave_W.png
f 6445/3470/305 6437/4623/305 6593/4624/305 6597/4625/305
f 6594/4626/306 6438/4627/306 6446/4628/306 6598/4629/306
f 6595/4630/307 6439/4631/307 6447/4632/307 6599/4633/307
f 6448/3482/308 6440/4634/308 6596/4635/308 6600/4636/308

维基百科告诉我,之后的一切 usemtl 声明和下一个之前 usemtl 声明应该使用 khaki_light_pave_W.png. 。但是,我不确定在OpenGL中如何做到这一点。

文件顶部有一堆顶点:

v 19.886690 3.093822 -21.149584
v 23.886690 3.093822 -21.149584
vt 0.918121 0.920883
vt 0.918121 0.959193
vt -0.537323 1.541370
vt -0.537323 1.503060
vt 0.462677 0.503060

我需要使用 vt 纹理的顶点?这 f 陈述包括索引。这些是否指示 v 顶点, vt, , 或两者?

有帮助吗?

解决方案

TL; DR: vt 条目指定纹理坐标和 f 条目索引(基于1!)到三个单独的数组(v, vt, , 和 vn).

来自 规格, ,“引用顶点数据”部分:

对于所有元素,参考编号用于识别几何顶点,纹理顶点,顶点正常和参数空间顶点。

这些类型的顶点中的每一个都是分别编号的,从1开始。这意味着文件中的第一个几何顶点为1,第二个为2,依此类推。文件中的第一个纹理顶点为1,第二个为2,依此类推。编号在整个文件中依次继续。通常,文件具有多个顶点数据列表。即使通过其他数据分离顶点数据,该编号序列仍会继续。

除了从文件中的第一个列表的顶部计数顶点外,您还可以从文件中的元素位置返回列表。当您从元素计数列表时,参考号为负。参考号为-1表示元素上方正上方的顶点。参考号为-2表示上面的两个参考,依此类推

其他提示

我写了一个OBJ文件加载程序以及示例模型查看器,以使用LWJGL显示模型,该LWJGL类似于JOGL,但并不完全相同。 (我已经使用了Jogl和LWJGL-实际上我最近从Jogl切换到LWJGL。)

我努力使代码尽可能干净和简单。不幸的是,它是“老式的”,因为它使用固定的功能管道而不是自定义着色器,但我希望它对基础知识可能有用且具有启发性。您可以找到它;

http://darksleep.com/oobjloader/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top