|
Advanced Computer Graphics
COMP6211P 高级计算机图形学
时间:周二 14:00-16:25
教室:高新校区 G2-B302
教师:黄章进
通知
- [置顶] 请使用学号+姓名申请加入课程QQ群:907495176,群名称:USTC高级计算机图形学2023秋。入群后,请将群昵称修改为“学号-姓名”。
- [2024/01/02]书面报告提交到课程QQ群作业区,截止日期:2024年1月14日,每位同学单独提交!
要求:采用科研论文格式(标题、摘要、关键字、正文、参考文献等)撰写, 内容可以是所报告论文的概览、同主题多篇论文的综述等。
- [2024/01/02] 实验3发布,提交到课程QQ群作业区,截止日期:2024年1月14日。注意所有实验必须采用基于GLSL着色器的OpenGL实现,否则无分数!
- [2023/12/12] 报告论文公布,请大家及时挑选论文并在腾讯在线表格里填报申领, 截止日期:2023年12月17日。
- [2023/11/23] 实验2发布,提交到课程QQ群作业区,截止日期:2023年12月12日
- [2023/11/08] 实验1发布,提交到课程QQ群作业区,截止日期:2023年11月15日
教材
E. Angel and D. Shreiner, Interactive Computer Graphics — A Top-Down Approach with Shader-Based OpenGL, 6th Edition, 2011. (教材提供的辅助函数)
中译本: 交互式计算机图形学——基于OpenGL着色器的自顶向下方法(第六版), 电子工业出版社, 2012. (教材例程)
讲义
致谢:本课程讲义是在邓建松教授讲义基础上修改而成。
论文报告
时间:2024年01月02日/09日 14:00-16:25
地点:高新校区 G2-B302
要求:
- 论文选自Siggraph 2023
(http://kesen.realtimerendering.com/sig2023.html 或 ACM Digital Library )共70篇,
和Siggraph Asia 2023(http://kesen.realtimerendering.com/siga2023Papers.htm 或 ACM Digital Library )共55篇,
具体见论文列表。
- 自行分组,每组3-4人,从论文列表中选择1篇感兴趣的论文。
- 在腾讯在线表格里登记组员并申领论文。如果意向论文已被认领,请自行更换其他未被选走的论文ID。
- 每篇论文口头报告时间为10分钟左右(包括展示video,建议ppt不超过15页),提问2分钟左右。
- 由于每篇论文的报告时间有限,比较短,因此PPT报告的重点在于:简单介绍作者和单位情况;
主要讲一下这篇文章在做什么(What)?为什么做这个问题(motivation-Why)?这个问题以前有些什么工作?
难点在哪里?这篇文章解决了什么样的难点或提出什么样的新方法(selling points)?局限和未来工作(limitation and future work)?
细节若太多不用展开,关键要让大家知道这篇文章的主要思想和价值所在。
- 请大家尽量在网上去找关于你所负责报告论文的相关资料。如各个作者的主页,项目网页。
很多作者会把论文、video、甚至将PPT放在他的主页。讲解论文时,论文中的图片、视频均播放给大家看一下。
“一图胜千言”,视频又能胜于图片。
- 书面报告要求采用科研论文格式(标题、摘要、关键字、正文、参考文献等)撰写,
内容可以是所报告论文的概览、同主题多篇论文的综述等。
- 评分:PPT口头报告(小组) + 书面报告(个人)
实验
提交说明:a) 直接在课程QQ群作业区提交;b) 提交内容:学号.rar(.zip)。
压缩包里应包含所有编译和运行程序所“必需”的文件(.h/.c/.cpp/.glsl等)和一个文本说明文件readme.txt。
readme.txt为程序的一份简略技术文档,包括程序功能、编译环境、使用说明、实现技术等。 请不要提交编译链接生成的中间文件!
- 2023年11月15日前提交:验证OpenGL程序的编译 square
- 要求:OpenGL+GLSL(着色器)+FreeGLUT,具体要求如下:
- 修改square.cpp,使得窗口标题为"学号 姓名",例如"SF15011001 张三",编译运行后截图。(9分)
- 在readme.txt中说明开发编译环境及显卡支持的最高OpenGL版本。(10分)
- 提交:源代码 + 截图.jpg + readme.txt,打包为 学号.rar(.zip)
截图
- 2023年12月12日前提交:交互式三维模型观察程序
- 要求:OpenGL+GLSL(着色器)+FreeGLUT,变换要求通过着色器实现,具体要求如下:
- 模型显示:从给定的obj文件读入网格模型的顶点位置和颜色数据,显示在屏幕上。(7分)
- 模型变换:i) 上下左右方向键或WSAD键移动模型;ii)鼠标左键采用虚拟跟踪球方法旋转模型(不动点可选为质心);
iii) z或Z键缩小或放大模型(把模型拉远或拉近照相机)(9分)
- 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开始。(模型文件点击图片下载)
网格模型
- 2024年1月14日前提交:飞行模拟
- 要求:OpenGL+GLSL(着色器)+FreeGLUT,变换、光照、纹理映射等都需通过着色器实现,具体要求如下:
- 地形绘制:任选一个地形模型进行绘制,并用给定的纹理图像进行纹理映射。(6分)
- 飞行模拟:采用飞行员视图在地形场景中漫游。i) 左右键控制偏航(Yaw);ii) 上下键控制俯仰(Pitch);iii) a/d键控制侧滚(Roll);iv) 飞机位置的控制方面,可以按固定速度自动前行,并用+/-调节速度;或不自动飞行而用某些键分别控制x/y/z方向的移动。(7分)
- 物体绘制:在空中或地面放置物体,物体的材料属性应为可配置。
- 光照:至少两个光源。i) 要实现平面明暗处理和平滑明暗处理两种方式。平面明暗处理,需为每个面计算一个法向;平滑明暗处理,需为每个顶点计算一个法向。ii) 对两个光源,其中一个可以设置为可交互的白天太阳/夜晚月亮;另一个可以设置成飞机上的可交互的探照灯(聚光灯)。仅为建议,可以选用其他形式实现,例如在场景中加入路灯等。(8分)
- 雾:提供有雾/无雾及雾模型可配置的功能。(9分)
- 模型的数据结构、效率和交互方面的考虑。更精细地话,可考虑碰撞检测:飞机不能进入物体内部或地下等。(10分)
- 提交:源代码 + readme.txt。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. 计算机图形学的算法基础,机械工业出版社
文档
软件
教程
|
|