OpenGL—篮球场

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

1.场景布置思路

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

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

(篮球场地)

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

(篮球架)

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

(看台)

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

(墙壁)

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

(篮球)

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


(太阳)

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

(摄像机运动示意图)

(摄像机旋转代码)

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

(自由落体运动和完全弹性碰撞代码)

(2)通过使用快捷键实现篮球的前后左右的运动和摄像机的旋转运动
二、快捷键操作
1.‘w’、‘s’、‘a’、‘d’实现篮球的前后左右的运动
2.‘上’、‘下’、‘左’、‘右’实现相机的旋转
3.鼠标滑轮实现缩放和拉伸

(快捷键操作操作代码)

完整项目

OpenGL——场景设计相关推荐

  1. UE4风格化场景设计入门指南 Stylized Station – The Environment Artist’s Survival Kit

    持续时间13h 1920X1080 .ts 包含项目文件 大小解压后:4.9G 语言:英语+中文字幕(人工校对) 标题:风格化的车站--环境艺术家的生存工具包 信息: 环境艺术很难. 尤其是作为初学者 ...

  2. Sketchup插件Vray户外场景设计渲染教程 Vray Next For Sketchup Exterior

    Sketchup户外场景设计的Vray Next 你会学到什么 渲染白天和夜晚场景 后期制作 Sketchup的Vray Next 中级sketchup用户 大小解压后:3.83G 1280X720 ...

  3. UE4场景设计学习教程

    视频:MPEG4视频(H264) 1920×1080 25fps 1400kbps |音频:AAC 44100Hz立体声128kbps 语言:西班牙语+中英文字幕(根据原英文字幕机译更准确) |时长: ...

  4. 性能测试场景设计之用户模式设置

    性能测试场景设计之参数设计 1.用户模式设置 场景执行前需要根据系统特性对场景进行配置,以便对系统进行负载测试时压力状况更加符合业务特性.相关的参数配置如下: 首先新建场景,如下: 场景新建的时候一般 ...

  5. 阿里巴巴在应用性能测试场景设计和实现上的实践

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yunqiinsight/article ...

  6. J.R.R.托尔金笔下的中土世界与《斗破苍穹》项目实践:从世界观解构入手场景设计

    本期真经阁的特邀讲师将通过对<魔戒>与<霍比特人>这两部影视作品进行分析,为读者解构如何通过视觉上的表现设计来展现托尔金笔下的中土世界.并将其中讲述的方法应用在<斗破苍穹 ...

  7. loadrunner 场景设计-负载生成器管理

    场景设计-负载生成器管理 by:授客 QQ:1033553122 1  简介 当执行一个场景时,Controller把场景中的每个用户配到负载生成器(Load generator). 所谓的负载生成器 ...

  8. loadrunner 只能并发50_loadrunner 场景设计-(一)

    目录:手工场景和目标场景设置 混合场景设置 一.手工场景 手工场景是自行设置虚拟用户的变化,通过设计用户的添加和减少过程,来模拟真实的用户请求模型,完成负载的生成. 手工场景分为:Scenario模式 ...

  9. 游戏场景设计思维:黑白与颜色的现代构成艺术

    导语:在场景设计中,黑白构成与颜色厚涂是构图中两个分不开的重要技法.黑白构成和颜色厚涂在构图的不同阶段分别解决了什么问题,两者之间又有什么关联,在运用中有那些技巧?本文将重点给大家讲述这两种技法在动漫 ...

  10. MFC 视图-OpenGL场景-CDialogBar三个界面保存为图片

    问题:如图所示的OpenGL场景.View.CDialogBar三个界面的内容保存成图片然后拼合成一张图 思路: 分四步 一.View视图界面保存 利用BitBlt函数将界面拷贝到内存DC中 // 将 ...

最新文章

  1. 2019百度之星初赛-1
  2. Map和hashmap
  3. 基于 Blazor 开发五子棋小游戏
  4. Java LinkedList公共布尔提供(对象o)方法(带示例)
  5. PHP给后台管理系统加安全防护机制的一些方案
  6. SWT里Slider和Scale的区别
  7. Kubernetes 小白学习笔记(32)--kubernetes云原生应用开发-sidecar注入和istio服务治理演示
  8. 微软服务器和onenote,为什么微软推出“阉割版”onenote?一篇文章快速入门onenote uwp...
  9. win11任务栏某些情况下不能自动隐藏问题初探
  10. 16*16点阵字库HZK16的使用
  11. 宝贝数量、流量组成结构、付费和免费流量占比、提高流量价值、店铺为什么没有销量?这些你真应该看看
  12. 把edge默认上网页面改为百度
  13. OpenCV调用手机摄像头与人脸检测
  14. MATLAB app designer/GUI 学习笔记(一)
  15. 怎样修复计算机系统声音,电脑没声音了如何恢复?电脑突然没声音修复方法汇总...
  16. 【教程】超详细通过Shizuku集成XQ_Crystal实现收森林能量
  17. [洛谷P1856] [USACO5.5]矩形周长Picture
  18. MATLAB给信号添加白噪声
  19. 盛邦安全创始人权晓文入选IDC中国CSO名人堂十大人物
  20. 进阶篇:3.1.1)注塑件-超声波焊接

热门文章

  1. python 0xa什么意思_python 专业术语有哪些?不用找了,术语大全都在这了
  2. HTML5+CSS3初学尝试(小米官网首页)
  3. let与var的区别(重点看例子)
  4. 泛微oa流程表单之取值弹窗
  5. Microsoft Visual SourceSafe的使用
  6. 出现HTTPS证书错误原因
  7. 5.flask与数据库
  8. 计算机符号mi,在线特殊符号大全
  9. 疑问代词who和whom的用法
  10. model.load_state_dict(state_dict, strict=False)