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