图形编程技术中国大学mooc网课答案-新全讯2网 教师资格题库 7119
第1章 计算机图形学与图形流水线 作业1:freeglut环境配置及第一个opengl程序的运行 1、(1)在自己的机器上配置好freeglut的编程环境; (2)运行02-openglstarter程序。该程序是一个在vs2015平台上的win32 console application,采用freeglut来辅助完成opengl编程。 (3)读懂该程序,学习并思考以下问题: a. 理解freeglut进行opengl编程的基本模式,体会消息驱动和回调函数; b. 函数myreshape(), display()都是什么时候调用? c. 如何实现键盘控制物体旋转平移的? e. glutidlefunc()有什么用? f. display()函数中为什么需要调用: gltranslatef(0.0, 0.0, -g_fdistance); g. 从中找找图形流水线 h. 理解gluperspective(60.0, 1.0*(glfloat)w/(glfloat)h, 1.0, 30.0); i. 理解glviewport(0, 0, w, h); 注意:除完成程序外,还需用文字逐条说明自己作业中的要点。 更详细描述可见第一章中的视频及课件“作业1-freeglut配置”; 作业1附件.zip中包括: (1)针对vs2015的相关的类库,freeglut-glew-for-vs2015.zip; (2)针对vs2010的相关的类库,freeglut-glew-for-vs2010.zip; (3)例子程序02-openglstarter。第3章 变换的秘密 作业2 太阳系 1、基本功能: 完成一个初步的太阳系程序。场景中有三个球体,一个表示太阳,一个表示地球,一个表示月亮;地球不停地绕太阳旋转,月亮绕地球旋转。 进一步扩展功能(选作下面的1项或几项功能): 如果地球有两个月亮呢? 画上轨道线; 让轨道倾斜; 提示: 画球体的函数: glutwiresphere(1.0, 20, 16); 如何让物体不停运动呢? void gluttimerfunc( ) glutpostredisplay()或glutidlefunc() 注意:除完成程序外,还需用文字逐条说明自己作业中的要点。 更详细论述可见所附文件:作业2-太阳系.pdf作业3 whynothing 1、打开程序whynothing,找找看为什么什么也没有画出来?修改使之能画出东西来。 撰写的作业文档中: (1)详细分析为何源程序没有显示出物体; (2)修改程序使得能够画出物体;效果请附图; 修改后的程序请打包后作为附件上传 打包文件名为:作业3-whynothing 姓名 作业附件包括: (1)程序whynothing; (2)作业3-whynothing.pdf;作业4 机器人手臂 1、参考太阳系与机器人手臂.pdf文档(来自红宝书),实现自己的机器人手臂。你能操作手臂进行运动。 所撰写的作业文档中包括 (1)程序功能的描述,效果请附图; (2)遇到的问题及思考。 程序请打包后作为附件上传 打包文件名为:作业4-机器人手臂 姓名 作业附件中包括: (1)太阳系与机器人手臂.pdf (2)作业4-机器人手臂.pdf第4章 光照 作业5 光照太阳系 1、在“作业2-太阳系”程序的基础上添加光照效果: (1)宇宙中加一盏泛光 (2)太阳自发光 (3)太阳系中加一艘飞碟,飞碟沿椭圆轨道绕地球或太阳运行,其上有一个spot light始终照耀着地球。 (4)可以加你想到的任何光照效果…… 撰写的作业文档中包括: (1)程序功能的描述,效果请附图; (2)自己添加的额外功能的描述(如果有的话),效果请附图; (3)遇到的问题及思考。 程序请打包后作为附件上传 打包文件名为:作业5-光照太阳系 姓名 作业附件中包括: 作业5-光照太阳系.pdf作业6 三维场景漫游 1、具体要求: (1)构建一个三维场景: 可利用glut提供的各种简单形体来搭建;或者读入别的模型来构成场景。 加入光照效果。 (2)用键盘操纵一个物体(如一艘飞船,或一个机器人)在三维场景中漫游。 视点可以放在物体上,或跟随物体;可利用glulookat( )函数来实现对视点的控制。 撰写的作业文档中包括 (1)程序功能的描述,效果请附图; (2)论述实现漫游的程序思路; (3)漫游操作顺畅,效果良好。 程序请打包后作为附件上传 打包文件名为:作业6-三维场景漫游 姓名 作业附件中包括: 作业6-三维场景漫游.pdf,其中有作业提示,可参考。 作业6-问题讨论与思考.pdf,其中有学生在编程中遇到的几个场景问题,可学习参考。第5章 帧缓冲区与片元运算 作业7:加载并显示obj格式的模型 1、1. 题目:加载并显示obj格式的模型 (1)了解obj模型的格式 可用记事本或写字板程序打开obj模型文件观察,并百度查查其格式规范。 (2)参考例子程序理解读取obj模型的过程 提供了两个例子程序:objloader和objrenderer-mfc。 (3)实现读取外部obj模型并进行绘制的功能 具体要求: l 可以用键盘或鼠标控制物体旋转 l 从网上搜索一些obj模型文件读读试试看 l 模型应当显示在屏幕中央 l 求模型的法向(有了法向就可以打上光照了) l 模型文件如果带有材质信息---读取材质、纹理,进行纹理映射(选作) 撰写的作业文档中包括 (1)程序功能的描述,效果请附图; (2)论述程序思路,包括模型读取、法向计算、模型居中、纹理材质等等功能的具体实现方法; 程序请打包后作为附件上传 打包文件名为:作业7-加载并显示obj格式的模型 姓名 作业附件中包括: 作业7-加载并显示obj模型.pdf,其中有作业提示,可参考。 例子程序1:objloader-freeglut.zip 例子程序2:objrenderer-mfc-vs2015.zip 几个obj模型:几个obj模型.zip第6章 纹理 作业8:带纹理的三维场景漫游 1、具体要求: (1)场景带有天空球或天空盒 (2)场景中有半透明纹理表示的物体,如树木或动态火焰或流水等 可用记事本或写字板程序打开obj模型文件观察,并百度查查其格式规范。 (3)可额外加分的点:(选作) 凹凸纹理、环境映射、置换纹理(displacement map) 撰写的作业文档中包括 (1)程序功能的描述,效果请附图; (2)遇到的问题及思考; 程序请打包后作为附件上传 打包文件名为:作业8-带纹理的三维场景漫游 姓名第8章 vertex shader与fragment shader 作业9:基于shader的光照计算 1、具体要求: (1) 实现方向光源的逐顶点光照计算和逐像素光照计算; (2) 实现两个光源的逐像素光照计算。 撰写的作业文档中包括 (1)程序功能的描述,效果请附图; (2)遇到的问题及思考; 程序请打包后作为附件上传 打包文件名为:作业9-基于shader的光照计算 姓名 作业附件为: 作业9-基于shader的光照计算.pdf,可参考。 例子程序:09-shader-vertlighting;09-shader-fraglighting。作业10:用纹理实现物体表面的镂空效果 1、具体要求: 具体的实现效果和实现方法提示,可参见附件中的pdf文档。 撰写的作业文档中包括 (1)程序功能的描述,效果请附图; (2)遇到的问题及思考; 程序请打包后作为附件上传 打包文件名为:作业10-用纹理实现镂空 姓名 作业附件为: 作业10-用纹理实现镂空.pdf,可参考。期末考试-最终 期末考试试卷 1、帧缓冲器的每个单元存放对应像素的( );深度缓冲器(z-buffer) 的每个单元存放对应像素的( ),模板缓冲区的每个单元存放对应像素的( )。 ①颜色值;②模板缓冲中的对应值;③深度值;④ z坐标值;⑤模板缓冲的ref值; ⑥rgba值; a、①④③ b、⑥③② c、①③② d、①③⑤ 2、平行投影的投影中心在: a、坐标原点 b、(0,0,1) c、用户定义的任意点 d、无穷远处 3、图形流水线的主要流程依次为:( )、( )和( ),之后每个像素点的颜色会存储在( )内并最终显示在屏幕上。 ①几何变换;②裁剪;③片元处理(fragment operations); ④ 帧缓冲区; ⑤ 深度缓冲区;⑥ 投影变换;⑦顶点处理(vertex operations); ⑧光栅化(rasterization); a、⑦⑧③④ b、①⑥②④ c、⑦①⑧⑤ d、①⑥③⑤ 4、如图所示一个三角面片abc,其三个顶点a, b, c的坐标向量分别为va, vb, vc。如果是采用顶点的逆时针排列来标识正向面的话,此三角面片的法向可以计算为: a、va × (vc-vb) b、(vc-va) × (vb-va) c、(vb-va) × (vc-va) d、va × vb × vc 5、如下是一段关于opengl模型变换的伪程序段,则执行此段程序后,物体a的变换矩阵为:( );物体b的变换矩阵为:( );执行此段程序后模型变换堆栈中的栈顶矩阵变为:( )。(假定每次新的矩阵都乘在原矩阵的右边) glloadidentity(); transformation tc; //施加一个模型变换,变换矩阵为tc; glpushmatrix(); transformation t1; transformation t2; primitive a; //定义图元物体a glpopmatrix(); glpushmatrix(); transformation t3; transformation t4; primitive b; //定义图元物体b glpopmatrix(); ①tc;② tc*t3*t4;③t4*t3*tc; ④ t2*t1*tc; ⑤ tc*t1*t2;⑥ tc*t1*t2*t3*t4; a、①②⑥ b、⑤②① c、④③① d、⑤②⑥ 6、求图(a)中三角形a变换到图(b)中的位置b所需的几何变换步骤。(注意:图中的物体只在oxy平面上发生了位置变换,即变换中物体顶点的z坐标值都没有变化) a、gltranslatef ( m, n, 0 ); glrotatef (φ, 0, 0, 1); b、glrotatef (90-φ, 0, 0, 1); gltranslatef ( m, n, 0 ); c、glrotatef (φ-90, 0, 0, 1); gltranslatef ( m, n, 0 ); d、gltranslatef ( m, n, 0 ); glrotatef (φ-90, 0, 0, 1); 7、求图(a)中三角形a变换到图(b)中的位置b所需的齐次坐标变换矩阵m,即求出矩阵m使得b=ma成立。(注意:图中的物体只在oxy平面上发生了位置变换,即变换中物体顶点的z坐标值都没有变化;假定这里采用了行优先矩阵,每次新的矩阵都乘在原矩阵的右边) a、 b、 c、 d、 8、z缓冲器算法(z-buffer算法)是最简单的消除隐藏面算法之一。若用这种算法进行消隐,在把显示对象的每个面上每一点的属性(颜色或灰度)值填入帧缓冲器相应单元前,要把这点的( )值和( )的值进行比较。只有( )时才改变帧缓冲器的那一单元的值,同时z缓冲器中相应单元的值也要改成这点的( )值。 ①z缓冲器中相应单元;②前者大于后者;③前者小于后者; ④深度; ⑤ z坐标; a、①④③④ b、④①③④ c、④①②⑤ d、④①②④ 9、下面哪些函数是opengl中的投影函数? a、glortho( ); b、gluprojective( ); c、glfrustum( ); d、gluperspective( ); e、gltranslatef( ); 10、图形流水线中,光栅化阶段的任务包括: a、计算每个顶点的颜色; b、根据顶点颜色计算片元颜色; c、计算出每个三角形所覆盖的片元; d、对片元进行几何变换; e、进行三维投影计算 f、插值计算片元的纹理坐标 11、下面哪些操作是在顶点处理(vertex operations)阶段进行的: a、几何变换; b、投影变换; c、深度检测; d、顶点的光照计算; e、顶点的纹理坐标计算; f、alpha检测; g、光栅化; 12、vertex shader中可以进行的工作包括: a、几何变换; b、投影变换; c、裁剪; d、视口变换 e、计算顶点的法向; f、计算顶点的纹理坐标; g、光照计算; 13、fragment shader中可以进行的工作包括: a、alpha测试; b、计算片元颜色; c、雾效计算; d、混合操作; e、深度测试; f、模板测试; g、计算片元的纹理颜色(texture fetching); 14、直线的透视投影可能是折线。 15、opengl支持点、线段、多边形和图像这些基本图形元素的绘制,变换、光照计算、纹理映射、反走样。 16、opengl的核心库包含opengl最基本的命令函数,该库中命令均以gl为前缀。 17、计算机发展早期曾出现过两种显示器:光栅扫描显示器(raster-scan display)与随机扫描显示器(random-scan display);后者因为其运算量小,效率高而成为目前的主流显示器。 18、phong明暗处理(phong shading)中采用的就是phong光照明模型来进行光照计算。 19、phong光照明模型和blinn-phong光照明模型都属于简单光照明模型。 20、mipmap方法可以节省纹理过滤的速度,但其有可能会比不使用mipmap多消耗超过2倍的纹理空间。 21、vertex shader可以完成顶点处理模块(vertex operations)中的所有工作。 22、某显示器当前的显示分辨率为1024*768,每个像素的颜色包含rgb三个分量,每个分量采用8bit的无符号整型来表示,则其颜色缓冲区需要占用( )兆字节的容量;每个像素的深度值为32bit的浮点型;则其深度缓冲区大小为( )兆字节。(答案之间间距一个空格) 23、opengl的核心库中的函数以( )为前缀,实用库中的函数以( )为前缀。(答案之间间距一个空格)