使用正交矩阵将 3D 坐标转换为 2D 屏幕坐标

Posted

技术标签:

【中文标题】使用正交矩阵将 3D 坐标转换为 2D 屏幕坐标【英文标题】:3D Coordinates to 2D Screen Coordinates with an Orthographic Matrix 【发布时间】:2010-07-05 20:02:16 【问题描述】:

我有一个在 3D 空间中存储顶点的场景。我想做的是从等轴测角度正交渲染这些顶点。

在我所有的搜索中,显而易见的答案是使用像 OpenGL 等中的正交相机。

问题是我想从头开始写这篇文章以帮助我理解,所以我真的在寻找相机内部的理论。

如何在 3D 空间中获取任意点并使用正交矩阵从中获取屏幕坐标?

目前我有我的正交矩阵:

[2/r-l, 0, 0, r+l/r-l]

[0, 2/t-b, 0, 0, t+b/t-b]

[0, 0, 2/f-n, 0, f+n/f-n]

[0, 0, 0, 1]

其中 r 为右,l 为左,t 为上,b 为下,f 为远,n 为近。

我将围绕 y 轴的旋转附加到此,然后将顶点坐标与此矩阵相乘,我相信这会将我的世界空间顶点转换为我的视图空间坐标...

但它仍然是一个 3D 矢量,所以我很好奇我如何推断 2D 屏幕坐标。

任何帮助都会很棒。

谢谢, 乔恩

【问题讨论】:

【参考方案1】:

Here's 一篇很棒的文章,解释了 OpenGL 是如何做到的。

【讨论】:

以上是关于使用正交矩阵将 3D 坐标转换为 2D 屏幕坐标的主要内容,如果未能解决你的问题,请参考以下文章

将坐标转换为另一个坐标系

将 3D 位置转换为 2d 屏幕位置 [r69!]

将窗口坐标转换为屏幕坐标??

OpenGL工作流程

∑GL-透视投影矩阵的推导

∑GL-透视投影矩阵的推导