OpenGL——场景设计

OpenGL—篮球场

说明文档
一、程序设计思路

1.场景布置思路

(1)游戏场景的总体布局就是一个露天篮球场,露天篮球场又分为五个部分:篮球场地,篮球架,看台,墙壁、篮球和太阳。

(2)篮球场地是一个40*20的长方形,然后加上了篮球场地的纹理贴图。

OpenGL——场景设计_第1张图片

(篮球场地)

(3)篮球架又分为四部分:支架1,支架2,篮球板,篮球圈。支架是一个长方体,通过立方体伸缩完成的;篮球板是一个4*5的长方形,然后加上了篮球框的纹理贴图;篮球圈是一个实心环,加上了蓝色的材质和光照。

OpenGL——场景设计_第2张图片OpenGL——场景设计_第3张图片

(篮球架)

(4)看台由14个40*3的长方形组成,分别加上了蓝色和黄色的材质和光照。

OpenGL——场景设计_第4张图片

(看台)

(5)墙壁由两个个44*10的长方形组成;

OpenGL——场景设计_第5张图片

(墙壁)

(6)篮球是一个半径0.8的实心球组成,然后加上了红色材质和光照

OpenGL——场景设计_第6张图片

(篮球)

(7)太阳是个半径为1的实心球体,然后加上了黄色材质和光照

OpenGL——场景设计_第7张图片
(太阳)

2.摄像机运用思路
(1)为了可以绕着Z轴旋转,从不同角度观察篮球,于是我用变量thetb记录绕Z轴旋转时的角度,通过三角变换计算改变相机的位置(图中的θ,效果就像小狗绕着食物转)
(2)为了不只有俯视效果,于是我通过变量theta(图中的α),使他绕中心点旋转(三角变换),达到平视和仰视的效果。
(3)为了让摄像机有远景和近景的效果,于是我通过鼠标的滑轮来控制摄像机的观察半径radius(图中的r),从而实现可以远景观察整个露天篮球场,还可以近景观察篮球比赛。
(4)本打算把摄像机实现第一人称的效果,但是四元素和万向锁未能参透,暂时不会写。
OpenGL——场景设计_第8张图片
(摄像机运动示意图)
OpenGL——场景设计_第9张图片
(摄像机旋转代码)

3.光照和材质的设置思路
(1)场景中的光照有放射光、环境光、漫射光、反射光、镜面反射光
(2)为了让篮球更加逼真,于是我给篮球加上了环境光、漫射光、反射光、镜面反射光和红色的材质
(3)太阳加的是放射光和黄色的材质。
4.纹理贴图设置思路
(1)篮球场地加了一个篮球场地贴图,篮球板加了一个篮球板贴图,其他都未加贴图,因为加贴图方法都类似。(球的加贴图方式:需要把球面分为n片正方形,用极限的方法,对每个正方形加贴图,现在还不会加)
5.自动物体运动思路
(1)通过使用回调函数实现篮球的自由落体运动和完全弹性运动和太阳的圆周运动。自由落体运动通过运用高中的物理知识实现的,不断通过公式计算位移(如图),然后更新位移;太阳的圆周运动不断更新角度值实现绕中心做圆周运动。(因为未实现碰撞检测,所以就只能在Z==0的地方反弹,而且可以穿过其他物体)
OpenGL——场景设计_第10张图片
(自由落体运动和完全弹性碰撞代码)

(2)通过使用快捷键实现篮球的前后左右的运动和摄像机的旋转运动
二、快捷键操作
1.‘w’、‘s’、‘a’、‘d’实现篮球的前后左右的运动
2.‘上’、‘下’、‘左’、‘右’实现相机的旋转
3.鼠标滑轮实现缩放和拉伸
OpenGL——场景设计_第11张图片
(快捷键操作操作代码)

完整项目

你可能感兴趣的:(OpenGL)