- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- (函数)2011年高考数学第一轮复习知识点分类指导.doc
- (人教新课标)四年级数学上册课件统计2.ppt
- (三)无穷大无穷小、两个重要极限.ppt
- 01-项目管理概论.ppt
- 005单位工程招标控制价汇总表.doc
- 01C++的初步知识1.ppt
- (论文稿)初高中英语衔接教学中的个性化教学方式.doc
- 02打造高效课堂提高.ppt
- 02白坯成型.doc
- 01韩国INNO介绍.ppt
- 城市轨道交通站点周边交通组织调整2025年社会稳定风险评估与预防措施报告.docx
- 2025年金融机构数字化风险管理中的风险管理与金融监管研究报告.docx
- 文化旅游演艺项目文化价值与社会影响力评估报告.docx
- 2025年新型甜味剂在饮料中的应用与法规监管下的产品售后服务报告[001].docx
- 工业机器人柔性制造系统2025年应用趋势与市场前景报告.docx
- 金融风险模拟的量子革命,2025年技术应用研究报告[001].docx
- Z世代消费习惯与品牌内容营销策略:2025年新消费品牌内容报告.docx
- 2025年新型甜味剂在饮料生产中的应用与法规监管下的产品差异化策略报告.docx
- 儿童教育游戏化教学资源开发与共享研究报告.docx
- 低碳城市建设的规划与实践:新疆案例分析报告2025.docx
文档评论(0)