我正在制作一个 Android 游戏应用程序,并使用 openGL 将 3D obj 模型加载到应用程序中。我想知道是否有人可以帮助我如何使这些对象具有交互性。我真正需要的只是让一个对象可点击,但是学习更多东西会很酷,比如在屏幕上拖动它等等。
谢谢你的帮助。
你想要的就叫采摘。
这不是一件容易的事,取决于您想要做的事情,您有多种选择。
问题:您想根据 2D 坐标(鼠标/触摸位置)在 3D 空间中选择一个对象。由于 2D 鼠标坐标,您会错过一个坐标来确定 3D 空间中的确切点击位置。
一种可能的选择是:
这种方法不是那么灵活,但与其他解决方案相比,实现非常简单。它是有限的,因为您只能检测使用过的是否点击/触摸了某个对象,但您无法确定对象上的确切位置。
另一种可能的选择是根据 2D 单击位置计算 3D 世界上的射线,然后确定 3D 空间中与该射线发生碰撞的所有对象。这称为光线拾取。您可以在此处找到有关光线拾取的 OpenGL 教程
如果您不使用固定功能管道(例如,您使用自定义着色器等),示例使用glRenderMode, glLoadName, etc.
可能不是最佳选择。
另一种选择是根据点击位置、视口和投影矩阵自己进行数学计算并计算光线矢量。如果你想这样做,gluUnproject的文档可以帮助你。