0

我对此有点陌生,所以我很难过。我在搅拌机中创建了一个具有单个面和纹理的简单卡片模型,然后将其导出为 .obj,当我将其加载到 lwjgl 时,纹理不仅向后而且应用不正确。

原来的

obj 文件中的纹理坐标应该是正确的(即使我将它们四舍五入到 0 到 1),但是正如你所看到的......

# Blender v2.67 (sub 0) OBJ File: ''
# www.blender.org
mtllib x.mtl
o Plane
v 0.5 0.000000 1.000000
v -0.5 0.000000 1.000000
v 0.5 0.000000 -1.000000
v -0.5 0.000000 -1.000000
vt 0 0
vt 1 0
vt 1 1
vt 0 1
vn 0.000000 1.000000 -0.000000
usemtl Material.002
s off
f 2/1/1 1/2/1 3/3/1
f 4/4/1 2/1/1 3/3/1

已编辑

现在我手动调整了坐标,它们似乎可以工作,但是直到倒退。

# Blender v2.67 (sub 0) OBJ File: ''
# www.blender.org
mtllib x.mtl
o Plane
v 0.5 0.000000 1.000000
v -0.5 0.000000 1.000000
v 0.5 0.000000 -1.000000
v -0.5 0.000000 -1.000000
vt 0 0
vt 0.78 0
vt 0.78 0.585
vt 0 0.585
vn 0.000000 1.000000 -0.000000
usemtl Material.002
s off
f 2/1/1 1/2/1 3/3/1
f 4/4/1 2/1/1 3/3/1

是搅拌机方面的问题(我在那里设置错误)还是 lwjgl(我在那里设置其他东西错误)?虽然我似乎对其他人制作的模型有类似的问题。顺便说一句,我目前正在使用 Slick 加载纹理(但其他方法导致相同的错误)。

其他

最后一个纹理模型的制作和导入方式基本相同,但是要正确应用纹理接缝……虽然它是颠倒的。实际上,所有纹理都是颠倒应用的,而不是从左到右“镜像”。

更新 1

很奇怪……做了一个小实验,发现了一些奇怪的结果。纹理:512x512:OK,1024x1024:OK,1024x512:OK,512x1024:OK,512x256:OK,256x512:OK,800x600:错误,600x800:错误。所以 2 的大小(希望它是正确的术语)起作用。我读到 slick/lwjgl 的纹理必须具有可被 2 整除的尺寸(甚至记得为什么),但是为什么在某些尺寸上错误地应用了坐标?

尝试了不同的坐标顺序...纹理仍然颠倒(或横向)。如果我将 obj 文件导入回搅拌机,则进入编辑模式并打开纹理面……它也会在其中颠倒过来。

更新 2

据我了解,这就是纹理坐标的工作方式:

赖特

不知何故,我得到了这个:

错误的

我对么?这个问题阻碍了我出色的游戏制作。纹理尺寸问题仍然存在。请帮忙。

更新 3

多亏了 neomonkeus,颠倒的纹理问题得到了修复。纹理维度问题呢?是否有可以修复它的“glTexParameteri()”命令?还是纹理矩阵有问题?

4

1 回答 1

0

我真笨。这是2的力量。一个问题已经提出并得到了彻底的回答。奇怪的是,在某些时候纹理被正确缩放......我只是不记得我用来加载它们的方法。虽然颠倒的东西可以通过“1-v”方法修复,但当我基本上从 www.lwjgl.org 复制粘贴代码时,它甚至不应该出现。

编辑

再一次,我很愚蠢。如果您执行 glOrtho(0,800,600,0,1,-1) 纹理将再次翻转,因此正面朝上。基本上,这不仅是一个愚蠢的问题,而且也是一个古老而基本的问题。只是为了说清楚......如果我想让纹理在透视和正交视图中以相同的方式定向,我必须在左下角有 0.0,对吗?

顺便说一句:slicks TextureLoader.getTexture(...) 翻转参数应该在加载时翻转图像,但我得到相同的结果为真和假。那是怎么回事?

于 2013-08-05T17:06:06.897 回答