【发布时间】:2014-09-11 03:29:30
【问题描述】:
我需要计算相机 x y 位置的公式,这将强制给定的 3D 点出现在屏幕的中心。换句话说,相机平移以将点移动到中心,而不改变 FOV、旋转或 z 坐标。
【问题讨论】:
我需要计算相机 x y 位置的公式,这将强制给定的 3D 点出现在屏幕的中心。换句话说,相机平移以将点移动到中心,而不改变 FOV、旋转或 z 坐标。
【问题讨论】:
假设当前摄像机位置为camPos,其方向为camDir。根据您的投影,有几个选项如何计算屏幕中心的视图光线,但大多数时候它只是:
ray(t) = camPos + camDir * t
我们不想改变位置的 z 坐标。所以计算参数 t 以击中目标点p 非常简单(假设位置具有正确的 x 和 y 坐标):
t = (p.z - camPos.z) / camDir.z
我们可以通过以下方式计算屏幕中心在给定深度处的当前点:
currentScreenCenter = camPos + camDir * t
为了击中p,camPos 必须按此差异进行移动:
camPos += (p - currentScreenCenter)
= p - camPos - camDir * (p.z - camPos.z) / camDir.z
【讨论】: