opengl 3d对象拾取-光线投射

opengl 3d对象拾取-光线投射,opengl,3d,raycasting,Opengl,3d,Raycasting,我有一个显示立方体平面的程序,就像房屋中的标高一样,我显示平面,以便显示角度与视口投影平面一致。我希望能够允许用户选择它们 首先,我用在{0,0,0}处绘制的第一个正方形相对地绘制它们 然后我平移和旋转它们,每个平面都有自己的旋转和平移 多亏了这个页面,我的代码可以使用用户的最后一次触摸投射光线。如果您注意到在上图中,有一个绿色正方形和蓝色正方形,这是一个调试图形,显示了在单击中心后与投影矩阵中的近平面和远平面相交的光线(z为零以显示它们),因此它似乎正在工作 我可以得到立方体的边界框,但它

我有一个显示立方体平面的程序,就像房屋中的标高一样,我显示平面,以便显示角度与视口投影平面一致。我希望能够允许用户选择它们

首先,我用在{0,0,0}处绘制的第一个正方形相对地绘制它们

然后我平移和旋转它们,每个平面都有自己的旋转和平移

多亏了这个页面,我的代码可以使用用户的最后一次触摸投射光线。如果您注意到在上图中,有一个绿色正方形和蓝色正方形,这是一个调试图形,显示了在单击中心后与投影矩阵中的近平面和远平面相交的光线(z为零以显示它们),因此它似乎正在工作

我可以得到立方体的边界框,但它的坐标会认为它们仍然在左上角


我的问题是,在旋转和平移对象后,如何使用光线检查它们的交点?我很困惑,因为当我把整个网格作为一个整体进行平移和旋转时,我曾经有过这样的工作,现在每个平面都被分开移动,我不知道怎么做。

这是我刚从你的文章中得到的一个实验性想法。您可以对点击坐标进行“反投影”,然后检查播放器在2D平面中点击的位置,就像在第一张图像中一样。要执行此操作,请将投影矩阵的逆矩阵应用于单击坐标。为什么特别需要使用光线来执行此操作?你尝试做的事情的一般术语叫做“挑选”,它不一定需要光线。我不记得为什么我决定这样做。我确实记得我在某一点上做的不同,可能深度是个问题,这样我就知道了到相机的距离。无论如何,我似乎已经解决了问题,通过简单地平移和旋转光线向量,就像平原一样。但我不知道为什么这能解决问题。