Iphone OpenGL ES平铺对象(立方体?),带有可单击的平铺

Iphone OpenGL ES平铺对象(立方体?),带有可单击的平铺,iphone,3d,opengl-es,tile,Iphone,3d,Opengl Es,Tile,我开始学习opengl,我想做一个3d国际象棋,但是我不知道,我怎么知道我在“表”中点击了什么地方来制作合适的动画,有什么建议吗?这叫做“3d拾取”。您必须将屏幕坐标转换为世界坐标。然后,执行光线/碰撞对象(边界框?)相交测试。如果它们相交,那就是用户单击的位置 要解决深度顺序问题,您需要做更多的工作,比如找到每个对象的第一个交点,然后选择时间最小(正)的一个 如果你在谷歌上搜索“3D拾取”,你可能会找到你想要的东西 以下是一个教程: 请注意,这并不特定于边界对象的任何形状,无论是边界框、多边

我开始学习opengl,我想做一个3d国际象棋,但是我不知道,我怎么知道我在“表”中点击了什么地方来制作合适的动画,有什么建议吗?

这叫做“3d拾取”。您必须将屏幕坐标转换为世界坐标。然后,执行光线/碰撞对象(边界框?)相交测试。如果它们相交,那就是用户单击的位置

要解决深度顺序问题,您需要做更多的工作,比如找到每个对象的第一个交点,然后选择时间最小(正)的一个

如果你在谷歌上搜索“3D拾取”,你可能会找到你想要的东西

以下是一个教程:

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

编辑:

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

以下是OpenGL常见问题解答中有关拾取的内容:


waldecir,查找光线拾取函数。它是一个名称,用于从场景的摄影机中心通过单击的像素(实际上,通过该像素在摄影机平面上的平移位置,表示3D世界中的“屏幕玻璃表面”)发送光线,并返回光线击中的最前面的多边形以及一些信息。通常是多边形曲面轴内的坐标,例如UV或纹理坐标。通过检查坐标,可以确定用户单击的正方形


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

NeHe教程是一个坏例子,它在OpenGL ES中无法远程工作。@Matias Valdenegro:最终,3D拾取算法本身是3D API不可知的。我同意我链接的教程中有太多的内容,我没有仔细阅读,看他是否在使用API进行一些拾取计算。提供链接的目的是显示至少有一个3D拾取教程。NEHE经常为新的OpenGL程序员提供简单的教程,无论它们在所有方面是否正确。如果你有一个更好的,请提供一个链接。