Threes.js入门篇之4

来源:互联网 发布:java自学手册 编辑:程序博客网 时间:2024/06/10 21:47

       在三维世界,一个模型要想最终呈现到一个照片上,需要经过三次矩阵变换,这三个矩阵分别是:

       模型矩阵(World) - 视图矩阵(View)- 投影矩阵(Projection)


一. 模型矩阵

       将 局部坐标系 下的模型坐标(相对于自身原点的坐标) 转化到 世界坐标系 下,通常称为World Matrix

       可以理解为把多个不同坐标系下的子模型统一到一个世界坐标空间

       局部坐标系(模型坐标)       -->    世界坐标系

             World_Matrix *  [x,y,z]   -->    [x',y',z']

                               M *  P[5,0,5]   -->    P[20,8,4]   对应下图中P点在世界坐标系下的坐标值。

              

二. 视图矩阵

       将模型统一到一个坐标度量之后,需要将坐标变换到 观察者的视野范围内,也就是观测视角。

       世界坐标系      -->    视图坐标系(观察者) 

             View_Matrix *  [x',y',z']   -->    [x'',y'',z'']

        

        通过 视图矩阵 将场景中所有模型的 世界坐标 转化到 视图坐标系(如上图 RGB坐标轴)。


三. 投影矩阵

       将 用户视图(Viewer) 下的坐标,经过透视投影进行成像,将三维空间变换到图像空间。

       可以理解为 透视投影的成像,即从三维空间变换到图像空间。

       视图坐标系      -->    图像坐标系(UV空间) 

            Projection_Matrix *  [x'',y'',z'']   -->    [U,V,1]

        

       注:该图像来自于网上(不确定版权,如有侵权,还请告知!)


       因此,整个成像的过程可以用公式描述为:

                 [u,v,1] = Matrix_Projection * Matrix_View * Matrix_World * [x,y,z] 

2 0