我是OpenGL的新手。我正在使用JOGL来玩它。我正在使用此model。
我成功将其渲染到窗口。但是,我想应用纹理/材料。我不完全确定如何做到这一点。
来自.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
还是两者都有?
答案 0 :(得分:2)
tl; dr:vt
条目将纹理坐标和f
条目索引(从1开始!)指定为三个单独的数组(v
,vt
和vn
)。
从spec,“引用顶点数据”部分:
对于所有元素,参考编号 用于识别几何 顶点,纹理顶点,顶点 法线和参数空间顶点。
这些类型的顶点中的每一个都是 单独编号,从。开始 这意味着文件中的第一个几何顶点是1,第二个是 2,依此类推。第一个纹理顶点 在文件中是1,第二个是2,和 等等。编号继续 顺序贯穿整个 文件。文件经常有多个 顶点数据列表。这个编号 即使在顶点时序列也会继续 数据由其他数据分隔。
除了计算顶点之外 从第一个列表的顶部 文件,你也可以计算顶点 从元素的位置向上列出 在文件中。当你数出来的时候 从元素列表,引用 数字是负数。一个参考 数字-1表示顶点 紧靠元素上方。一个 参考编号-2表示两个 以上参考等等
答案 1 :(得分:0)
我写了一个OBJ文件加载器和一个样本模型查看器,用LWJGL显示模型,类似于JOGL但不完全相同。 (我使用过JOGL和LWJGL - 实际上我最近从JOGL切换到了LWJGL。)
我努力使代码尽可能简洁明了。不幸的是,它是“老式的”,因为它使用固定功能管道而不是自定义着色器,但我希望它对基础知识有点有用和有益。你可以在;
找到它