深圳大学计算机图形学大作业——虚拟场景搭建

一、具体内容
1.方块/棋盘格的渲染和方块向下移动
学生可以通过层级建模( 实验补充1和2)的方式建立多个虚拟物体,由多个虚拟物体组成一个虚拟场景,要求在程序中显示该虚拟场景,场景可以是室内或者室外场景;场景应包含地面。

2.添加纹理
参考实验4.1,为场景中至少两个主要物体添加纹理贴图 。

3.添加光照、材质、阴影效果
参考实验3.3和实验3.4,实现光照效果、材质、阴影等。

4.用户交互实现视角切换完成对场景的任意角度浏览
参考实验3.1,完成相机变换。

5.通过交互控制物体
参考实验2.3,实现物体的变换,允许用户通过键盘或者鼠标实现场景中至少两个物体的控制(移动,旋转,缩放等等)。

1.模型绘制截图
在这里插入图片描述

2.模型的层次结构框图

在这里插入图片描述

3.鼠标和键盘的具体交互用法
首先是机器人的机械臂运动操控 键盘0-9键分别用来指定某个模块 与下面截图一一对应
在这里插入图片描述

J和K键分别对某个机械臂进行两个方向的旋转

在这里插入图片描述

控制角色移动
键盘的W S A D键分别用来操控机器人前后左右移动 同时机器人会往相应方向旋转

向左
在这里插入图片描述

向右
在这里插入图片描述

按键M可以让机器人的双脚自动前后摆动
在这里插入图片描述

按键z可以让机器人的头自动旋转
在这里插入图片描述

相机类的键盘:
键盘的U I O键分别用来操控相机的旋转角,俯仰角和半径的增加,同时按下shift键则减少相应数值

正交投影和透视投影切换 按下B键则是正交模式 V键则是透视模式
在这里插入图片描述
在这里插入图片描述

鼠标操作
点击鼠标左键实现光源位置的变动 即图中的太阳会根据鼠标的点击位置而跑到相应地方

在这里插入图片描述

通过滑动滚轮实现透视投影的视野缩放 向下滑时距离变远 向上滑时距离变近
下图为扯到最远的视觉效果
在这里插入图片描述

下图为较近距离的视觉效果

在这里插入图片描述
二、实验过程
1.读取纹理和obj文件
首先对场景中各个物体的obj文件进行读取,场景中的物体有太阳,云朵,房子,车,机器人,娃娃等等
Readobj函数主要代码
在这里插入图片描述

在addmesh函数中传入纹理图片并绘制
在这里插入图片描述

传递纹理数据

在这里插入图片描述

读取纹理图片
在这里插入图片描述

存储纹理数据
在这里插入图片描述

最后在init函数里面调用读取obj文件和纹理图片对物体进行绘制
在这里插入图片描述

运行结果展示

在这里插入图片描述
在这里插入图片描述

光源
光源类使用的是最基础的光源类
在这里插入图片描述

光源参数设置

在这里插入图片描述

阴影
阴影投影矩阵获取
在这里插入图片描述
在这里插入图片描述

阴影的绘制
在这里插入图片描述

这里设置了一个fla全局变量 当fla为0时绘制阴影 为1时不绘制 当一个物体不需要阴影的时候就在调用drawMesh函数前将其设置为1 调用后后再设置为0
在这里插入图片描述

键盘交互操作
参考补充实验2 对机器人通过键盘0-9实现层级建模各个骨骼的旋转

在这里插入图片描述

相机类中的键盘
实现不同角度的相机位置以及相机视角和范围切换
在这里插入图片描述

正交投影和透视投影切换
在这里插入图片描述

正交投影vs透视投影效果如下:
在这里插入图片描述

在这里插入图片描述

鼠标操作

点击鼠标左键实现光源位置的变动
在这里插入图片描述

太阳位置也会随之变动 并且实现了一个太阳自转
在这里插入图片描述
在这里插入图片描述

通过滑动滚轮实现透视投影的视野缩放
在这里插入图片描述

fov变量定义了我们可以看到场景中多大的范围
在这里插入图片描述
最后调用键盘鼠标回调函数
在这里插入图片描述

角色移动
角色移动包括前面太阳的移动以及机器人的移动
键盘操作机器人前后左右移动以及头部旋转
在这里插入图片描述

新增两个变量move_x和move_z通过增加move_x和move_z的数值来实现机器人位置的变动
在这里插入图片描述

然后通过改变theta值来改变机器人转向
在这里插入图片描述

双脚自动摆动
首先设置一个全局变量ismove,当其为1时,开始摆动。lup1表示其左臂正在向上摆动,即机械臂角度正在递增,此时将其角度+1,继续向上摆动,而当lup0时,表示右臂正在向下摆动,机械臂角度正在递减,此时将其角度-1,继续向下摆动,而当其角度大于等于25度或小于等于25度时,就将其分别设置为下摆和上摆。右臂同理,就实现了自动摆动。
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
计算机图形学作业题 1. 计算机中由图形的形状参数(方程或分析表达式的系数,线段的端点坐标等)加属性参数 (颜色、线型等)来表示图形称图形的参数表示;枚举出图形中所有的点称图形的点阵 表示,简称为图像(数字图像) 2. 什么是计算机图形学计算机图形学有哪些研究内容? 3. 计算机图形学有哪些应用领域? 4. 计算机图形学有哪些相关学科分支?它们的相互关系是怎样的? 5. 图形系统的软件系统由哪些软件组成?举例说明。 6. 了解计算机图形系统的硬件。 7. 什么是显示器的分辨率、纵横比、刷新率? 8. 什么是像素、分辨率、颜色数?分辨率、颜色数与显存的关系? 分辨率M(N、颜色个数K与显存大小V的关系: 例:分辨率为1024像素/行(768行/帧,每像素24位(bit)颜色(224种颜色)的显示 器,所需的显存为:1024(768(24位(bit)=1024(768(24/8=2359296字节(byte)。 或:每像素16777216种颜色(24位真彩色),1024(768的分辨率,所需显存为:102 4(768(log216777216位显存=2359296字节显存。 9. 什么是图元的生成?分别列举两种直线和圆扫描转换算法。 10. OpenGL由核心库GL(Graphics Library)和实用函数库GLU(Graphics Library Utilities)两个库组成。 11. 区域填充算法要求区域是连通的,因为只有在连通区域中,才可能将种子点的颜色扩 展到区域内的其它点。 区域可分为 向连通区域和 向连通区域。区域填充算法有 填充算法和 填充算法。 12. 字符生成有哪两种方式? 点阵式(bitmap fonts点阵字——raster光栅方法):采用逐位映射的方式得到字符的点阵和编码——字模位 点阵。 笔画式(outline fonts笔画字——stroke方法):将字符笔画分解为线段,以线段端点坐标为字符字模的编 码。 13. 图形信息包含图形的 和 。 14. 什么是图形变换?图形变换只改变图形的 不改变图形的 。图形变换包括 和 ( )。 15. 熟练掌握二维图形的齐次坐标表示、平移、比例、旋转、对称变换以及复合变换的方 法和原则。 16. 图形的几何变换包括 、 、 、 、 ;图形连续作一次以上的几何变换称 变换。 17. 试写出图示多边形绕点A(xo,yo)旋转的变换矩阵。要求写出求解过程及结果。 18. 试写出针对固定参考点、任意方向的比例变换矩阵。 19. 试写出对任意直线y=mx+b的对称变换矩阵。 20. 什么是窗口?什么是视区?什么是观察变换? 21. 简述二维观察变换的流程。 22. 试述窗口到视区的变换步骤,并推出变换矩阵。 23. 已知w1=10,w2=20,w3=40,w4=80, v1=80,v2=110,v3=10,v4=130, 窗口中一点P(15,60),求视区中的映射点P'? 24. 在观察变换前必须确定图形的哪部分在窗口内,那些部分在窗口外,这个选择处理过 程称为 。 25. 使用Open GL的变换函数,若程序中先后调用的几个变换函数所定义的矩阵及顺序为L, M, N,其作用顺序为: 。 26. 试列举你所知的直线和多边形裁剪算法。 27. 简述Cohen-Sutherland(代码)线段裁剪算法。 28. 窗口和多边形如下图,应用Sutherland- Hodgman算法(逐边裁剪算法),对多边形进行裁剪。请以左、上、右、下的顺序列出 窗口各边裁剪多边形后所得的多边形顶点表。 29. 任何满足欧拉公式的形体称为 形体。 30. 超二次曲面通过将额外的参数插入 曲面方程而形成。 31. 在曲线、曲面的表示上,参数方程有何优点? 32. 要变换参数曲线曲面可以直接变换它的 ,而对于非参数形式则必须变换 。 33. 欧几里得曲线是 物体,沿三维曲线路径的位置可用 参数描述。 34. 规格化参变量 t [0, 1] 使得曲线曲面的 容易确定。 35. 什么是插值?什么是逼近?什么是拟合? 36. 给定一组有序的数据点 Pi ,i =0, 1, …, n,称为控制点,构造一条曲线顺序通过每个控制点,称为对这组控制点进行 ,所构造的曲线称为 。 37. 构造一条曲线使之在某种意义下最接近给定的数据点,而不要求通过其中任何一个点 ,称为对这些数据点进行 ,所构造的曲线为 曲线。 38. 拟合(Fitting)是 和 的统称。 39. 对于一组有序的型值点,确定一种参数分割,称之对这组型值点 。确定某个单参数矢函数,即确定参数曲线方程,称为曲线的 。 40. 参数域中所有节点构成的序列称为 矢量。 41. 什么是参数化?什么是参数区间的规格化? 42. 什么是参数连续性? 二条曲线P

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值