1、Z缓冲区(Z-Buffer)算法
1973年,犹他大学学生艾德·卡姆尔(Edwin Catmull)独 立开发出了能跟踪屏幕上每个像素深度的算法 Z-buffer
Z-buffer让计算机生成复杂图形成为可能。Ed Catmull目 前担任迪士尼动画和皮克斯动画工作室的总裁
Z缓冲器算法也叫深度缓冲器算法,属于图像空间消隐算法
该算法有帧缓冲器和深度缓冲器。对应两个数组:
intensity(x,y)——属性数组(帧缓冲器)
存储图像空间每个可见像素的光强或颜色
depth(x,y)——深度数组(z-buffer)
存放图像空间每个可见像素的z坐标
假定xoy面为投影面,z轴为 观察方向
过屏幕上任意像素点(x,y) 作平行于z轴的射线R,与物 体表面相交于p1和p 2 点
p1和p 2点的z值称为该点的深 度值
z-buffer算法比较p1和p 2的z值, 将最大的z值存入z缓冲器中
显然,p1在p 2前面,屏幕上(x,y) 这一点将显示p1点的颜色
算法思想:先将Z缓冲器中各单元的初始值置为最小值。
当 要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z 缓冲器的单元中)
如果大于原来的z值,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色
&nb