【发布时间】:2015-07-08 04:29:17
【问题描述】:
我正在开发一个涉及 android OpenGL 的医疗应用程序,用于一些数据可视化。在我的应用程序中,我有一个复杂的大脑对象(大约有 80000 个顶点)和一个小球体。我试图找出一种方法,可以将那个球体的质心移动到大脑的一个顶点。
在我看来,这可以分为两个问题(这两个问题我都没有很好的解决方案)。第一个问题是确定我要将球体移动到哪个顶点。理想情况下,如果我可以简单地触摸大脑上的一个位置并以这种方式选择最近的顶点,那就太好了。我尝试使用 glUnProject 将窗口坐标转换为世界坐标,但未成功。我的另一个想法是简单地获取相机的位置,然后找到离相机最近的顶点。
第二个问题是确定如何将球体移动到该顶点。这是我认为我有合理逻辑的部分,但它无法正常工作。我有球体的初始位置。当用户触摸大脑(我前面描述的第一次尝试)或移动相机(我前面描述的第二次尝试)时,我基本上遍历了大脑的所有顶点,并使用距离公式,找到了最小的顶点与我的触摸位置或相机的距离。我保存了这个顶点,然后继续平移球体。基本上,我的翻译涉及获取新顶点,减去球体的当前位置,然后将球体平移该数量。然后我将球体的新当前位置保存为新顶点的位置。
对我来说,最让人头疼的是我的球体并没有转化为大脑上的任何点。当我告诉它时它会移动,并且通常朝着正确的方向移动,但它的质心不在任何顶点上
总而言之,这是我的两个大问题:
- 对于我的第一个问题,是否有人对哪一种可能是选择顶点的更好方法有任何意见(哪一种更容易或更有效?)。如果有人认为第一种方式更好,是否有关于 glUnProject 参数的深入教程?我无法理解“视图”参数。
- 对于我的第二个问题,我的逻辑有什么问题吗?一旦我找到一个顶点,我只需在球体上执行线性平移,它应该会移动到那个新顶点,对吗?
【问题讨论】:
标签: java android opengl-es glu