使用OpenGL-ES可以做到这一点吗?
我正在尝试使用OpenGL-ES在android中制作一个非常简单的3D游戏。现在我被困在我认为使用光线根据2D触摸坐标获得球体表面上一个点的坐标的部分,这将是最好的方法。
我是3D编程和openGL的新手,但在互联网上找到的所有关于如何实现这一点的教程都是使用OpenGL-ES不支持的方法。
我猜使用透视投影变换的逆变换应该是这样的,但我现在有了如何获得它的线索。
(我正在用GLU.gluPerspective将我的视角设置为45度)
发布于 2011-05-17 06:37:25
我最近遇到了这一点,也是我的学士学位论文的一部分。我还没有找到用opengl做这件事的直接方法。我所做的是,我得到了接触点的x和y坐标。然后我创建了两个三维点,一个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 PM me,如果你想了解更多信息
https://stackoverflow.com/questions/6023699
复制相似问题