HNU计算机图形学-作业一

任务一:创建交互式三维场景

前言

完整工程文件

具体运行环境配置看这个栏目的第一篇文章

专选课计算机图形学的第一次作业,老师是第一次给本科生上课,用的作业是香港中文大学的计算机图形学的作业内容(老师就是这个学校毕业)。第一次接触OpenGL,一开始也没学什么高级的技术,所以就简单画了一些图形的组合,只学了一周不到,写这篇文章主要为了记录和分享所学内容(毕竟也花费了很多时间的专选),代码格式也比较混乱,很多重复的部分,比如定义顶点的信息等等,凑合看看吧。

下面是作业文档的要求

介绍

第一个编程任务将向您介绍OpenGL图形编程接口和可编程管道。在这个编程任务中,您需要创建一个具有用户交互的3D场景(参见图1中的好例子)。本作业旨在将您对计算机图形概念的理解应用于实践,熟悉OpenGL编程库,并向您介绍可编程管道。

在这里插入图片描述

您的目标是设计具有用户交互的3D场景。具体来说,在场景中,必须有2D对象(例如平面)、3D对象(例如立方体)和/或线(点)(示例见图2),并且您应该能够对其应用包括平移、旋转和缩放在内的变换。用户应该能够使用键盘(和/或鼠标)平移、旋转和缩放对象。对象颜色、窗口大小、窗口标题和场景布局都取决于您。要使场景更逼真,应使用透视投影而不是正交投影。需要使用索引绘制对象。您 的3D场景不受演示图片和程序的限制。

在这里插入图片描述

实施详细信息

我们提供了两个着色器程序(即VertexShaderCode.glsl和FragmentShaderCode.glsl)和一个模板主程序 (即main.cpp)。它们包括GLFW接口工具包中用于事件处理函数的必要函数。使用此模板作为实施的基础。你必须设计你的函数来处理键盘事件,你还应该提交一个readme.txt文件来解释你在程序中设计的键盘(和/或鼠标)事件。否则,将扣除相关项目的分数。所有程序都应符合合理的编程标准:标题注释、在线注释、良好的模块化、清晰的打印输出和效率。

基本要求:

  1. OpenGL代码应该使用OpenGL 3.0+的可编程管道,而不是固定管道。

  2. 至少绘制一个二维对象和两个三维对象。

  3. 确保至少绘制了一个带有索引的对象。

  4. 创建至少三种键盘和/或鼠标事件,如旋转、平移和缩放。

  5. 使用给定的透视投影(45.0 degree, any aspect, 0.1, 20.0)绘制场景。

  6. 启用深度测试以实现遮挡。

其他自我设计要求:

可以自由添加对象、移动对象、组织对象,以及任何使场景有趣的内容

分级方案

您的作业将根据以下评分方案进行评分:

在这里插入图片描述

实现效果

在这里插入图片描述

鼠标 “移动”:转动整个布局视角
鼠标 “滑轮”:上滑放大视角,下滑缩小视角
Key “Esc”: exit
Key “W”: 视角前移
Key “A”: 视角左移
Key “S”: 视角后移
Key “D”: 视角右移
Key “UP”: 人物上移
Key “DOWN”: 人物下移
Key “LEFT”: 人物左移
Key “RIGHT”: 人物右移
Key “SPACE”: 人物跳跃
Key “ENTER”: 人物身体换色
Key “Q”: 透视投影参数宽高比增大
Key “E”: 透视投影参数宽高比减小

说明:左下角和右上角有两个传送门,人物走到对应位置可以传到相应传送门。
人物只能在棋盘内活动,超过布局大小时会移动到对面的位置

最后再说一下因为是第一次做,所以很多地方有重复的部分(比如很多个for循环),

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值