Advanced Computer Graphics

CS05145 高级计算机图形学

时间:周日14:30-17:00
教室:腾讯会议室(858 963 5943)

教师:黄章进


通知

  1. [置顶] 请将昵称改为“学号-姓名”后加入Zoom会议 https://zoom.com.cn/j/5205202000
  2. [置顶] 请使用学号+姓名申请加入课程QQ群:1039790832,群名称:USTC高级计算机图形学2020。入群后,请将群昵称修改为“学号-姓名”。
  3. [2020/09/05] 论文报告安排9月12日(周六)腾讯会议室(858 963 5943)。属于正常上课,所有同学不得无故缺席,请大家相互转告!
  4. [2020/08/23] 实验3发布,提交到课程QQ群作业区,截止日期:2020年9月6日。注意所有实验必须采用基于GLSL着色器的OpenGL实现,否则无分数
  5. [2020/08/09] 报告论文公布,请大家及时挑选论文发送到邮箱 ustc11@hotmail.com, 截止日期:2020年8月16日。
  6. [2020/07/26] 实验2发布,提交到课程QQ群作业区,截止日期:2020年8月9日。
  7. [2020/06/07] 实验1发布,提交到邮箱 ustc11@hotmail.com,截止日期:2020年6月14日。

 


教材

E. Angel and D. Shreiner, Interactive Computer Graphics — A Top-Down Approach with Shader-Based OpenGL, 6th Edition, 2011. (教材提供的辅助函数)

中译本: 交互式计算机图形学——基于OpenGL着色器的自顶向下方法(第六版), 电子工业出版社, 2012. (教材例程)


讲义

致谢:本课程讲义是在邓建松教授讲义基础上修改而成。

 

第一章 计算机图形学概述

第二章 图形系统和模型

第三章 OpenGL编程 [例程]
第四章 几何对象与变换 [例程]
第五章 视图 [例程]
第六章 光照和明暗处理 [例程]
第七章 离散技术 [例程]
第八章 从顶点到片断
可编程着色器 (GLSL 1.20)
  1. 可编程流水线
  2. GLSL (I)
  3. GLSL (II)
  4. GLSL (III) [glsl.zip]
 
   
   
   

论文报告

时间: 2020年9月12日(周六)9:00-12:00 14:00-17:00

地点: 腾讯会议室(858 963 5943)

要求:

  1. 自行分组报告论文,每组不超过2人,申领论文时把学号、姓名和论文(列表)标题发到邮箱 ustc11@hotmail.com
  2. 论文选自Siggraph 2020http://kesen.realtimerendering.com/sig2020.html )共45篇, (具体见论文列表),每组选择一篇感兴趣的论文报告。
  3. 为解决选择相同论文的冲突,请大家在email中提供按优先级排列的拟报告论文列表。 根据先到先得原则按发email的时间顺序来确定报告论文列表。 如果所选论文都已被认领,会告知再次提供一份拟报告论文列表。只有在所有人确定完所报告的论文后,才能更换已确定的论文。
  4. 每篇论文口头报告时间为12分钟左右(包括展示video,建议ppt不超过15页),提问3分钟左右。
  5. 由于每篇论文的报告时间有限,比较短,因此PPT报告的重点在于:简单介绍作者和单位情况; 主要讲一下这篇文章在做什么(What)?为什么做这个问题(motivation-Why)?这个问题以前有些什么工作? 难点在哪里?这篇文章解决了什么样的难点或提出什么样的新方法(selling points)?局限和未来工作(limitation and future work)? 细节若太多不用展开,关键要让大家知道这篇文章的主要思想和价值所在。
  6. 请大家尽量在网上去找关于你所负责报告论文的相关资料。如各个作者的主页,项目网页。 很多作者会把论文、video、甚至将PPT放在他的主页。讲解论文时,论文中的图片、视频均播放给大家看一下。 “一图胜千言”,视频又能胜于图片。
  7. 书面报告要求采用科研论文格式(标题、摘要、关键字、正文、参考文献等)撰写, 内容可以是所报告论文的概览、同主题多篇论文的综述等。
  8. 评分:PPT口头报告(小组) + 书面报告(个人)

实验

提交说明:a) 直接在课程QQ群作业区提交;b) 提交内容:学号.rar(.zip)

压缩包里应包含所有编译和运行程序所“必需”的文件(.h/.c/.cpp/.glsl等)和一个文本说明文件readme.txt。 readme.txt为程序的一份简略技术文档,包括程序功能、编译环境、使用说明、实现技术等。 请不要提交编译链接生成的中间文件!

  • 2020年6月14日前提交:验证OpenGL程序的编译 square
    • 要求:OpenGL+GLSL(着色器)+FreeGLUT,具体要求如下:
      1. 修改square.cpp,使得窗口标题为"学号 姓名",例如"SF15011001 张三",编译运行后截图。(9分)
      2. 在readme.txt中说明开发编译环境及显卡支持的最高OpenGL版本。(10分)
    • 提交:源代码 + 截图.jpg + readme.txt,打包为 学号.rar(.zip)

    截图

  • 2020年8月9日前提交:交互式三维模型观察程序
    • 要求:OpenGL+GLSL(着色器)+FreeGLUT,变换要求通过着色器实现,具体要求如下:
      1. 模型显示:从给定的obj文件读入网格模型的顶点位置和颜色数据,显示在屏幕上。(7分)
      2. 模型变换:i) 上下左右方向键或WSAD键移动模型;ii)鼠标左键采用虚拟跟踪球方法旋转模型(不动点可选为质心); iii) z或Z键缩小或放大模型(把模型拉远或拉近照相机)(9分)
      3. ESC键退出程序,鼠标右键功能(可选,例如弹出式菜单用于选择模型等)。(10分)
    • 注意:目前,模型的顶点坐标值必须变换到[-1,1]中才能被完全显示。
    • 提交:源代码 + readme.txt。模型文件不用提交,只需在readme.txt中说明使用了哪个(些)文件即可。
    • 评分:技术应用
    • 网格模型:obj文件中行"v x y z"表示顶点位置(x, y, z);行" vc r g b"表示顶点颜色(r, g, b) ; 行"f v1 v2 ... vn"表示n边面的n个顶点的索引,注意索引值从1开始。(模型文件点击图片下载

    网格模型

  • 2020年9月6日前提交:飞行模拟
    • 要求:OpenGL+GLSL(着色器)+FreeGLUT,变换、光照、纹理映射等都需通过着色器实现,具体要求如下:
      1. 地形绘制:任选一个地形模型进行绘制,并用给定的纹理图像进行纹理映射。(6分)
      2. 飞行模拟:采用飞行员视图在地形场景中漫游。i) 左右键控制偏航(Yaw);ii) 上下键控制俯仰(Pitch);iii) a/d键控制侧滚(Roll);iv) 飞机位置的控制方面,可以按固定速度自动前行,并用+/-调节速度;或不自动飞行而用某些键分别控制x/y/z方向的移动。(7分)
      3. 物体绘制:在空中或地面放置物体,物体的材料属性应为可配置。
      4. 光照:至少两个光源。i) 要实现平面明暗处理和平滑明暗处理两种方式。平面明暗处理,需为每个面计算一个法向;平滑明暗处理,需为每个顶点计算一个法向。ii) 对两个光源,其中一个可以设置为可交互的白天太阳/夜晚月亮;另一个可以设置成飞机上的可交互的探照灯(聚光灯)。仅为建议,可以选用其他形式实现,例如在场景中加入路灯等。(8分)
      5. 雾:提供有雾/无雾及雾模型可配置的功能。(9分)
      6. 模型的数据结构、效率和交互方面的考虑。更精细地话,可考虑碰撞检测:飞机不能进入物体内部或地下等。(10分)
    • 提交:源代码 + readme.txt
    • 评分:技术应用
    • 地形数据:obj文件中行"v x y z"表示顶点位置(x, y, z);行" vt s t "表示顶点的纹理坐标(s, t) ; 行"f v1 v2 ... vn"表示n边面的n个顶点的索引,注意索引值从1开始。
    • 纹理数据:ppm文件,第一行为ASCII码表示的"P6 Width Height Depth",其中"P6"为文件头标识, Width/Height/Depth为图像的宽度/高度/RGB颜色分量的最大值;第二行开始为二进制表示的Width*Height个像素的RGB颜色值。 读取ppm文件的例程:[ppmtex.c]
    • 网格模型:只有顶点和面数据。模型文件不用提交,只需在readme.txt中说明使用了哪个(些)文件即可。

地形&纹理数据

网格模型

     


参考书

  • OpenGL编程指南(原书第9版), 机械工业出版社, 2017.(v1.4 例程
  • OpenGL超级宝典(第5版), 人民邮电出版社, 2012.
  • J. D. Foley et al. Computer Graphics - Principles and Practice, 3nd Ed., 2013.(影印版: 计算机图形学原理及实践-C语言描述(第二版), 机械工业出版社, 2002)
  • D. Hearn and M. P. Baker. Computer Graphics with OpenGL, 4th Ed., 2010.(中译版: 计算机图形学(第四版), 电子工业出版社, 2014. )
  • D. F. Rogers, Procedural Elements for Computer Graphics, 2nd Ed., 1998. 计算机图形学的算法基础,机械工业出版社

文档

软件

教程

 

Last update : 09/05/2020