数媒HW4参考资料

(同学说整理,顺道POST出来咯….)
整体思路:
首先通过HW3我们已经能够完成3D Pipeline,但是我们最后的模型绘制只是将每个面的顶点依次用线段连接起来,这一次我们需要对每个面进行绘制,其实就是对每个面进行颜色填充。那么问题来了,怎么填充?填充什么颜色?

怎么填充每个面,这里使用的是边相关扫描线算法,思路均参考给的链接;
颜色怎么获取呢?光照模型用于计算每个面的每个顶点的颜色,Shading则用于通过顶点获取面中其他像素点的颜色,到这里我们就能给每个面fill正确的颜色(具体的光照模型 明暗绘制请参考下面链接);
还没完,因为还要处理我们填充好的面是否可见的问题,这里就需要用到Z-Buffer了。思路是,Z-Buffer维护两个缓存,帧缓存(存放指定位置颜色值),深度缓存(存放指定位置深度),这两个缓存对应于我们整个window窗口,缓存中每个位置对应于窗口中的每个像素。所以我们在用边相关扫描填充每个面的时候,就转化成对Z-Buffer进行处理。对于需要填充面的每个像素,得到颜色还有z,如果z比Z-Buffer的深度缓存中的z小(说明更接近人眼),就更新深度缓存和帧缓存。完成所有面之后,我们只需要遍历整个帧缓存,一直用该缓存中对应位置的颜色值drawDot就能完成绘制了(详细参考Z-Buffer和边相关扫描线算法链接)。

光照模型

  1. 粗读这两篇了解一些基本思路
    http://blog.csdn.net/pleasecallmewhy/article/details/8377944
    http://www.ownself.org/blog/2010/guang-zhao.html
  2. 这一篇建议同时参考笔记学习
    http://www.cnblogs.com/mavaL/archive/2010/11/01/1866451.html

明暗绘制

明暗绘制这一块建议还是参考笔记,明白主体思路。
这一篇讲Gouraud Shading和Phong Shading的思路
http://jwc.neau.edu.cn/eol/data/res/jsjtxx/Chapter4/CG_Txt_4_021.htm

Z-Buffer

建议IE打开
http://course.cug.edu.cn/cugThird/CGOL_NET/CLASS/course/8-4-a.htm

边相关扫描线算法

建议IE打开
http://course.cug.edu.cn/cugFirst/computer_graphics/class/course/2-3-1-a.htm

文章目录
  1. 1. 光照模型
  2. 2. 明暗绘制
  3. 3. Z-Buffer
  4. 4. 边相关扫描线算法