网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机图形学基础大作业_陈立人讲义.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学基础大作业茶壶的造型与渲染陈立人 2014011205实验简介本小组的作业借鉴了老师布置的参考作业,并在此基础上做了一定拓展。本小组有三位同学:王舒鹤同学主要负责了矢量字库部分的工作;刘怀宇同学主要研究了光线追踪算法;我主要负责了茶壶的造型和渲染工作。实验内容茶壶框架的绘制基于文献What, Teapot Again?,根据给出的控制点,用三次贝塞尔曲线差值出茶壶四个部分的轮廓线。茶壶轮廓线其中,壶嘴和壶盖部分的三维造型通过对轮廓线的旋转得到;把手和壶嘴部分是根据论文中给出的控制点的深度信息,用贝塞尔曲面造型得到。得到的茶壶模型是一系列的点。我将茶壶模型定义为四个曲面的集合,每曲面由一系列的小四边形组成,每个点用齐次坐标表示。通过对曲面的投影变化,得到了茶壶在视平面内的投影。基于Bresenham算法,画出了茶壶的网格线。三维茶壶的网格表示三维茶壶的光照渲染起先,使用Phong模型对茶壶上每个三角形平面进行上色,每一个小三角形的光强一致。基于Phong光照模型计算出环境光、漫发射光、镜面反射光以及总的光强,然后利用多边形扫面线填充算法在视平面上所对应的投影位置着色,并用ZBuffer算法实现三维物体的消隐。着色效果不是很理想,曲面上高光部分马赫带效应严重,壶表面不光滑。Phong光照模型为了改善着色效果,参考了Gouraud平滑着色法,通过差值的方法让曲面上光照强度连续变化。取相邻四个平面的法向量平均值作为曲面上点的法向量,再由Phong计算出该点的光照强度。Gouraud方法采用了双线性差值即通过三个控制点对三角形面进行线性差值,与之不同的是我们采用了仿射变换—用四个控制点对一个四边形面进行线性差值。由于二维平面上四个点到四个点的线性映射是过定的,因此该线性映射通过矩阵求伪逆得到。平滑后的茶壶模型由上图可见,通过差值后得到的光照模型效果明显更优。曲面的纹理映射基于已经实现的仿射变化,我们能在曲面与纹理的图片之间建立映射关系。为了演示效果,我们在壶身上提上了照片。在纹理映射时,我们遍历视平面上的每个点,然后通过投影变换得到其在纹理图片中的位置,然后将纹理的RGB值作为系数与基本光照值相乘,最终得到该点的亮度。纹理映射后的茶壶表面纹理映射的局部由于是对视平面内的像素进行遍历,所以纹理的分辨率只受原图分辨率的限制。但如果原图分辨率过高,那么相当于隔若干行和若干列对原图进行采样,反而会显得不自然。在后续工作中,可以根据大致的显示比例对原图进行高斯平滑后再进行采样。茶壶表面的立体字造型与显示对立体字的构型分三个步骤:首先是基于图片提取出字的轮廓,该部分工作是由王舒鹤同学完成的,对轮廓的提取不仅需要知道轮廓的位置,还需要知道轮廓的方向,即字体在轮廓线的哪一边,尤其是对于有空心部分的字体。轮廓线的方向决定了立体字侧面的内外方向。第二步是对立体字侧面进行造型。将立体字侧面看成一个柱体,在第一步中提取出轮廓后,将其映射到茶壶表面,即得到了这个柱体的底面的坐标。然后将曲面上各控制点沿其法向量拉伸后,即可得到立体字的另一个面的所有点。然后将拉伸前后的点放在一起即得到了立体字的侧面。第三部是绘制立体字的顶面。将原曲面上各控制点沿法向量拉伸后,在新的曲面上进行纹理映射。需注意的是,只对有字的部分着色。着色完成后,立体字顶面也就绘制好了。立体字造型由上图可见,立体字整体效果明显,侧面也有光照渐变。但立体字还是有一些小瑕疵。可能原因是没有处理好各种边界和极限情况,导致图片局部的光照强度和深度出现异常数值。人脸识别与图像自动裁剪老师提示我可以把照片贴在茶壶上,于是我在纹理部分把它实现了。为了增强趣味性,我加入了这个人脸识别模块,用来自动的识别并裁剪出人脸部分,贴在茶壶上。人脸识别的关键代码参考了MATLAB visiontoolbox的FaceTrackingWebcamExample.m。该人脸识别模块是基于KLT算法提取图片中特征点来实现的人脸的跟踪;通过对比前后两帧中的变换关系,即可估计出目标的位移。最后通过仿射变化将图形旋转并平移,得到脸部图像。人脸识别与自动裁剪GUI界面的编写为了更方便地展示本小组的工作,我们编写了图形界面。打开potGUI.m文件,按F5运行,出现的是茶壶绘制的主界面。按上下左右方向键能旋转茶壶;按wsad四个键能平移茶壶位置;按qe两个键能让视点前进或后退。茶壶主界面主界面下放有四个键:单击‘Detail’键会显示茶壶造型的基本轮廓线,如Figure 1;单击‘Render’键会对茶壶进行光照渲染,如Figure 4;单击‘Texture’键会在茶壶表面进行纹理映射和立体字的绘制,结果如Figure 7;单击‘Face’键进入头像采集界面,如下图:头像采集界面在预览窗口下方有三个按键:单击‘Clear’键能重新提

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档