用于计算相机x y位置以强制3d点出现在屏幕中心的公式

时间:2014-09-10 13:46:05

标签: math 3d

我需要计算相机x y位置的公式,这将迫使给定的3D点出现在屏幕的中心。换句话说,相机可以将点移动到中心,而不会改变FOV,旋转或z坐标。

1 个答案:

答案 0 :(得分:1)

假设当前相机位置为camPos且方向为camDir。根据您的投影,有几个选项可以计算屏幕中心的视图光线,但大部分时间只是:

ray(t) = camPos + camDir * t

我们不想改变位置的z坐标。因此,计算参数t以达到目标点p非常简单(假设位置具有正确的x和y坐标):

t = (p.z - camPos.z) / camDir.z

我们可以通过以下方式计算给定深度的屏幕中心的当前点:

currentScreenCenter = camPos + camDir * t

为了点击pcamPos必须通过这种差异进行转移:

camPos += (p - currentScreenCenter)
        = p - camPos - camDir * (p.z - camPos.z) / camDir.z