android – 如何从屏幕确定3D空间中的触摸内容?

如何在我的OpenGL ES 1.1 android应用程序中使用gl.gluUnproject来确定用户触摸屏幕时选择的内容?

我的理解是触摸事件导致一条线,我必须找到它与之相交的第一个“东西”.

有没有关于如何做到这一点的教程?

解决方法

如果您正在进行2D到3D拾取,则需要稍微调整矩阵和向量. OpenGL ES 1.1不存在GlUnproject,所以你必须自己做一些数学运算.

射线 – 物体交叉是一种可行的方式.蒂姆斯姆斯的回答已经涵盖了其中的一部分,但还有更多.想法是从2D坐标创建射线到3D.为此需要视图矩阵和投影矩阵的逆.一旦你有射线,你可以使用你选择的射线相交测试,当然你需要选择最接近的对象,如Timmmm的点4.边界球和边界框很容易实现,互联网上有很多交叉测试教程.

This picking tutorial适用于DirectX,但您可能会理解.射线构造部分是最重要的.

编辑
Android实现了它自己的gluUnproject版本.它可用于创建射线,通过调用近距离和远距离平面(0和1)并从远距离平面结果中减去近平面结果来获得射线的方向. Ray起源是视图位置.更多here.

以上是来客网为你收集整理的android – 如何从屏幕确定3D空间中的触摸内容?全部内容,希望文章能够帮你解决android – 如何从屏幕确定3D空间中的触摸内容?所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。