透视视角下的三维投影

我正在为一个现有的游戏编写一个库,针对这个项目,我想要进行一些3D投影映射,但我有一些困难,使得任务变得更加艰难。

我对游戏世界了解良多,但是不太懂相机。

  • 我有鼠标在屏幕上的位置
  • 我有鼠标在同一时间拍摄的世界位置。
  • 我可以获取摄像机在游戏世界的X、Y和Z坐标。
  • 我无法获取相机的FOV。

前两个内容我可以在任何时候使用函数获得。

基于此,我需要找到一个物体的2D屏幕位置,而我只有它的世界坐标。

我已经尝试了获取相机到地面上的物体的距离,然后从中获取相机到屏幕的距离,使用这篇文章中的图表:

http://en.wikipedia.org/wiki/3D_projection

但由于地球是倾斜的而相机是略微倾斜的,它们之间的距离以及物体本身在屏幕顶部比底部远。

还要注意的是Z始终朝上(在屏幕上),相机没有旋转。

我确信这不是一个难解决的问题,但我就是记不住所有的信息。

任何有关此事的帮助都将不胜感激。

原文链接 https://stackoverflow.com/questions/10011433

点赞