【问题标题】:Convert 3D -> 2D Coordinate转换 3D -> 2D 坐标
【发布时间】:2012-03-06 05:28:57
【问题描述】:

我正在研究光线追踪器,并想出了一些我认为可能非常新颖的东西,但我正在努力将 Vector3 映射到它对应的 2D 屏幕坐标。我已经搜索并发现了一些关于该主题的不同看法,但它们最终总是给我错误的结果。

给定:

透视相机(由位置、上、右和左的向量组成) 表示我想映射回屏幕的空间中 3D 点的向量

有:

我有一个函数,它将获取一个 (x,y) 坐标和一个相机对象,它返回一个向量 (x,y,z)

想要: 一个执行相反操作的函数 - 即获取 3D 世界坐标和相机,然后将 (x,y) 坐标返回给我...

我已经尝试了几种方法来做到这一点,但它们都返回了错误的数据。

谢谢!

【问题讨论】:

  • 您的Camera 对象是否为您提供透视矩阵或FOV 和纵横比?

标签: 3d


【解决方案1】:

您要查找的内容称为投影矩阵。您将某个 3D 点乘以该矩阵,将其投影到某个 2D 观察表面上,在我们的例子中是计算机屏幕。

我知道您没有使用 OpenGL,但此链接准确地概述了 OpenGL 如何构造这样一个矩阵:

http://www.songho.ca/opengl/gl_projectionmatrix.html

【讨论】:

    【解决方案2】:

    我之前回答了几个关于此的问题,您可能会发现它们很有用。如果不是我的答案,那么其他用户制作的 cmets 也是!

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 2015-01-01
      • 1970-01-01
      • 2015-06-29
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多