这可能与OpenGL-ES有关吗?
我试图在Android中使用OpenGL-ES制作一个非常简单的3D游戏。 现在,我认为使用光线根据2D触摸坐标获取球体表面上一个点的坐标,这是最好的方法。
我对3D编程和openGL总体上相当新,但是在互联网上找到的关于如何实现这一点的所有教程都是通过使用OpenGL-ES不支持的方法。
我想使用我的透视投影变换的反转是它应该如何,但我现在想知道如何得到它。
(我用GLU.gluPerspective将我的视角设置为45度)
答案 0 :(得分:5)
我最近遇到过这个以及我的学士论文的一部分。我还没有找到一个直接用opengl做这个的方法。 我所做的是我已经采取了触摸点的x和y坐标。然后我创建了两个3D点,一个是z值1,另一个是z = -1。这为您提供了两个不同的坐标。然后你就像你猜测的那样采用变换矩阵的逆。如果您自己管理矩阵,那不应该太难。如果让OpenGL管理矩阵,你应该能够通过调用gluUnproject(http://www.opengl.org/sdk/docs/man/xhtml/gluUnProject.xml)来获得反转矩阵。 这将为您提供物体坐标中的两个点,现在您拥有了光线,现在您可以将此光线与您想要的所有对象相交。 (以下是不同对象之间的交叉算法的广泛列表,其中包含代码示例:http://www.realtimerendering.com/intersections.html)
万一你感兴趣:作为我学士论文的一部分,我正在创建一个3D渲染引擎,它应该从开发人员那里获得大量的工作。它仍在进行中,但如果您有兴趣,可以查看:https://github.com/Chnoch/Bachelor-Thesis 如果您想了解更多信息,请告诉我