我在gluUnproject中使用什么modelView?

时间:2015-11-05 23:47:58

标签: opengl glu

我在3D场景中旋转了三个立方体。我想要实现的是计算被按下的立方体中的哪一个(如果有的话)。

我想我理解gluUnproject是如何工作的,我只需要运行两次gluUnproject,一次用于近平面,一次用于远处平面等等。我唯一的问题是了解使用哪个modelView。

功能原型看起来像这样(我正在为Android开发):

public static int gluUnProject (float winX, float winY, float winZ, 
                                float[] model, int modelOffset, 
                                float[] project, int projectOffset, 
                                int[] view, int viewOffset, 
                                float[] obj, int objOffset)

我不明白的是我应该在第四个参数中使用的modelView矩阵。我是否必须使用每个立方体的modelView矩阵为每个立方体计算一次光线?

1 个答案:

答案 0 :(得分:0)

  

我是否必须使用每个立方体的modelView矩阵为每个立方体计算一次光线?

这实际上取决于你要测试射线的内容。如果你想在它自己的局部坐标系中测试每个立方体的光线(即在本地坐标中以0,0,0为中心的立方体)那么,是的,你必须取消对每个立方体的投影(说实话,如果这是你想要的要做,你应该研究Plücker coordinates,这在很大程度上简化了这种测试;但是你应该使用Plücker坐标进行射线交叉测试。

如果要对世界坐标中的几何进行测试,则在应用单个模型转换之前,在构建模型视图时,即在视图转换之后到达世界舞台时,需要模型视图矩阵。