《计算机图形学基础》第三次大作业实验报告.docx_第1页
《计算机图形学基础》第三次大作业实验报告.docx_第2页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三次实验1. 实验目的 实现用 Phong 光照明模型显示网格模型(*.smf)。分别实现不使用/使用增量式光强/法向插值算法,比较三种不同的显示效果和效率。 Phong模型中各参数可调,观察它们的作用。 与用户的交互方式为图形用户界面,操作简单,界面友好。 2. 算法描述 2.1. 基于扫描线算法的Phong 模型实现 上一次大作业中我没有完成扫描线 ZBuffer 算法,使得程序的效率很低,这次作业考虑到各种计算对时间的消耗会更大, 所以我首先完成了扫描线算法再进行这次作业代码的编写。 对扫描线Z-Buffer算法这里不作详细描述,主要介绍 Phong模型的实现。基于扫描线算法的 Phong 模型实现是非常方便的,因为最基本的 Phong 模型中每个面的颜色是法向量的函数,因此每个面的颜色是相同的,这样在扫描线算法之前我首先初始化了一个数组,将各个面的颜色根据用户提供的参数以及 Phong 模型公式计算出来保存在这个数组里,每一项对应一个面, 这样在具体扫描线算法的执行过程中每一个点颜色的获取都仅仅是对数组的读取操作,是O(1)的复杂度,不会消耗太多时间。算法如下:1. 对物体表面上的每个点P,均需计算光线L的反射方向R,R=2N(NL)-L。为了减少计算量,假设:2. 光源在无穷远处,L为常向量3. 视点在无穷远处,V为常向量4. 用(HN)近似(RV),H为L与V的平分向量5. Phong光照明模型的RGB颜色模型形式 2.2. 双线性光强差值算法 考虑到双线性光强差值算法的核心思想是由顶点的光强插值计算各边的光强,然后由各边的光强插值计算出多边形内部点的光强,结合之前实现的扫描线 ZBuffer 算法,我使用了增量的方式实现这个算法,也就是将它和扫描线算法结合起来,在扫描线算法每个面的边表中多加几个个域来表示当前的光强、光强在X 方向的单位增量和光强在 Y 方向的单位增量,这样在扫描到每个点的时候就可以根据前一个点的光强以及光强增量获得该点的光强, 另外在扫描线改变的时候光强也需要根据Y方向的增量来进行相应的修改。 2.3. 双线性法向差值算法 基本思想和双线性光强差值算法相同,也是利用扫描线 ZBuffer 算法作为基础,将一些数据结构做一些相应修改即可方便实现这个算法。3. 体会:两种差值算法的比较双线性差值光强算法和双线性法向算法得到的结果差别不是很大, 相对而言比较明显的区别是法向算法得到的模型镜面反射效果比较会聚,区域没有光强算法那么大。5. 交互方式 Model模型选项,可以进行缩放和旋转; Illuminant光源选项,可以选择光源的颜色和位置; Ambient环境光选项,可以选择环境光的颜色; Refl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论