该实例程序是山大计算机学院图形学课程实验的实验三。大三了,同学们都挺忙的,考研的考验,准备保研的争取保研,我呢,不思进取,闲人一个,就花些时间把这实验认真做了一遍,感觉还不错,交完实验就扔在那里了,今天看到了就发到网上,学弟学妹们,可以参考一下,盗版不究。代码还有些不完善的地方,原来想完善好了再发到网上的,不过这个实验牵扯到了一段伤心往事,不想再纠结在这上面了,所以就直接发上来了。不过发上来的代码是完全符合实验老师所要求的,有兴趣的童鞋可以完善一下。
想想以后可能接触不到图形学的编程了,即使接触了用到OpenGL编程的机会也不多了,认真研究一下,也是不错的。
好了,不多说了,下面是程序的简介:
功能介绍:实验要求的6个基本功能都达到了,扩展功能的3个也完成了。
运行之前:
(1)学校的机器有自动还原功能,而我们的实验要求每次都要复制若干文件到相应的目录,为了省却这些麻烦,写了一段批处理的代码,来完成复制过程。
首先将“复制”这个批处理文件和“参考资料”文件夹拖到桌面上来,双击运行“复制”这个批处理文件即可完成复制过程。
(2)将lab文件夹复制到D盘根目录,然后进入到D:\lab\test双击test.dsw即可,编译运行就会出现结果。
(3)TestMd2.cpp文件里的times表示差值的次数 ;取值可以调节,机房中设置100,自己的机器上设置10,机房里的机器可能配置太好了。
运行之中:
运行之后出现两个窗口一个是控制台,一个是图形界面窗口。控制台只是调试输出用的。
我们在图形界面窗口中操作:
快捷键:
(1)C :切换视角,一、三视角和俯视角的切换,可以体验一下在人物跑动中切换视角的感觉。
(2)空格:结束自动寻路,程序支持自动寻路,鼠标左键点击地图中的任何有效地点(非障碍物处),人物模型会自动走到目标地点处。空格就是用来,结束该自动寻路的过程的。(不支持小地图上的鼠标点击寻路,童鞋们可以增加此项功能,很简单的)。
(3)ctrl+鼠标左键:改变地形,障碍物和空地之间的转换。
(4)方向键:各个角度观察整个程序模型。
ps:
(1)人物跑动中,切换视角人物不受影响。
(2)人物跑动中,支持改变地形,此时,人物会重新计算路径,并按照新路径移动到目的地,如果改变地形导致无法到达目的地,则自动寻路结束。注意:不要在人物即将到达的的cell处增加障碍物,因为此时人物已经计算好,该cell处可达,就会前往该处,又因为增加了障碍物,碰撞检测不通过,所以人物跑动不休。(这里是不完善的地方之一,主要是因为glutTimerFunc的原因,有兴趣的童鞋可以改进一下)
(3)方向键改变程序模型角度之后,也可以ctrl+鼠标左键修改地形,这要归功于gluUnProject函数。
(4)在自动寻路过程中,要改变寻路地点只能是按下空格键,结束自动寻路,再点击地点,进行自动寻路,否则,两次鼠标事件响应重叠,对模型进行叠加的操作,不能产生预期效果。(和第二条一样这里也是glutTimerFunc函数的原因,有兴趣童鞋可以改进,主要是glutTimerFunc函数这里一旦注册定时器,不能取消,直到它执行结束)
(5)程序模型的纹理可以更改,纹理都在lab\data目录下,地图的纹理是Dota地图中提取的dota小地图的纹理,其余纹理是网上找到的图片然后Ps转换格式做的。
总结:实验不难,指导书上的介绍虽然很多,但是大多数都是介绍人物模型的,实验主要用到了很好用的函数,分别是glutTimerFunc和gluUnProject函数,理解了图形显示的过程加上这两个函数,这个实验就没什么了,剩下的就是数学问题了。
量化橙同学
- 粉丝: 7692
- 资源: 7
最新资源
- 基于java+ssm+mysql的疫情期间高校人员管理系统开题报告.docx
- 基于java+ssm+mysql的校园兼职管理系统开题报告.docx
- 基于java+ssm+mysql的校园二手物品交易平台开题报告.docx
- 三张金花游戏示例demo
- 前后端分离项目《基于Vue.js和SpringBoot的在线办公系统》+源码+论文+说明文档
- FPGA-flash写保护解除
- 基于微信小程序的多肉植物图鉴.zip
- uniapp实现选择省市区镇(街道)四级级联选择,包含三级级联选择(vue3版本)
- tsn-imagenet-pretrained-r50-8xb32-1x1x8-100e-kinetics400-rgb
- Python项目-自动办公-02 批量生成PPT版荣誉证书.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈