对“计算机图形学”课程教学的几点思考
2009-11-02王莉莉
王莉莉
摘要:“计算机图形学”是计算机应用专业重要的基础理论课,本文对课程教学过程中实际遇到的问题进行了总结,并深入分析了“计算机图形学”这一研究方向的特点。在此基础上,给出一种“计算机图形学”课程体系和内容设置的思路,并对多种教学方式进行了初步的探讨,以期对“计算机图形学”及相关课程的教学工作提供参考。
关键词:计算机图形学;课程教学;教学方法;内容设置
中图分类号:G642 文献标识码:B
“计算机图形学”是计算机科学的重要研究内容之一,它借助数字化手段合成与操作视觉内容,将信息直观地展现给用户,其应用范围覆盖军事仿真、航空航天、文化教育、城市管理、大众娱乐等诸多领域。随着软硬件技术的不断发展,计算机图形处理能力大大提高,新技术、新方法不断涌现使得“计算机图形学”成为目前发展最为活跃的计算机技术之一。因此,国内外大学在计算机专业学生的培养过程中大都开展了相关的教学工作。北京航空航天大学在计算机专业本科生、研究生课程教学中也开设了“计算机图形学”选修课程。笔者在参与教学工作过程中,对遇到的问题、课程特点、课程内容、教学方式等方面进行了一些思考。
1教学中遇到的问题
由于“计算机图形学”类课程没有经典的教学模式,教学内容需根据授课时间的长短进行裁剪,各个教师的教学过程存在着较大的差异性,因此遇到的问题也会有所不同。笔者就自己在“计算机图形学”课程教学中遇到的且认为较为重要的几个问题展开讨论。
部分学生没有明确的学习目的,缺乏兴趣。“计算机图形学”通常作为计算机专业选修课设置。选修的本科生有大部分为取得学分,少部分是对图形学有兴趣,研究生的情况与此相反。如何通过课程的教学工作,正确引导,激发他们的兴趣,帮助他们树立明确的学习目标是我们需要解决的重要问题。在感兴趣的学生之中,仍存在着一些期望和教学内容并不重合的学生,例如某些学生原认为学完图形学就可以制作动画效果了,发现做不到时,就对课程学习的态度发生较大的改变;而另外一部分要从事计算机图形学研究工作的学生,发先课程内容与研究内容相差较远,热情会受到挫伤。对于这些学生,是否能够通过在课程中对图形学相关领域、相关软硬件工具进行较为全面的介绍,给出它们与本课程内容的联系,在计算机图形建模绘制中的作用,并点出“计算机图形学”是该类相关课程的理论基础,建议介绍一些相关的书籍和后续课程的选择,来填平期望研究应用与图形学课程之间的空隙,使得这些学生始终保持学习热情也是我们需要努力解决的问题。
课时少,内容多。“计算机图形学”涉及的内容非常多,既包括最基础的图形显示设备、二维三维图形绘制显示,又包括真实感、非真实感图形建模与绘制、科学可视化、计算机动画生成、建模绘制的平台工具等方面,每一项内容又包括了很多的技术、方法,经典算法思路和最新研究成果。因此如果平铺展开逐个来讲,一一列举,时间安排上不允许,也不利于学生对知识的学习掌握。作为专业选修课,计算机图形学的课时通常为36小时。那么,如何在较少的时间内,使得学生了解完整的图形学知识体系,掌握部分经典算法、代表性算法主要思想,了解当前研究热点和最近新研究成果,做到点面结合,还需要进一步的讨论。
偏理论与偏实践。在国内大学设置“计算机图形学”课程的很长一段时间内,教师将大部分的精力放在课程内容的讲授上,没有对课后作业进行精心设计,学生在课堂上接收到大量知识的填充后,没有自己动手进行实践来巩固知识,因此往往得到的是泛泛的概念,不能很好地对实质内容进行把握,出现“上课听热闹,下课就忘记”的现象。针对这些问题,一些教改项目提出将OpengGL,CG等图形绘制标准或语言的使用列入教学内容,希望通过这种方式来强化学生编程技能,提高动手能力。但这种程序、函数讲授的方式使得课程非常枯燥,往往效果不佳。
2计算机图形学的特点
“计算机图形学”与其他计算机专业课程相比,具有一些特点,了解这些特点可以帮助我们更好地制定教学计划、改善教学效果。
广度大、深度深。“计算机图形学”的分支多,内容范围广泛,并且大部分内容都有着从过去到现在大量经典、有代表性的方法、技术、算法。我们以真实感光照计算方法为例,光照计算属于真实感绘制中的研究内容之一。根据计算方法的不同,它又可分为光线跟踪方法、辐射度方法、辐射度预计算方法,随着显示硬件的发展,又出现了图象映射空间方法等。而单是光线跟踪方法,除经典的方法外,还有蒙特卡洛光线跟踪、逆向光线跟踪、圆锥光线跟踪、分布式光线跟踪、光束跟踪、基于并行机制的光线跟踪、基于GPU加速的光线跟踪等方法。
理论与实践并重。“计算机图形学”中基础理论涉及线性代数、离散数学、图论等内容,而一些复杂算法则涉及到概率论、矩阵论、泛函分析、小波分析、优化理论等众多内容。有时为了逼真显示某个场景,需要对场景中的景物进行物理建模,需要有对应的物理知识。例如对水、牛奶类液态对象进行绘制,需要借助流体力学来进行仿真。又例如对肌肉这类对象进行变形分割时,需要使用有限元的方法进行剖分。“计算机图形学”理论内容涉及的数学物理知识广而深。在实践方面,为了能够编程实现图形学算法,要求很好地掌握数据结构、C或C++等编程语言,OpenGL/DirectX的图形标准,某种图形平台的SDK/API。目前很多方法是基于图形硬件可编程流水线的,因此,还需要掌握GLSLHLSLCG这样的语言。实践部分对编程能力要求较高。
具有良好的可展示性。图形学中的技术和方法通常是在三维空间中进行的,因此,可以通过示意图等方式直观的展现给学生,这样比文字叙述更容易理解。同时,计算结果、绘制结果往往是以图像的方式存在的,具有良好的可展示性,通过算法运用与否绘制结果的对比,更直接地体现算法特点优势,容易激发起学习者的兴趣。
技术发展快、前沿成果多。“计算机图形学”作为计算机领域的重要内容,近年来发展非常迅速。其分支多,内容广,且具有相当深度的特点吸引了大量的国内外高校、研究机构的研究者从事相关的研究工作。每年众多的国际会议和学术杂志期刊文章展示了图形学领域最新的、最有代表性的、创新性的研究成果,例如ACM Siggraph、Eurographics、Pacific Graphics、Graphics Interface 、Computer Graphics International等国际会议,ACM Transaction on Graphics、IEEE Transactions on Visualization and Computer Graphics、IEEE Computer Graphics andApplications、Graphical Models、Computer Aided Design、Computer Aided Geometric Design、Computer Animation and Virtual Worlds等国际期刊。 每一个成果都体现了研究者的创新性思维。
3课程思路、体系和内容设置
根据“计算机图形学”的特点和我们在课堂教学中所遇到的问题,需要对图形学课程教学的思路进行一些调整。在遵循序渐进的基础之上,将本科生课程和研究生课程区别对待。
对于本科生课程,我们设立图形学课程的目标是学习计算机专业领域知识,了解图形学覆盖内容,激发进一步学习和从事图形学相关研究、工作的兴趣。因此我们直接设置一门“计算机图形学”选修课,主要进行图形学最为基础内容的教学工作,引导学生入门。其内容以概述性介绍为主,有大量的图形化用例,部分经典、有代表性算法主要思路的介绍。我们以36学时18次课,无课后作业为例,对教学内容可作如下规划。
(1)“计算机图形学”概述(2学时),讲述课程目的,然后从一些直观的例子效果入手,圈定研究范围,使学生明白图形学能做什么,不能做什么。
(2) 二维图形绘制和三维图形绘制(10学时),包括二维图元绘制、二维几何变换、二维观察、三维对象表示、三维建模与几何变换、三维观察等内容。
(3) 真实感图形建模与绘制(6学时),包括纹理映射、光照计算、阴影处理、植物、水波、地形建模绘制方法等。
(4) 实时图形绘制(4小时),包括层次细节技术、模型化简、并行图形计算、碰撞检测、基于图像的绘制、图形硬件介绍等。
(5) 科学计算可视化方法(4小时),包括三维规则数据场绘制、等值面构造、三维不规则数据场的可视化、散乱数据的可视化、三维矢量场可视化等。
(6) 非真实感图形绘制(2小时),包括着色处理、轮廓边缘绘制,多风格绘制等内容。
(7) 图形平台与工具(2小时),介绍图形应用的处理流程,使得学生了解各类图形平台系统与工具所处的层次和位置,介绍一些目前较为常用的工具平台,给出它们的适用范围。
(8) 实践与讲解(6小时),指导学生上机完成1-2个经典算法的编程实践,例如Z值消隐、光线跟踪算法等,并对这些算法的实现进行讲解,给出一些小的应用例子帮助学生学习更好的理解算法应用范围。
对于计算机专业研究生,设置图形学课程的目标应为掌握重要的经典、代表性算法(思路、概念、术语),了解图形学研究的热点和前沿技术成果,消除从课程学习到研究工作之间的沟壑。因此,可以建立计算机图形学课程组(紧耦合),将每一门课的教学范围收缩,在纵向上更为深入,帮助学生从理论到实践,从课程学习到课题研究的平滑过渡。课程组包括“计算机图形学基础”(如本科时没学过计算机图形学课程可选),“真实感建模与绘制”,“实时图形绘制”、“科学计算数据可视化”等课程。“计算机图形学基础”与本科课程的相同点是对二维、三维图形绘制过程及图形绘制流水线进行介绍,不同点在于更多地侧重于算法的学习和实践,例如多种直线填充算法、曲线曲面绘制算法等,因为这些内容始终是计算机图形学研究的重点内容。在“真实感建模与绘制”,“实时图形绘制”、“科学计算数据可视化”等后续课程中,除基础概念术语、分支内容介绍和经典方法的讲授外,教学重点可以放在自学方法培养的上,包括如何搜索相关学习资料,如何阅读该领域论文,如何开展研究实践(包括相关软硬件平台的使用)。在了解课程内容、掌握基础方法算法后,学生可以通过阅读指定范围的论文,对其感兴趣的内容深入学习,通过师生、同学间课堂交流解决遇到的问题,然后经过课后的项目实践来实现自己的想法,从而完成一个完整的研究过程,为以后的科研工作在研究内容知识储备和研究方法思路两个方面都打下良好的基础。“真实感建模与绘制”,“实时图形绘制”、“科学计算数据可视化”等课程后续课程的内容可作如下规划。
(1) 课程概述(2小时),包括课程目的,课程内容范围,课程教学方式,考核方式等。
(2) 课程各主题内容(16小时),包括各主题问题的提出,研究的过程,主要是里程碑式方法算法,以及适用于不同场景的演化算法和改进算法。
(3) 课程实践(18小时,可以安排在课时内,也可以安排在课后)安排学生阅读相关领域国际会议期刊学术论文,设置多个实践性项目(从易到难),指导学生完成。
4教学方式探讨
通过阅读一定数量图形学教学相关的文献资料,目前存在的教学方式主要包括了以下几种方式。
(1) 教师讲授,教师准备课件教案,在课堂上进行与学生面对面的教授。
(2) 课堂演讲,学生阅读指定专题的学术论文,然后在课堂上进行问题提出、解决思路、方法具体细节、实验设计、结果分析、结论的讲解。
(3) 实践性项目,指导学生完成一个包括问题定位,解决方案规划,编程实现,结果分析总结在内的完整研究过程。
(4) 双语教学,又可分为中文课件+英文讲授,英文课件+中文讲授,中文核心内容+英文总结等多种形式,其中学生英语水平、教师英文水平和教材的选择也都会对教学效果产生一定的影响。
根据“计算机图形学”上述课程特点、课程思路,以及课程内容设置,我们建议在本科生课程教学中,主要采用教师讲授为主,辅以少量实践性项目,让学生对图形学有个全面的了解,并对研究内容的难度有感性的认识。对于研究生课程,建议主要采用先课堂教授,然后在学生完成相关论文阅读后进行讲演、回答问题和讨论的方式,使得学生掌握通过阅读论文获取解决问题的思路以及当前研究热点、最新的技术成果等必需的知识内容。也可以在课堂内容讲授的同时或之后,进行实践性项目的练习,培养学生解决问题的思路,锻炼学生的动手能力和创新性思维能力。另外,在研究生课程中,尤其是图形学相关的后学课程中,很多的内容都存在着国外资料众多,国内资料少的情况,因此对于部分内容进行双语教学,可以帮助学生熟悉相关的概念术语,国际上科技论文撰写思路,使他们在今后的工作学习中更加自如地从国际水平的文章资料中汲取所需要的内容,更好地开展研究工作。
5结束语
在“计算机图形学”课程教学中,首先需要明确教学目的,根据课程的特点,对于不同层次的学生区别对待,包括设置不同的课程内容,采用不同的教学方式等。对于本科生要注意培养学生的学习兴趣,熟悉“计算机图形学”所设计的范围、内容。对于研究生,则在此基础之上,进一步引导他们循序渐进地学习专业知识技能,掌握从事科学研究的方法,为以后将要开展的相关研究工作做好准备。