2

我知道这是一个常见问题,网络上有大量资源,这里有几个问题处理这个领域,但我找不到我真正需要的东西。所以,提前道歉,这里是:

我有一个需要转换为 2D 点的 3D 点

我有:
点位置(Px,Py,Pz)
相机位置(Cx,Cy,Cz)
相机方向(我可以控制它,但我不知道如何表示它)

我试图遵循维基百科指南 - http://en.wikipedia.org/wiki/3D_projection#Perspective_projection

我的问题是:
我应该如何表示相机方向?
如何从维基百科指南中计算 Ex、Ey、Ez 的值,即“查看器相对于显示表面的位置”
还有什么我应该知道的吗?

4

2 回答 2

0

旧教程很棒,大部分来自 T&L 和着色器之前的日子,甚至在硬件渲染之前。从了解它们开始,即/technical/math-and-physics/3d-matrix-math-demystified-r695">http://www.gamedev.net/page/resources//technical/math-and-physics /3d-matrix-math-demystified-r695 然后继续申请相机: http: //www.codeguru.com/cpp/misc/misc/graphics/article.php/c10123/Deriving-Projection-Matrices。 htm

基本上,您平移然后围绕相机旋转整个“宇宙”。所以你有你的意思:你为相机定义一个平移(运动),然后是一个旋转矩阵。您将它们应用于任何“世界内容”,即您的观点。然后,您可以“作弊”并简单地将 x 和 y 值除以 z 以投影到 2d 平面,但您确实应该进行正确地校正视野的计算。

于 2012-04-04T01:14:42.707 回答
0

如果您使用Java 绑定编译 Opencv,您可以使用 [Calib3d 模块]( http://docs.opencv.org/java/2.4.4/org/opencv/calib3d/Calib3d.html#projectPoints(org. opencv.core.MatOfPoint3f , org.opencv.core.Mat, org.opencv.core.Mat, org.opencv.core.Mat, org.opencv.core.MatOfDouble, org.opencv.core.MatOfPoint2f))

于 2017-05-11T05:31:57.590 回答