OpenGL ES平铺对象(立方体?),带有可点击的图块

时间:2010-08-08 23:57:14

标签: iphone 3d opengl-es tile

我正在开始学习opengl,并且想要制作一个像国际象棋一样的棋,但是我不知道如何,我怎么知道我在“桌子”中点击了哪里来制作正确的动画,任何建议?

2 个答案:

答案 0 :(得分:0)

这称为“3D拾取”。您必须将屏幕坐标转换为世界坐标。从那里,做一个射线/碰撞对象(边界框?)交叉测试。如果它们相交,那就是用户点击的位置。

你必须做更多的事情来解决深度顺序问题,比如找到第一次交叉每个对象,然后选择具有最低(正)时间的那个。

如果你谷歌搜索“3D选择”,你可能会找到你想要的东西。

这是一个教程: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=32

请注意,这不是特定于任何形状的边界对象,无论是边界框,多边形,曲线等。您只需要计算出想要的每种类型对象的交叉测试的数学运算。支持。

修改

在我链接它之前,我没有读过那个教程,我只是觉得NEHE是所有很酷的孩子学习OpenGL的地方(不可否认的是十年前......)。

以下是关于选择的OpenGL FAQ:

http://www.opengl.org/resources/faq/technical/selection.htm

答案 1 :(得分:0)

waldecir,寻找raypick功能。它是从场景的摄像机中心通过您单击的像素发送光线的名称(实际上,通过该像素在摄像机平面上的平移位置代表3D世界中的“屏幕玻璃表面”)并返回最前面的多边形射线与一些信息一起命中。通常在多边形表面轴内的坐标,例如, UV或纹理坐标。通过检查坐标,您可以确定用户点击的方格。

光线可以从任何位置和任何方向发送,因此您可能需要获取相机位置及其平面中心,但文档应该能够帮助您。