开发内容大概为:
使用库文件注册一个绘制窗口并命名。使用OpenGL绘制两个长方体当作动画短片的空间。在两个空间之间绘制一个管道,使得在第一个空间的小球可以通过该管道运动至另一空间。制作若干小球,使它们在第一个空间随机运动,并有一定几率运动到第二个空间中去。给空间中添加光照与材质为每个模型添加纹理利用碰撞实现小球在撞击空间边缘时产生特定的碰撞效果(类似爆炸闪光效果)。在第一个空间中通过粒子来实现四个“喷射”动作特效渲染环境。
问题一: 使用实验一所使用的控制台方式,不适合本实验的方式,不灵活。
解决办法:若使用控制台方式,只能在display函数中加入小球绘制过程,与刷新过程。但是我们的实验需要引入大量的其他类,需要灵活处理。所以我们采用了从网上学习到的glwindows库文件来注册窗口,并添加需要的函数。
问题二: 在设置小球碰撞的时候,小球刚开始附着在上面然后不会动。
解决办法:由于碰撞检测判断的是射线与面或球的交点,需要的参数为面的发现和射线的发现,但是当我在设置上面的法线时设置成了相反方向。经过修改后程序运行正常。
问题三:加入粒子特效后,并无显示。
解决办法:在走投无路的时候我将其他所有的绘制物体方法注释后添加粒子特效,发现是由于粒子特效过小所以在图中无显示。所以经过设置参数,将粒子特效设置成正常大小。
问题四: 加入摩擦力时速度并无变化
解决办法:加入摩擦力的原理为在小球碰撞右面盒子的时候,将速度设置为速度的百分之50.但是测试时碰撞并不减速。最后经过断点调试之后发现摩擦因数为0.由于设置参数的时候摩擦因数设置为int类型,而摩擦因数为小数。改变摩擦因数为double之后产生了正确的效果。
实验效果图:
时间: 2024-10-12 23:57:52