魏海涛 戴志平 周 焰 蔡益朝 陈芳信
文章编号:1672-5913(2009)08-0075-03
摘要:本文多方面系统论述了学习“计算机图形学”课程的必要性,分析了该课程的学习没有受到人们重视的原因,指出系统学习该课程是读者掌握数据计算类型的程序系统设计基本方法与计算机仿真入门的有效途径,使读者对“计算机图形学”课程的学习有一个正确的认识。
关键词:计算机图形学;计算机仿真;科学计算;程序设计基本方法;可视化
中图分类号:G642
文献标识码:B
1 “计算机图形学”的学科特性
所谓“计算机图形学”是计算机仿真(即按模型计算以生成图像)与科学计算(即通过在计算机上建立模型并模拟物理过程来进行科学调查和研究)的一种基本形式,是研究图形数据模型在计算机内部的产生、设计与构造过程,它是显示图形不可分割的前提(这相当于画家作画之前,对绘画作品的设计思想、表达方式、绘画构思、作品内容与结构等的创作与思考过程;只有当这个绘画作品设计方案成熟之后,画家才动笔绘画);而图形显示是用点、线、面、色彩、纹理等可视化的数学方式表达这种数据仿真计算结果的数学含义、或表达仿真过程中各种实体仿真模型与场景效果的物理含义的一种直观表达方式。参考文献[1,2]已向读者证明这一结论,只有这样,才能较好的理顺“计算机图形学”课程的授课关系,使读者建立用计算机生成图形的完整概念。
我们用这一指导思想主导“计算机图形学”教育20多年,并用“计算机图形学”的授课内容解决了多年来国内计算机程序设计课程没有解决好的计算可行性(可计算性的实现前提)这一教学难题,使该课程成为初学者学习计算机程序设计基本方法、认识图形数据模型构造与显示的一般规律、进行可视化应用程序开发三位一体教学目的的最佳选择,并有效地弥补了从算法语言、数据结构到软件工程之间关于应用程序编程系统训练与计算机仿真等教学环节的缺失。这种教学方法使“计算机图形学”的教学内容完全纳入了计算机科学的教育体系,同时使“计算机图形学”与“数据库”、“网络通信”这三门课程成为现代计算机应用程序的三个基本特征(数据计算、数据存储与检索、数据联网通信)的典型代表,由此转变了“计算机图形学”课程的教育观念与教育思想。在教学过程中,作者曾遇到学生们提出的多种学习问题,今整理成文,以飨读者。
2学习“计算机图形学”的原因与重要性
为什么要学“计算机图形学”,这是计算机专业选修“计算机图形学”课程的读者关心的首要问题。众所周知,计算机科学是处理信息技术(IT)的一门学科,通信科学是传输信息技术的一门学科。对于信息技术而言,常用于表达信息数据含义的4种方式分别是①数字与字符方式表述;②图形方式显示;③播放声音表述;④用机械力表达(即把电信号转换成机械运动)。这4种表达信息数据含义的方式又称信息数据的多媒体表达方式(即多媒体技术)。其中,用图形显示这种方式表达信息数据的含义符合人们观察了解事物运动规律的习惯,而且信息容量大,直观方便,同时是人们获得外部世界信息来源的主要依据;也就是说信息数据的可视化是信息技术与计算机科学发展的一种潮流与必然趋势。随着计算机工业的发展与进步,实际应用课题与现代程序设计对信息数据的可视化处理要求已经越来越高,这就要求人们深入研究并掌握图形显示的一般规律,才能更好的为计算机信息数据的可视化服务。
按现代教科书对“计算机图形学”的新定义,“计算机图形学”代表了计算机应用学科的一个重要发展方向——科学计算、计算机仿真、计算机辅助设计、信息数据的可视化、动画与游戏、虚拟现实、数字娱乐,其编程应用还涉及程序设计方法。它们代表了当今计算机技术的发展潮流与应用水平,是解决计算机专业人才出路的有效途径之一;而“计算机图形学”是该方向的公共基础课程,是目前国内计算机本科教育应当加强的内容。显然,仅仅靠学习计算机程序设计语言、数据结构、编译原理、操作系统、数据库、软件工程、形式语言与自动机理论等课程还不能完全使学生的能力直接达到开发这些应用软件的目的,因为原则上这些课程是为用户使用计算机的计算功能而系统量身打造的软件使用工具(数据结构、软件工程除外),它们的教学目的是为用户掌握并研制这些软件工具服
务、而不是为用户使用这些软件工具系统地开发应用程序而开设的课程。计算机专业主要沿这条主线向前发展:研究、设计、制造计算机硬件设备,为用户使用计算机的计算等功能提供一切便利的手段、方法与软件辅助工具,这包括总结用户使用计算机的基本类型与模式,而对于复杂且很难全面概括使用计算机的方法等、则留给一般用户自己解决,这或许是计算机专业本科课堂教学没有介绍对数据计算类型的应用软件系统开发要遵循的基本规律与发展模式的原因之一,“计算机图形学”的教学正好可以弥补这个缺陷。
由于计算机教育本身并不能直接提供认识世界、改造世界的能力,加之我国没有掌握具有国际竞争能力的计算机硬件与系统软件的核心开发技术,这使中国大量的优秀人才在计算机专业上的最后发展受到了严重制约。而“计算机图形学”的仿真方法为计算机专业人员的发展提供了这样一种新的学习方法与重新选择的机遇,它能为计算机专业人员学习其他行业的专业知识(即学习新专业的物理、数学方法)、成为其他行业的专家助手,进行新行业系统仿真与系统设计以获得新生;由于各行业都有各自的研究领域与待解决的研究问题、研究方法与理论研究模型等,当用计算机仿真的方法对这些研究课题进行辅助研究,并用图形等可视化的方法表达计算机仿真研究的中间结果与最终成果时,这将使计算机的应用走向深入。
科学研究的目的就是探索未知世界、认识世界、改造世界、造福于人类自己,而“计算机图形学”的教育正是遵循这样一条主线:通过物理实验认识待解决问题的本质,并用数学模型的方法来描述这种物理现象的变化过程,从而达到用计算机程序设计的方法来仿真光线在自然界中的传播,以及光线在照相机中传播而生成图像效果,这类物理仿真过程是科学研究方法中的一种基本形式,这种科学研究方法的教育思想(包括人文精神)是国内计算机专业本科课堂教育所欠缺的(计算机专业往往专注于数理逻辑思想的基础训练)——即“计算机图形学”的教育,不仅拓展了计算机专业人才的知识领域,也为其毕业增加了就业渠道,同时能培养计算机专业人员的基本科学研究素养,这正是目前国内计算机教育改革所追求的目标之一。
需要说明,全日制普通本科教育是普适教育,它需要建立各专业自己的知识框架,学习基本的概念,了解基本的范畴,明确其发展方向,计算机专业也是如此。本科教育重在基础,提高本科教育质量与水平并非拔高与创新,而是要做到全面、均衡的发展,除要求学生掌握本学科专业已成熟的系统理论知识外,还需培养学生用学科的基本思想与方法独立自主分析问题、解决问题的能力,这种理论与实践相结合的教育方法,能确保学生今后得到稳步的发展。“计算机图形学”就是培养学生利用计算机、数学、物理等学科的系统知识解决实际应用问题能力的一种有效方法,这样培养的学生才能适应社会竞争与选择的需求;只有在研究生阶段,通过再次系统学习、阅读原著与相关论文并参与项目开发等活动,达到全面提升对学科的认识能力,并向某一个研究方向发展、去探索未知世界的变化规律、解决前人没有解决好的难题、逐步走入学术研究的殿堂(即创新教育);当然人们也能在日后的工作中慢慢积累这种工作能力。
文献[2,3]系统论述了“计算机图形学”课程在计算机科学教育中的作用与地位。目前很难找出一门具有像“计算机图形学”类似重要性与多样性的其它计算机本科专业基础课程,能使读者正确掌握数据计算类型的计算机应用程序设计的基本方法,并使计算机这一工具直接服务于社会,这是我们应该重视“计算机图形学”教育的根本原因。
3学习“计算机图形学”的方法
由于“计算机图形学”属于计算机应用软件的范畴,因此,数据计算类型的应用软件的设计方法就是学习“计算机图形学”应该遵循的原则。就“计算机图形学”课程的学习而言,它要求:
(1) 全面掌握程序设计语言的特性与数据结构的基本内容,是实现“计算机图形学”编程的基础。
(2) 掌握建立解决实际应用问题的数学模型与软件系统的概念,是计算机程序设计的两个关键点。软件系统是一个能自动运行的综合执行程序,它能从输入、存储、运算处理、输出等方面全面处理用户在某个领域中提出的诸多数学模型并完成其模型描述数据的加工任务,使用户很容易明确这种软件的组成、功能与使用范围。一般利用二维图形的简单性,可以较完整的介绍二维图形软件系统这一概念。软件系统的概念是目前程序设计语言与数据结构课程中所欠缺的关键内容。
(3) 正确的认识“计算机图形学”与计算机仿真的相互关系。“计算机图形学”的重点与难点在三维图形的数学模型研制(包括照相机模型,灯光模型,颜色模型,照明模型,物体的几何模型,物体表面的材质与纹理模型等)与模型描述数据的构造上;由于计算机图形学追求像照相机拍照一样的三维真实感图形显示效果,这决定了要在计算机中使用物理学仿真的方法(仿真光线在自然界中的传播所产生的显示效果或把这种传播效果映射至物体的表面上)才能达到这一目的,这自然需要读者对相应的物理知识有个基本的了解才能进行。
(4) 需要了解一些计算机仿真的基础知识,以确保“计算机图形学”的物理仿真教学过程不会出现偏差。
计算机仿真的主要过程分系统、模型、编程实现(仿真算法)、评估四个步骤。这里①系统是指相互关联又相互作用着的研究对象的有机组合,它决定了被研究考察对象的组成与边界范围。②计算机仿真一般可以用数学模型(简称模型)的方法代替实物研究对象,事实上模型也可以是对现实世界的事务、现象、过程或系统的简化描述,但它反映了实际问题最本质的特征和量的关系。目前“计算机图形学”所述的模型多限于对所研究对象的物理性质、运动变化规律等特性的一种数学描述,它使人们能解释那些难以直接观察到的事物的内部构造、事物的变化以及事物之间的关系——即模型描述了现实世界中有显著影响的因素和相互关系。但这种描述有一定的使用条件与限制范围,研究的目的不同,对该研究对象的数学模型的描述方法以及模型的种类会不一样。③仿真(编程实现)就是在模型上做实验,从理论上测试构建的理想系统的动态行为特性,以评估系统的效能。④系统的用途不一样,评估的方法也不同,人们往往用事先约定的一组指标来评估仿真系统的结果;当所得仿真结果没有达到预期的理想效果时,人们往往不断改进仿真模型与仿真算法。例如计算机图形系统,用途可以是显示三维图形,查看它的真实感逼真显示效果就是人们主要关心的问题;模型的运动与操作(如游戏),看它的操作性与故事情节等如何表达用户的情感与智能(简称好玩)就是人们关心的主要问题;机械设备的综合运动与仿真,考察所设计的复杂设备的工作性能就是人们关心的主要问题;电气系统的系统仿真,能考察系统工作参数如何设计以满足用户的不同需求;作战系统的仿真模拟,能考察作战人员的训练水平、武器性能、指挥作战方式对作战进程的不同影响与作战效能,等等。
(5) 努力把图形学所介绍的各种模型与算法(算法是对模型描述数据的加工与变换处理的步骤与方法,“计算机图形学”中的主要算法有各种线段图形的生成与实面积多边形的填充算法、着色算法、消隐算法、纹理映射算法、阴影算法,光线跟踪算法与辐射度算法)都编写成程序代码,这使读者能直接体验自己的学习效果,也是其它课程不容易做到的。编程时要考虑算法的复杂度,特别是按照软件系统的方法把编写的程序代码组成一个系统整体,这是形成成熟商品软件很重要的前提。显然,此时软件系统中的各种数学模型反映了仿真系统中研究对象之间的相互关系。
(6) 掌握“计算机图形学”打造的绘图工具,是可视化应用软件编程的重要基础。用“计算机图形学”知识研制的工具常用的有OpenGL与Direct3D等三维图形标准,虚拟现实建模语言VRML。而三维动画与CAD等软件可以看成是“计算机图形学”为影视制作、游戏建模与计算机辅助设计部门打造的专业计算工具。仅把图形标准与计算机绘图等应用当作“计算机图形学”很不完备,因为它不能在课堂教学中向读者正确、完整、系统地展示计算机图形学学科发展的基本规律,并人为地割裂了计算机图形数据模型的构造与显示这两个过程。
(7) 学会看中英文专业杂志等参考资料,这些参考资料记录了学科的发展历程与学科当前的研究热点(一本教科书不可能全部包含这些内容),且是一种更重要、复杂、深入的学习研究方法,也是目前国内本科教育的弱项(因为国际上最新的研究成果多用英文发表)。只有这样,才能跟踪计算机图形学的最新发展并站在学科发展的前沿、才能开阔人们的视野并有所鉴别,便于读者日后针对用户的多种需求展开开创性创新或针对已有成果的不足、提出修补与改进等渐进性创新等学术研究活动。
(8) 勇于参与课程实践与项目开发,是巩固、检验所学知识、提高实际动手能力的好方法。实际软件开发工作往往是多种知识的综合应用,它需要对实际处理事务有一个比较透彻的了解(用户需求报告)、并建立这些待解决问题的数学模型与系统流程后才能有效进行(按照软件工程的方法组织实施)。
只有把自己开发的软件做成有效商品、服务于社会,才能使所学的知识转变成生产力,才能使自己得到升华;同时也应注意把自己的心得与研究成果总结发表,与人共享;还应参加学术活动,注意留意不同学术流派之间的观点、思想、方法与学术动态,取长补短,形成自己的风格,广结人缘,相互交流,为学科建设添砖加瓦。
(9) 一本计算机图形学教科书的容量使其只能介绍计算机图形学发展历程中产生的最基本、最经典的模型与算法,这些内容是人们耳熟能详的物理原理与相对简单的数学知识在计算机中的综合应用,太复杂的计算关系因会影响图形的显示速度而一般不采用;目前计算机图形学教科书的理论体系已成熟且“计算机图形学”的教学内容已经构成了一个大系统,这使“计算机图形学”的教学过程变得简单、容易。
4目前国内“计算机图形学”教育未受到重视的原因分析
既然如此,为什么目前人们感觉“计算机图形学”教育的受重视的程度不如数据库与网络通信等计算机应用软件呢?笔者认为其原因之一在于:这是因为“计算机图形学”造就的工具即图形标准的特殊应用环境要求限制了它在很大一部分应用程序中的具体应用;三维图形标准目前仅仅在游戏领域获得了商业上的成功,一些应用软件不调用图形标准也能自己绘图;国内的计算机应用程序可视化的开发要求暂时还较低;关键是作为学科领头羊的美国人目前还没有把“计算机图形学”课程作为计算机本科专业的核心课程,这是因为他们对“计算机图形学”课程的本质与其在计算机学科中的作用与地位认识不到位所致,美国人图形学这种教育现状(目前多以图形标准的原理讲授为主)和局限性与美国人在3D游戏、计算机动画、计算机辅助设计等应用软件的开发上执世界牛耳之地位不相称。
当然,早期计算机图形学教科书编写内容、体系的不够成熟,也影响了人们对“计算机图形学”课程的认识与学习的积极性。例如仅停留在数学公式与算法的层面上介绍二维、三维图形的生成而不注重其建模思想与方法的介绍,且人为的把物体几何模型的构建与其图形显示分解成“计算机辅助几何设计”与“计算机图形学”这两门课程,这直接导致图形学课程教学内容缺少被处理的图形显示对象,加之计算机课程与图形学的教育又没有软件系统的概念,这样安排虽然能满足图形标准等商业软件的发展需求,但却很难让初学者全面掌握“计算机图形学”学科系统性的概念、思想和方法与学科发展的基本规律——用数学模型的方法指导编程实践,在计算复杂性可接受的条件下,针对已有成果中存在的不足,不断用新的数学模型与仿真算法等方法对其进行改进,使图形学的数学仿真过程不断的逼近现实物体模型(包括刚体、软体、流体、气体)的构造、运动、变形、切割和拼接与反光效果的显示这一真实的物理变化过程。即初学者没有用计算机生成图形的完整概念,这也是以往人们认为计算机图形学课程难教、难学的主要原因。
由于“计算机图形学”的绘图原理不像数据库软件那样,数据库的功能可以被所有的应用程序所调用;也不像通信软件那样,所有要联网的计算机都离不开通信技术与网络技术,而计算机显卡工业、3D游戏、计算机动画、计算机辅助设计等产业的市场份额小于数据库与计算机通信等产业的市场份额,即应用软件的商业价值决定了它们在人们工作与学习中的地位。
参考文献:
[1] 魏海涛. 计算机图形学(第2版)[M]. 北京:电子工业出版社,2007.
[2] 魏海涛. 科学的构建‘计算机图形学的教学内容,促进计算学科的全面发展[J]. 计算机教育,2008,(10).
[3] 石教英. 需重视工程科学的可视化学习[J]. 国际学术动态,2005,(3).
[4] 陈立平. 多领域物理统一建模技术——CAD创新与发展的思考与实践.ppt[EB/OL]. http://www.cadcg2008.lnnu. edu.cn/hyjy.jsp, 2007-12.