👉原文地址:3D空间中的点坐标转化为屏幕二维点坐标(二)👈
上一节,简单的介绍了计算机时如何将三维世界中的点转化成屏幕上的二维点坐标的,知道了透视矩阵的作用。这一节内容,就是介绍其中的数学计算的过程。
坐标系与矩阵
在三维计算机图形学中,那些呈现在屏幕(画布canvas)上的每个点,都是由三维的点转化的,它们组成了屏幕上的图像。在前面的文章中,我介绍了透视矩阵,透视矩阵的作用就是将三维的点转化成二维的点,展现在屏幕上,也给大家讲解了透视投影矩阵的计算,所以本节内容
当然并不是再次计算透视投影矩阵,而是更精细化的一步一步的将三维点转化到二维点的的计算过程展现给大家。
首先要说明的是,将三维点转化成二维点的方法有很多,透视矩阵仅是无数方法中的一种,比如我在之前文章介绍的平行投影矩阵(正射投影矩阵),它也可以将三维点转化成二维点,只是与透视投影转化的结果稍有不同。所以将三维点转化成二维点,并没有限制转化的结果完全一样,既然结果不一样,那么转化法自然有无穷多种,而且即使结果一致,转化方法一般也会有多种,就像解数学题一样,通常会有多种解法。
我接下来要讲解的过程,是模拟透视投影矩阵的,透视投影矩阵转化后的图像与人眼观察的图像类似(简单的说就是近大远小)。
世界坐标系和局部坐标系
关于坐标系的概念,可以看这篇文章,这里我们再重新回顾下。
无论是在图形软件中还是编程中,为了高效工作,一般都会有世界坐标系(world coordinates)和局部坐标系(local coordinates),世界坐标系是相对于世界空间的(world space),所有的物体(object)都处于这个世界空间中,它们在世界空间中都有一个位置(世界坐标),但是它们也有自己所处的一个独立的空间,即局部空间。以软件建模为例,当设计师在设计房子中的一个桌子时,它会单独先设计这个桌子,假设桌子底部中心原点(0, 0, 0)
,那么桌子顶部中心的坐标为