APP下载

计算机图形学教学与实践

2006-03-24姜忠鼎

计算机教育 2006年3期
关键词:绘制算法图形

姜忠鼎

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

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)。

第九讲和第十讲重点讲述光线跟踪技术。首先介绍全局光照现象和Whitted全局光照明模型,然后讲述光线跟踪的基本原理和过程、软影生成方法和画面反走样技术。详细介绍了光线与景物求交的快速求解技术,包括层次包围盒、八叉树、BSP树等。在第十讲中,我们还穿插了与GPU相关的可编程技术,并以游戏编程为例来讲述GPU的应用效果。

第十一讲以全局光照明模型为重点。以绘制方程为切入点,介绍了辐射度、Monte Carlo光线跟踪技术的基本思想。

第十二讲为颜色的表示模型和图像合成技术。首先介绍了三原色原理和CIE颜色图谱,然后介绍颜色的几种表示模型及其相互转化公式,包括HSV、YIQ、RGB、YUV、CMY。图像合成技术以Alpha通道概念为基础,介绍了蓝屏扣像、贝叶斯扣像和最新的泊松扣像。

第十三讲重点介绍图形显示技术。首先介绍了目前主流的PC显示器、电视机和手持设备显示屏等显示技术,然后介绍几个新颖的显示技术:面向手持设备的投影显示技术、可折叠显示屏和基于多投影仪的显示技术(虚拟现实中心、平面显示墙、球面显示设备和CAVE)。

第十四讲简要介绍图形学中涉及的物体表示方法。包括点云、范围图像(Range Image)、多边形汤(Polygon Soup);对物体的表面表示方法,简单介绍了多边形网格、细分取曲面、参数曲面、隐式曲面。对于实体,给出了体素表示、CSG、扫描(Sweep)等表示例子。为表示整个场景,介绍了场景图这种较高层次的场景组织方式。

第十五讲至第十六讲,主要介绍参数曲线和曲面的基本概念和基本原理。重点介绍了Bezier曲线和曲面、B样条曲线和曲面以及NURBS曲线和曲面的基本概念和简单性质。

上述教学方案涉及很多概念和算法,我们并不强调学生掌握和实现算法的具体细节,而是重在基本概念和算法的思想,理解算法解决的问题和达到的效果。但同时要求掌握几个经典算法,达到夯实基础的目的。最新的研究进展是通过大量的插图和视频来介绍,这可让学生对学科前沿有概念性、直观的理解,提高学生学习兴趣,为他们快速地进入该领域从事应用开发或研究工作打下良好基础。

4. 实践环节

实践环节主要是实践项目(Project),由任课教师和助教负责,学生可在全天候开放的专用机房完成。学生通过这些课后的实践项目来锻炼和提高分析问题和解决问题的能力。我们设计了三个实践项目:二维多边形扫描转换、虚拟场景漫游和光线跟踪算法实现。这三个实践项目的设计吸收了Princeton大学、UC Berkeley大学计算机图形学课程实践环节的优点。

第一个项目是为了让学生理解将几何表示的图形转化为光栅图形的过程及其重要意义,理解和实践图形算法中常用的增量法,以及将浮点运算转化为整数运算可提高执行效率的思想和技巧。我们根据最终可运行程序的计算效率和正确性进行评分。该技术最直接的应用是,将Flash这类矢量图形在计算机屏幕上进行快速显示,体现了图形学基础算法的重要性。

第二个项目要求学生实现虚拟场景漫游。该项目采用三角形/多边形作为场景表示的基本方式,用户通过键盘输入运动信息,绘制程序根据这些信息交互生成虚拟场景画面,从而实现虚拟相机漫游效果。通过该实践项目,学生将熟悉OpenGL函数接口、理解和控制固定功能的图形绘制流水线,体验人机交互的特点。该项目涉及物体造型、场景变换、三维观察、投影变换、多边形光栅化、视口变换以及多边形shading等图形绘制过程所涉及的多个关键步骤和算法。该项目完成后,学生应充分理解从三维物体空间坐标系到二维窗口像素坐标系图形原语的整个变换流程。对固定功能绘制流水线的深刻理解为日后使用顶点着色器和像素着色器对绘制流水线进行定制打下良好基础。

第三个项目重点练习光线跟踪算法。要求学生实现场景物体为简单几何体,如球面、柱面、多边形网格,场景包含多个点光源情况下,能处理反射、折射以及阴影效果的光线跟踪算法。要求使用包围盒、BSP树和八叉树中至少一种数据结构,来加速光线与场景物体的交点计算过程。本项目要求物体必须带有颜色纹理,将凸凹纹理(Bumping Mapping)、位移映射(Displacement Mapping)作为选作内容。为解决采样不足引起的画面走样问题,选作分布式光线跟踪(Distributed Ray-tracing )算法。第三个项目的设计要求学生能够理解全局光照明模型相对于局部光照明模型的优点,以及从图像空间出发,如何逆向递归地计算成像平面像素的颜色值。而第二个项目涉及的绘制流水线则从物体空间出发,且使用局部光照明模型,因此,第三个项目和第二个项目相互补充,帮助学生理解真实感图形基本概念、基本原理和基本算法。

除课程实习项目外,高年级优秀本科生还可进入交互式图形学实验室,参与计算机图形学及其相关领域的科研工作,进一步加强实践环节训练的广度和难度。交互式图形学实验室配了20台左右高端PC,具有12个节点的高性能集群图形绘制系统,以及基于多投影仪的大屏幕显示墙设备。研究项目来自国家纵向基金、企业的横向合作项目以及国际知名IT企业的研究资助(如微软亚洲研究院),主要研究方向包括图形系统和体系结构(Graphics System and Architecture)、大规模显示技术(Large Scale Display Technology)、实时绘制(Real-time Rendering)、网络图形学(Internet Graphics)以及移动图形学(Mobile Graphics)。这些研究课题主要应用于虚拟现实、移动增值服务、多媒体计算、视频游戏和娱乐系统。

通过该门课程学习,大部分学生能够完成三个实践项目,基本达到教学目标的要求;能够利用图形编程接口进行图形程序开发,并将它们结合到其他应用中;对图形学基础理论、基本概念有直观感性的理解,能了解学科前沿,理解和实现部分典型的算法;对于在实验室参与研究工作的学生,在以图形作为工具来分析问题、解决问题方面得到很好的训练。实验室参与科研工作的两名本科生,在2005年第九届挑战杯飞利浦大学生课外学术科技作品竞赛中获得了一等奖,他们的参赛作品涉及基于视频的绘制、流式媒体传输和普适计算技术,是典型的图形新技术与其他技术领域相融合的例子。该作品以微软亚洲研究院游戏与图形主题支持项目“面向移动平台的游戏引擎”为基础,进一步拓展了移动图形技术在城市导航、虚拟旅游、基于位置的多媒体服务等领域的应用,体现出很强的创新能力。然而,对于其他不在图形学实验室工作的学生,他们在形象表示、分析和传递技能方面的训练仍显不足,只有少数学生能自觉使用图形作为问题描述和交流的工具。

5. 结束语

三维图形生成和显示技术将成为未来软件产品能否成功的一个关键因素。根据图形工业的发展趋势和软件产业对图形技术的要求,吸收了美国知名大学该课程的教学经验,制定了本科生计算机图形学的教学方案和实践环节。通过微软亚洲研究院的精品课程和研究项目资助,进一步修订教学方案,使它能反应工业界对人才的需求和学科最新进展,强调培养学生的创新能力。同时,授课内容也反映任课教师的研究方向和特色,用科研来促进教学和人才培养。实践表明,这种重实践、求创新、着重培养解决问题能力的课程教学和人才培养模式具有很大的参考价值。

参考文献

[CC2001] Computing Curriculum 2001, Computer Science Volume. December 15, 2001. http://www.sigcse.org/cc2001/

[Foley97] James D. Foley, Andries Van Dam, Steven K. Feiner, John F. Hughes?. Computer Graphics Principles and Practice Second Edition in C. Addison Wesley, 1997

[Hearn2003] Donald Hearn, M. Pauline Baker. Computer Graphics with OpenGL. Third Edition, Prentice Hall, August 12, 2003

[Moller2002] Tomas Moller, Eric Haines, Tomas Akenine-Moller. Real-Time Rendering. 2nd Edition, July 2002, AK Peters, Ltd.

[SE2004] Software Engineering 2004, Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. August 23, 2004. http://sites.computer.org/ccse/

[SGE2004] ACM Siggraph Education Committee 2004. http://www.siggraph.org/symposia/reports / Rep2004CGEworkshop.pdf

[Woo97] Mason Woo, Jackie Neider, Tom Davis. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.1. Addison-Wesley Pub, 2nd edition, January, 1997

猜你喜欢

绘制算法图形
Painting ski maps 绘制滑雪地图
绘制童话
绘制世界地图
Travellng thg World Full—time for Rree
学习算法的“三种境界”
算法框图的补全
算法初步知识盘点
分图形
找图形
神秘的不速之客