Math 鼠标下的对象超出近剪裁平面

Math 鼠标下的对象超出近剪裁平面,math,opengl,matrix,3d,Math,Opengl,Matrix,3d,我有一个透视投影。我想让一个物体跟随鼠标。当我将对象设置为几乎在近剪裁平面上时,效果很好。但是,当对象超出近剪裁平面时,与鼠标位置相比,其移动越来越扭曲。我知道我需要更改X和Y坐标以反映修改后的Z,但我不知道精确的公式。视口将贴图限制在近平面,因此靠近近平面时,比例因子为~1。因此,您所要做的就是根据视图坐标中对象的距离相对于近剪裁平面的距离进行缩放: scale = Z_object / Z_near 我不知道你说的视图坐标是什么意思。视图中的Z坐标是0,不是吗?不,近平面距离是在视图空间中

我有一个透视投影。我想让一个物体跟随鼠标。当我将对象设置为几乎在近剪裁平面上时,效果很好。但是,当对象超出近剪裁平面时,与鼠标位置相比,其移动越来越扭曲。我知道我需要更改X和Y坐标以反映修改后的Z,但我不知道精确的公式。

视口将贴图限制在近平面,因此靠近近平面时,比例因子为~1。因此,您所要做的就是根据视图坐标中对象的距离相对于近剪裁平面的距离进行缩放:

scale = Z_object / Z_near

我不知道你说的视图坐标是什么意思。视图中的Z坐标是0,不是吗?不,近平面距离是在视图空间中。也就是说,Znear是未被剪裁的最近距离。