0

我在理解 OpenGL ES 中的纹理映射时遇到了麻烦。例如,我有一个包含如下信息的小 obj 文件:

  1. v -75 75 -50
  2. 75 75 -50
  3. v -75 -75 -50
  4. 75 -75 -50

  5. VT 0 0

  6. VT 0 1
  7. VT 1 1
  8. VT 1 0

  9. f 4/3 3/2 1/1

  10. f 2/4 4/3 1/1

如果我使用这个 vts,那么纹理映射不正确。但是如果我像这样切换vts:

  1. VT 1 0
  2. VT 0 1
  3. VT 1 1
  4. VT 0 0

一切都开始正常工作。我试图绘制这个坐标只是为了获得它们的视觉表示并得到这样的图像(我倒置了 y 轴坐标)。 http://imgur.com/BRQgKay 在第一种情况下,我看到了很好的表现,但它不起作用,呵呵。在第二种情况下,我看到了一些可怕的东西,但它有效。为什么它起作用,我完全无法理解。有任何想法吗?谢谢你的帮助。编辑: http: //i.stack.imgur.com/4YdpM.jpg 我添加了一些我得到的结果的解释。我们可以将纹理分为两部分(三角形)。在第一种情况下,我让这部分围绕对角线切换。在第二种情况下,我根据划分的纹理得到了一个很好的映射,但我不明白它为什么会起作用。对不起,如果我的解释不太清楚。

4

1 回答 1

0

如果我拿铅笔和纸试着画这个矩形,一切看起来都很好。我采用一个坐标系,其中 X 向右增加,Y 向上增加。这样做纹理坐标看起来不错,因为左上部分是 (0,0),右下部分是 (1,1)。起初困扰我的是 Z 坐标。由于它们是负数,因此相机位置应小于 Z ( < -50) 以从正面设置它。

现在再一次,模型看起来不错,尽管它取决于你想要做什么。但是看看你的结果,你看到在 X 和 Y 中镜像的图像(对角镜像)我会开始在你的矩阵中寻找问题。X 镜像很可能是由您向后看引起的:相机位置在 (0,0,0) 并朝负 Z 方向看。第二个很可能是由于在两种可能的方法之一中反转 Y 坐标引起的,glOrthoglFrustum. 由于这两种方法都带参数top,并且bottom最常见的设置是bottom更大top,这会使 Y 坐标向下。

请检查所有这些参数,因为这更像是猜测而不是其他任何东西。您还应该考虑使用剔除,使用它不会显示您在后面看的多边形,因此它可能有助于您了解您看到的是正面还是背面。

关于 Y 坐标被交换的注意事项:这不是错误或错误的方法,它现在是一个非常标准的过程。您必须了解,大多数桌面 UI 元素都有坐标系,因此 Y 指向上方,移动设备首先大量使用倒置系统,其中 Y 在 UI 上是倒置的。这就是为什么(至少在 2D 中)最好使用与视图相同的坐标系,但创建模型的所有应用程序很可能会认为 Y 指向上方。

于 2014-07-17T06:48:59.910 回答