concentrate on c/c++ related technology

plan,refactor,daily-build, self-discipline,

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  37 Posts :: 1 Stories :: 12 Comments :: 0 Trackbacks

常用链接

留言簿(9)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

绘制管线的功能:在给定虚拟照相机,三维物体,光源,照明模式,以及纹理等诸多条件下,如何生成或者绘制一幅二维图像。
管线的整体快慢程度是由管线中最慢的那个阶段决定的。
实时计算机图形里面,管线分为三个阶段:应用程序阶段,几何阶段,以及光栅阶段。
最慢的管线阶段决定绘制速度,即图像更新速度。

应用程序阶段由应有程序来驱动,可以通过软件来实现:主要包括碰撞检测,加速算法,动画,以及力反馈等
,在应用程序阶段的末端,将需要绘制的几何体输入到绘制管线的下一格阶段,这些几何体都是绘制图元(如点,线,矩形),最终需要在屏幕上棉线是出来。这是应用程序阶段最重要的任务。

几何阶段,根据体系结构,可以用软件或者硬件来实现,包括变换,投影,光照等处理,计算绘制的内容,如何绘制,以及在什么地方绘制。可以分成若干个功能阶段:模型与视点变换,光照,投影,裁减,以及屏幕映射。


模型和视点变换:
同一个模型还可以和几种不同的模型变换联系在一起。允许同一个模型有多个副本(称为实例),可以在同一场景中具有不同的位置,方向,和大小,而不需要对基本集合体进行复制操作。
模型变换的变换对象是模型的顶点和法线。物体的坐标称为模型坐标。只对相机(或者视点)可以看到的模型进行绘制。为了便于投影和裁减,必须对相机和所有的模型进行视点变换。变换的目的是要把相机放在原点,然后进行视点校准,使其朝向Z轴的负方向,Y轴指向上方,X轴指向右边。视点变换后,实际位置和方向就依赖于当前的API.

 

光照:

为了让模型看起来更加真实,可以给场景配上一个或者多个光源.

对于受光源影响的模型来说,可以用光照方程来计算模型上每个顶点的颜色.物体表面每个顶点的颜色可以由光源及其特性,顶点的位置和法线,顶点所在的材质属性来计算.当在屏幕上绘制三角形时,可以通过对三角形顶点的颜色进行插值,这种插值技术成为gouraud着色.

光照计算是在世界空间中进行的,但是,如果对光源进行视点变换,再观察空间中会得到同样的光照效果.这是因为,即使将参与光照计算的所有实体都变换到同一个空间(即观察空间),光源,相机,以及模型之间的相对位置依然保持不变.

 

投影:

光照处理之后,绘制系统就开始进行投影,目的是将视体变换为一个单位立方体.,这个立方体的对角分别是(-1,-1,-1)(1,1,1).通常也称单位立方体为规范视体(canonical view volume).

目前主要有两种投影方法:正投影(平行投影)和透视投影。

正投影:把这个视体变换为单位立方体,正投影的主要特性是平行线在变换之后彼此之间仍然保持平行,这种变换是平移与缩放的组合。

透视投影方法中,物体距离相机越远,投影之后就会变得越小。

 

裁减:

只有当图元完全或者部分地位于视体内部的时候,才需要将其发送到光栅阶段,在这个阶段可以把图元在屏幕上绘制出来。需要对那些部分位于视体内的图元进行裁减处理。投影变化之后的图元只针对单位立方体进行裁减,在裁减之前进行视点转换和投影的优势在于可以使裁减问题变得比较一致,而且图元可以根据单位立方体进行裁减。

 

屏幕映射:

进入这个阶段的时候,坐标仍旧是三维的,每个图元的xy坐标变换到了屏幕坐标系中,屏幕坐标系连同z坐标一起称为窗口坐标系。


光栅阶段,利用前面阶段产生的数据进行图像绘制。

光栅阶段的目的:就是给每个像素(pixel)正确配色,以便正确绘制整副图像,这个过程称为光栅化或者扫描转换,也就是把屏幕间的二维顶点转化为屏幕上的像素。

 

屏幕空间有一个z(深度值),一种或两种颜色,以及一组或者多组纹理坐标,其中纹理坐标会与顶点或者屏幕上的像素联系在一起。光栅阶段进行的是单个像素操作。每个像素的信息存储在颜色缓冲器里,颜色缓冲器是一个矩形的颜色序列(R,G,B)对于高性能图形系统来说,光栅阶段必须在硬件中完成。一般地,图形系统采用双重缓冲机制.这意味着屏幕绘制时在一个后置缓冲器中以离屏方式进行的,一旦屏幕已在后置缓冲区中绘制,后置缓冲区中的内容就不断与已经在屏幕上显示过的前置缓冲区中的内容进行交换.

 

当绘制完整个场景的时候,颜色缓冲器应该包含从相机视点处可以观察到的场景图元.对于大多数图形硬件来说,这个过程是通过Z缓冲区(深度缓冲区)算法来实现.Z缓冲器和颜色缓冲区形状大小一样.

 

每个像素都有存储着一个z,这个z值是从相机到最近图元之间的距离,当将图元绘制为相应的像素时,需要计算像素位置处图元Z值并于同一像素的Z缓冲器内容进行比较.

颜色缓冲器用来存储颜色,Z 缓冲器用来存储每个像素的z.

 

还可以使用其他缓冲器来产生一些图像的不同组合,alpha通道和颜色缓冲器联系在一起可以存储一个与每个像素相关的不透明值.

帧缓冲器(Frame buffer)通常包含一个系统所具有的所有缓冲器,称为累积缓冲器,有时候却认为是颜色缓冲器和z缓冲器的组合。

posted on 2008-04-24 09:12 jolley 阅读(699) 评论(1)  编辑 收藏 引用

Feedback

# re: 实时计算机图形学-----绘制管线 2011-06-11 15:54 夏学高
我想学学图画管理想请教于你  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理