绘制流水线

来源:互联网 发布:如何设置网络 编辑:程序博客网 时间:2024/04/28 17:12

转自:http://blog.csdn.net/xyzhangdaniel/article/details/6661557

从三维虚拟场景到二维屏幕的整个计算过程,称为绘制流水线,其过程如下:

        局部坐标——世界坐标——观察坐标系——背面消隐——光照——裁剪——投影——视口变换——光栅化。

 

局部坐标系(建模坐标系):

       是定义构成虚拟物体的三角形单元列表的坐标系,可以简化建模过程。

世界坐标系:

       用与确定物体在虚拟世界中的位置,虚拟物体要通过世界坐标变(缩放、平移、旋转)来构建虚拟场景。

观察坐标系:

       当构建好虚拟世界之后,最想做的事情莫过于去浏览(漫游)一番。要实现浏览功能,可以从两个角度来考虑:1.固定摄像机,让虚拟世界中的几何体做浏览位置和方位的反向(负向)变换;2.固定虚拟世界中的几何体坐标,让摄像机在虚拟世界中穿梭。通常我们会选择第二种做法,下面这段话对第二种做法做了简单的论述 。

       在虚拟世界空间中,摄像机和几何体的坐标和方位都是在世界坐标系中定义的,在实际的三维视频仿真程序中,摄像机的坐标和方位是动态变化的。如果摄像机的坐标和方位发生变化,就会造成基于摄像机坐标空间的投影变换和其它类型的变换效率降低。为了避免这种效率的降低,在摄像机达到某一坐标和方位时,在进行后续变换之前,需要将摄像机变换会在初始时默认的坐标和方位(以dx为例,摄像机坐标在世界坐标的原点、光轴和z轴正向一致)。为了达到通过控制虚拟摄像机坐标和方位来漫游虚拟世界的目的,同时实际上虚拟世界中所有的几何体都要做一个和摄像机同样的矩阵变换。这样实际上就实现了一个目标:不降低变换效率,直观地通过输入摄像机坐标和方位参数进行漫游。这个变换过程称之为取景变换(观察变换)。

       在D3D中通过取景变换实现上述变换过程,变换后的几何体所在的坐标系,称为观察坐标系。

背面消隐:

       这个是在观察坐标系中考量的问题,显示正面朝向三角面,不显示(剔除、消隐)负面朝向三角面。在D3D中观察坐标系中,顺时针指定顶点坐标而绘制的三角面为正向朝向三角面,逆5时针指定顶点坐标而绘制的三角面为负向朝向三角面。D3D默认消隐逆时针绕序的三角面。

裁剪:

       把不在视景体(视域体)内的几何体剔除掉(不绘制)。

投影:

       从n维空间变换到n-1维空间的过程,称为投影。这里仅指 透视投影。图形学中通过投影变换实现3D到2D表示,这个变换过程称为投影变换。投影变换完成了定义视景体,而视景体决定了摄像机的可视空间。在D3D中,2D的投影窗口与平面z=1重合,同时,投影变换通过宽高比参数防止拉伸畸变。

视口变换:

       将顶点坐标从投影窗口转换到屏幕的一个矩形区的过程。D3D中通过设置Device的视口变换实现。

光栅化:

       完成计算构成屏幕(顶点缓冲区)的每个像素颜色值。

原创粉丝点击