计算机图形学教学与实践

时间:2022-09-24 02:27:30

计算机图形学教学与实践

本文根据图形工业的发展趋势和软件产业对图形技术的要求,讨论了本科生计算机图形学课程教学指导原则和教学目标。给出了复旦大学软件学院该课程的具体教学方案,包括教材选择、授课内容、进度安排和实践环节。实践表明,该教学方案和实践环节切实可行,对同类课程教学具有很高的参考价值。

1. 引言

随着集成电路制造工艺的快速发展,图形处理器(GPU,Graphics Processing Unit)作为计算机显示系统的核心部件在最近几年得到了飞速发展,众多计算机图形学应用得以迅速普及。这些应用表明,三维图形生成和显示技术将成为未来软件产品能否成功的一个关键因素。计算机图形学应成为计算机及其相关专业学生必须掌握的一门基础专业课程。

目前,国内的计算机图形学课程教学基本取材于几本经典的教科书,这些教科书重点讲述20世纪70年代、80年代的图形技术,强调计算机图形学的数学基础。此外,国内计算机图形学课程的从教人员年龄差别很大,大部分于20世纪80年代或90年代初从事该门课程的教学工作。由于成长环境的局限性和教学方法的沿袭,很多青年教师讲授计算机图形学课程时也强调图形学的数学基础,使得计算机图形学成为计算机及其相关专业学生很难掌握的一门课程。这种强调数学基础的教学方案适合数学基础优秀的学生,对于数学功底一般的计算机类学生难以适用。虽然有教师从实用角度出发来讲授计算机图形学技术,但对理论基础涉及较少,也难以深入,学生很难建立计算机图形学这门学科的体系框架。

针对上述教学中的不足,我们在吸收美国知名大学在该门课程的教学经验基础上,制定了计算机图形学的教学方案和实践环节。通过与微软亚洲研究院等工业界研究机构进行精品课程和科研项目交流与合作,进一步修订了课程方案,强调培养学生的创新能力。我们还在教学过程中增加了面向学科前沿的内容,使学生能及时了解学科发展的最前沿,开阔视野,为从事科学研究打下良好的基础。

2. 指导原则和教学目标

我们吸收了计算机图形学领域国际顶尖大学(如Stanford、UC Berkeley、MIT、CMU、 Princeton、UIUC)教材选择、实验环节和课件的优点,通过与微软亚洲研究院进行精品课程和研究项目资助活动,在CC2001、SE2004、SGE2004[CC2001][SE2004][SGE2004]的基础上进一步修订教学内容,使得它能够反映工业界对人才的需求和学科最新进展。同时,授课内容也反映任课教师自己的研究方向和特色,用科研来促进教学和人才培养。

该课程主要面向复旦大学软件学院高年级本科生,其教学目标要求与学院整个办学思路和人才培养理念保持一致。计算机图形学课程的教学目标包括三个层次。首先,通过本门课程的学习,学生可使用当代图形API(如Direct3D、OpenGL等)编写图形应用程序,并将这类程序与其他应用相结合。其次,通过课程学习,学生不仅对计算机图形学有一个全面、感性的认识,了解学科前沿,同时能够理解和实现部分经典算法。再次,寻找一个可行解决方法对模型进行求解,利用解决方法对问题进行测试,验证模型及其解决方案的正确性训练学生以图形作为工具,对实际问题进行可视分析、建模和求解技能。

尽管国际和国内计算机图形学课程涉及的学生专业背景和从教人员背景具有很大差异,我们相信上述这种重实践、求创新、着重培养解决问题能力的课程教学和人才培养模式都具有很大的参考价值。在保持上述教学和人才培养模式精髓前提下,从教人员可以根据具体情况来制定教学方案和实践环节。

3.教学方案

我院计算机图形学课程设置为2个学分,讲授36学时。学分和学时数比国内和美国高校偏少,因此我们在教材选择、教学内容和实践环节等方面都进行了仔细思考和精心设计,来实现上述教学目标。

我们选择Donald Hearn和M. Pauline Baker合著的《Computer Graphics with OpenGL》第三版作为教材[Hearn2003]。该教材取材丰富,以跨平台的开放图形库OpenGL为基础,介绍计算图形学的基础理论、基本概念和基本算法。学生可将教材示例程序在PC上运行,从而获得对教学内容的直观理解。由于这本教材的理论讲解不够深入,我们推荐[Moller2002][Foley97]作为参考书,并指定[Woo97] 作为必读资料,通过熟悉OpenGL编程接口规范并进行应用程序编写,让学生对图形学基础理论、基本概念和基本算法有深入理解。

考虑到计算机图形学课程涉及领域较多,我们没有采用双语教学,而是以中文讲授课程,但使用英文教材、英文课件和板书,而且作业和考试也采用英文命题。在教学方面,我们借鉴美国优秀大学的先进教育方法,主讲教师上课主要侧重课程的要点、难点和方法以及理念,具体细节要求学生课后学习和实践。这种授课方法要求学生在课后自学来强化对基本概念、基础理论和算法的理解和掌握,有效地弥补了学时的不足。同时,我们借鉴国外大学经验,为该课程配备3名教学助理(Teaching Assistant―TA),达到了平均20名学生配备一名TA。TA和主讲教师一起,根据课程内容和学生反馈意见设计作业(Homework)和实习项目(Project),并通过多种方式给予学生指导和帮助。

该门课程的教学内容涵盖了ACM SIGGRAPH和Eurographics教育委员会推荐方案的绝大部分内容[SGE2004],同时考虑到软件工业的特点、工业界需求和学院的科研特色,我们还增加了该学科的最新进展的相关内容,具体教学安排如下。

第一讲为引言。首先介绍计算机图形学的研究内容、应用领域、典型图形系统的构成和获得ACM 图灵奖(Turning Award)的两位图形学者。接着,讲述图形系统的输入设备和显示设备。然后,以图形绘制为主线,回顾真实感和非真实感图形的历史,直到目前最热门的表面细节绘制、基于图像的绘制和基于相机阵列的绘制技术。

第二讲主要介绍二维图形技术。以画直线算法为例,讲解光栅图形与矢量图形的不同之处。介绍曲线离散为多个直线段的思想和原理,从而完成曲线绘制。通过多边形扫描转化和种子添充算法,介绍简单二维几何图形的光栅化技术。

第三讲重点讲述几何变换。包括物体的平移、旋转、错切、缩放变换;几何变换的矩阵表示形式和多个变换的复合方法,重点解释齐次坐标引入的必要性。最后,以场景图(Scene Graph)为例, 介绍变换的层次控制方法。

第四讲和第五讲围绕图形绘制流水线,讲述绘制流水线涉及的每个环节。包括物体的多边形表示方法、模型变换、取景变换、投影变换、视口变换、二维几何元语裁剪等多个关键步骤和算法。

第六讲为场景消隐技术。介绍了背面剔除、画家算法等物体空间隐藏面去除算法,以及多个图像空间消隐算法,如Z-buffer、面积细分、光线投射(Ray casting)、BSP树等。

第七讲为Shading技术。首先介绍双向反射分布函数(BRDF)的概念、测量方法及其表示的局限性。接着介绍包含漫反射、镜面反射和环境光的简单Shading模型。最后介绍上述局部光照明模型在OpenGL接口函数中的具体实现。

第八讲为纹理映射技术。首先介绍纹理映射的基本原理,涉及几何体的参数化和纹理分片(Texture Atlas)技术。接着讲述纹理映射在绘制流水线的执行过程,以及纹理滤波的必要性和纹理反走样方法。最后介绍目前常用的纹理映射技术,包括多纹理混合、环境映照、凸凹映射(Bump Mapping)和法向纹理(Normal Map)。

上一篇:在数据库课程中培养文科学生自主学习能力和协... 下一篇:在软件工程课程实践中强化过程思维与过程控制