矿大地学可视化实验报告资料.docx
《矿大地学可视化实验报告资料.docx》由会员分享,可在线阅读,更多相关《矿大地学可视化实验报告资料.docx(16页珍藏版)》请在冰豆网上搜索。
矿大地学可视化实验报告资料
中国矿业大学
CHINAUNIVERSITYOFMINING&TECHNOLOGY
“地学可视化与景观模拟”实验报告
作者:
指导老师:
学号:
2015年11月
实验一利用OpenGL绘制三维建筑物
一、实验目的
了解OpenGL编程基本框架,掌握简单三维图形的绘制及变换。
二、实验内容
(1)利用OpenGL实现以下建筑物的三维绘制;
(2)利用OpenGL的图形变换实现对绘制物体的旋转、平移和缩放。
图1-1实验内容
三、实验要求
(1)实验代码的工程名称以“班级+学号+实验编号”方式命名。
例如,学号为7000000,则实验一的工程名称为”1_7000000_1”
(2)撰写实验报告,内容包括:
实验目的、实验内容、实验要求、实验步骤、实验结果。
报告要求有封面、标题、姓名学号等信息,格式要求规范。
四、实验步骤
1、创建实验工程2_07123138_1,添加头文件;
2、为工程添加代码,代码如下:
3、运行程序,调试代码中的错误,如此循环往复,直至得到实验结果。
5、实验结果
运行代码后,结果如下图所示:
图1-2绘图结果
图1-3旋转后结果
实验二添加光照和材质
一、实验目的
了解OpenGL光照模型,学会光源及材质的使用。
二、实验内容
(1)在实验一的基础上,增加一个白色的平行光源,并启用光照及光源。
(2)为2栋建筑物分别添加不同的材质。
三、实验要求
(1)实验代码的工程名称以“班级+学号+实验编号”方式命名。
例如,学号为7000000,则实验一的工程名称为”1_7000000_2”
(2)撰写实验报告,内容包括:
实验目的、实验内容、实验要求、实验步骤、实验结果。
报告要求有封面、标题、姓名学号等信息,格式要求规范。
4、实验步骤
1、新建工程2_07123138_2,添加实验一代码,实现建筑物的绘制。
2、在实验一的基础上,修改原有代码,添加光照和建筑物材质的代码,修改部分代码如下:
(1)在init函数中添加光源
(2)在display函数中为所绘制图形添加材质
3、运行代码,不断调试错误,修改参数,掌握光照和材质的作用
5、实验结果
实验结果如下:
图2-1添加光照和材质实验结果
实验三添加纹理映射
一、实验目的
了解OpenGL纹理映射,学会纹理映射的使用。
二、实验内容
在实验一的基础上,增加一个棋盘的纹理映射或自定义纹理映射
三、实验要求
撰写实验报告,内容包括:
实验目的、实验内容、实验要求、实验步骤、实验结果。
报告要求有封面、标题、姓名学号等信息,格式要求规范。
四、实验步骤
1、新建工程,添加实验一绘制图形代码
2、在实验一的基础上修改代码,添加纹理映射,部分修改的关键代码如下:
3、调试程序,直至实验成功
5、实验结果
图3-1添加纹理映射
实验四:
VRML编程
一、实验目的
学习VRML编程知识,掌握VRML基本编程技能。
二、实验内容
利用VRML构建具有地形、房子及汽车的三维场景并在该场景中实现汽车奔跑的动画。
其中,地形和房子的三维造型需通过原始数据自行构建,汽车造型通过inline方式载入已给定的wrl文件。
三、实验要求
撰写实验报告,内容包括:
实验目的、实验内容、实验要求、实验步骤、实验结果。
报告要求有封面、标题、姓名学号等信息,格式要求规范。
四、实验步骤
1、利用ElevationGrid节点构建地形网格,并利用Appearance节点的texture域贴上影像纹理,得到下图所示结果。
2、利用Box节点构建标准建筑物,并利用Appearance节点的texture域贴上建筑物纹理,得到下图所示结果。
3、利用Transform节点将标准建筑物经旋转及平移后放置相应的位置上。
4)利用inline节点将car.wrl文件添加进来,并设置一个间隔为20s的时间传感器,利用位置插补器节点PositionInterpolator定义一个前进路径,然后利用ROUTE语句将时间传感器的事件输出与位置插补器节点及汽车位置(通过Transform节点)关联起来。
4、代码如下:
实验小结
本次课程实验,共有四个小实验,其中前三个为OpenGL编程实验,最后一个为VRML编程实验。
总体来说,这四个实验与课程所学知识紧密相连,在学习之余联系实践。
通过本次实验,我进一步掌握了课程所学知识,懂得了理论联系实践的应用,也增强了编程能力。
其中,仍然遇到了不少问题。
比如在实验二的过程中,光照效果和材质效果不理想,需要不断调试。
而实验三中添加纹理,想要使左右两图形得到不一样的纹理,也需要在绘制图形的函数中修改参数。
而VRML相对OpenGL编程稍微简单,但是运行调试却没有那么方便。
综上,本次实验不仅巩固了理论知识,又增强了个人动手能力。
在今后的学习过程中,我会再接再厉,不断提高自己的编程水平。