09008406_实验二.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
09008406_实验二

计算机图形学实验报告二怡东 2010年1月日星期 使用手册 程序功能: 生成了一个三维茶壶,并且设置了光照,和表面材质。 可以通过键盘上的按键来改变光源的位置,或者右击菜单中也有直接设置光源的位置的功能。 可以通过对茶壶的拾取和鼠标移动对视点进行变换,看到茶壶的不同表面。 可以通过右击菜单中的选项来改变茶壶的材质,或者直接用户自定义茶壶材质参数 使用手册: 打开程序后, 1.通过键盘上的wsadqe键来改变光源的位置。 2.鼠标右键菜单, 可以改变材质属性, 或者手动输入材质属性 3.右击菜单中的添加纹理贴图可以对球体进行贴图. (默认图片为该文件夹下的output.bmp) 4.可以通过对茶壶的拾取和鼠标移动对视点进行变换,看到茶壶的不同表面。 5.右击菜单中可以直接指定用户需要的光源位置。 6.q键退出 设计思路: a)光源. 本实验没有做Init()函数来初始化,而是直接封装在myDisplay()函数中。 先开始对于光源的位置用GlLookAt初始化,而后在对ws的响应中对y坐标改变0.1,在对ad的响应中对x坐标改变0.1,在对qe的响应中对z的坐标改变0.1。 还可以通过右击菜单中的“设置光源位置”直接对数组Light_PosType赋值,从而能够设定光源位于任何位置的效果 b)材质 在myDisplay()中对材质附初始值。 对鼠标右键加入菜单, 对相应条目设置固定的材质属性以方便调用 加入手动设置条目, 让用户可以从键盘输入材质属性. c)贴图 先写 loadTexture() 函数, 把默认图片载入为默认贴图, 再响应右击菜单中的“增加纹理贴图”选项开启贴图功能 (2d), 并在要贴图时先调用loadTexture载入贴图后,再绘制要贴图的对象. 注意:默认图片为 output.bmp 问题:不太理解 OpenGL用什么方式在茶壶等曲面上完成贴图的。 实现 : 以下是主要代码实现: 设置光照与材质: 以下为光源的设置 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE); glLightfv(GL_LIGHT1,GL_POSITION,LightPos_Type) glLightfv(GL_LIGHT1,GL_AMBIENT,BlackColor);//环境光 glLightfv(GL_LIGHT1,GL_DIFFUSE,WriteColor);//漫反射光 glLightfv(GL_LIGHT1,GL_SPECULAR,WriteColor);//镜面反射光 glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); //定义表面材质 glMaterialfv(GL_FRONT_AND_BACK,GL_EMISSION,SurfEmissiongColor); glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,DiffuseColor); glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,SpecularColor); glMaterialfv(GL_FRONT_AND_BACK,GL_SHININESS,Shininess); 改变光源位置: Void MyKeyboard(unsigned char key, int x, int y){ switch (key) { case a: LightPos_Type[0] += 0.1; glutPostRedisplay(); break; case d: LightPos_Type[0] -= 0.1; glutPostRedisplay(); break; case s: LightPos_Type[1] += 0.1; glutPostRedisplay(); break; case w: LightPos_Type[1] -= 0.1; glutPostRedisplay(); break; case q: LightPos_Type[2] += 0.1; glutPostRedisplay(); break; case e: LightPos_Type[2] -= 0.1; glutPostRedisplay(); break; case c: LightPos_Type[3]=1-LightPos_Type[3]; glutPostR

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档