Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android opengles中的对象选择_Android_Opengl Es - Fatal编程技术网

Android opengles中的对象选择

Android opengles中的对象选择,android,opengl-es,Android,Opengl Es,我是3D编程新手,已经在Android上玩了一段时间了,我看到了一些关于光线跟踪/跟踪和对象拾取的问题,以及一些关于使用像素选择3D对象的问题。我正在尝试使用OpenGL ES for Android制作一个类似于绘画的程序,在那里我可以从立方体中选择一条线并删除它或要删除或修改的对象。不管怎样,我不确定从哪里开始学习,我试过谷歌,但没有发现任何有用的东西。也许如果有一个视频教程或网站能更好地解释这一点,或者有任何帮助能指引我前进的方向,我会非常感激。非常感谢您的光临 是的,我知道这可能是一个重

我是3D编程新手,已经在Android上玩了一段时间了,我看到了一些关于光线跟踪/跟踪和对象拾取的问题,以及一些关于使用像素选择3D对象的问题。我正在尝试使用OpenGL ES for Android制作一个类似于绘画的程序,在那里我可以从立方体中选择一条线并删除它或要删除或修改的对象。不管怎样,我不确定从哪里开始学习,我试过谷歌,但没有发现任何有用的东西。也许如果有一个视频教程或网站能更好地解释这一点,或者有任何帮助能指引我前进的方向,我会非常感激。非常感谢您的光临


是的,我知道这可能是一个重复的问题。

OpenGL ES没有OpenGL的选择功能,因此您必须自己构建它

我建议从特定于Android的OpenGL ES示例程序开始。我认为这篇文章将有助于:


我自己也是一名iOS开发人员,但我最近为我的游戏实现了ray casting,所以我将尝试以一种平台无关的方式回答这个问题

光线投射操作有两个步骤:首先,需要从用户的点击中获取光线,其次,需要测试定义模型交点的三角形。请注意,这要求您仍将它们保留在内存中或能够恢复它们-您不能仅将它们保留在图形卡上的vbo中

首先,转换为世界坐标。由于您无疑是在使用投影矩阵为您的模型获取三维透视图,因此需要取消投影点以在世界坐标中获取它。有很多库已经实现了这一点,比如glut的glunproject,我相信它可以在Android上使用。我相信,从数学上讲,这相当于对当前作用于模型的所有变换求逆。不管怎样,有许多实现可以在网上公开,您可以从中复制

在这一点上,您将需要一个Z坐标为您试图取消投影的点。实际上,您需要取消投影两次,一次是Z坐标为0,一次是Z坐标为1。由0的z坐标产生的向量是光线的原点,通过从1的z坐标中减去该向量,可以得到方向。现在,您可以测试模型多边形的交点了


我已经成功地使用本文介绍的方法进行了实际的交叉口测试。该算法最后是用C实现的,但您应该能够轻松地将其转换为Java

谢谢你提供的信息,我将尝试一下,看看我能想出什么。