1

我无法将像素坐标从鼠标转换为 3D 平截头体。我在 OGL ES 1.1 上使用类似于 glProject() 的代码。我试过使用 glUnProject() 但我无法让向量工作,我知道有一种更简单的方法可以做到这一点。我希望能够比较 3D 和 2D 坐标并找出答案,但我没有成功。所以这就是我所知道的:

  1. 我正在使用正在选取的多边形中的 3D 顶点:

    -1.0,1.0,0.0

  2. 然后我使用 glProject() 将其转换为像素坐标:

    140.0, 259.0, 0.0

  3. 然后我使用鼠标像素坐标:

    140.0、220.0、0.0

  4. 这是我无法弄清楚的部分:

    -1.0, -1.0, 0.0

我从#4 的坐标中得到了#3 坐标,但我想要做的是相反的事情,即将像素转换为3D。

我真正需要知道的是鼠标在 3D 坐标中从另一个 3D 点拖了多远。

4

1 回答 1

0

好的,我得到了一个近似算法。我让它工作的方式是使用:

glFrustum(ax,bx,ay,by,az,bz);

我用 ax 和 az 的比率乘以 z 的长度来找到三角形的 tx 和 ty 边的长度。然后我使用像素坐标找到 x 和 y。我不确定 gluUnProject() 是否更好,但我使用的那个更小更容易理解。

于 2013-07-16T20:06:35.090 回答