倪波 邓丹君 姚莉
摘要:目前,越来越多的高校在本科阶段开设游戏开发方向的相关课程。针对“计算机图形学”课程具有数学理论多和算法复杂等特点,如何将图形学理论和游戏开发有机地结合起来,在讲授“计算机图形学”课程的同时,兼顾游戏开发方向的人才培养目标,使得学生从游戏开发的视角理解图形学相关理论并从图形学的角度去思考游戏开发中的相关技术是一个值得深入探讨的问题。为此,从“计算机图形学”课程的特点分析开始,结合当前教学过程中存在的问题,提出面向游戏开发导向的“计算机图形学”课程建设的思路。
关键词:计算机图形学;游戏开发;课程建设
中图分类号:G4
文献标识码:A
doi:10.19311/j.cnki.16723198.2017.01.082
0引言
随着市场对游戏开发人才的需求越来越大。许多高校在本科阶段设置了有关游戏开发方向的课程。“计算机图形学”作为一门计算机科学方向的专业基础课,主要讲授包括:模型绘制、模型渲染、纹理和光照等内容。这些内容是构成游戏开发的主要理论基础。然而,在实际教学过程中学生普遍反映“计算机图形学”难学,主要体现在图形学涉及的数学知识较多、相关算法晦涩难懂。如果没有大量的实践,学生会感到空洞与乏味。如何在讲授“计算机图形学”基本理论的同时,结合游戏开发的实践,使得学生将枯燥的理论和算法与游戏开发的能力实现有机的对接,是一个值得深入探讨的问题。本文在分析了目前“计算机图形学”授课内容的基础上,结合其内容与游戏开发之间的内在联系,对面向游戏开发的“计算机图形学”课程建设思路进行了探讨。
1当前“计算机图形学”授课现状
目前大多数高校的本科“计算机图形学”授课时间控制在50学时左右。以笔者所在的学校为例,理论与实验学时分别是36和14学时。如图1所示,理论授课内容主要分为二维、三维模型绘制、几何变换和渲染,相关数学基础和图形引擎库OpenGL等。传统的课堂教学中,二维图形学的内容占据相当大的比例。然而,在实际游戏开发实践中,二维图形涉及的较少,主要以包括:三维建模、几何变换、视图变换、材质、纹理贴图、图形渲染、模型动画等三维图形学的内容为主。如表1所示,实验内容主要以模型的绘制、剪裁、渲染为主,实验类型主要以验证型为主,实现方法主要采用C++语言和OpenGL图形库。学生在学习这一部分内容的时候,普遍感到算法较为枯燥,而且无法和实际应用联系起来,容易产生厌学的情绪。而且,OpenGL作为一款以C++为基础的开源三维图形引擎,优点是独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植,弊端是封装性不够,要实现复杂的游戏动画效果需要学生对底层的动画原理和数学知识有较强的理解和熟练掌握C++编程技能。
在授课环节上,老师一般采用是先讲授图形学理论课,然后进行实验课,目的是在实验环节让学生应用所学的理论知识,锻炼实践能力。但该方式也存在一些弊端:理论课和实验课相对割裂,学生在学习图形学算法和理论时对枯燥的内容感到较难,缺少实践,而在实验环节,在有限的时间内很难真正掌握开发工具并作出具有一定深度的作品。
2面向游戏开发能力的計算机图形学课程建设思路
基于上述问题,笔者结合游戏开发所需要的能力特点,从以下几个方面入手,对“计算机图形学”课程的改革进行了论述。
2.1课程内容
由于本门课程的学时限制,我们对目前授课内容的基础上进行了相应的取舍,即讲授重点放在三维图形学的内容。另外,将一些游戏开发过程中较为关键的图形学相关内容补充到授课内容中,例如以下两方面的内容:
场景组织与模型渲染:场景组织是三维游戏中核心内容之一。在一个三维游戏中,需要将许多的模型用某种数据结构的方式将其组织起来,然后在绘制每一帧的时候将其渲染处理。如何合理有效地管理三维场景中物体之间的相关、从属、互相影响的关系会对三维场景的生成效率产生重要影响。场景组织需要牵涉到数据结构中的排序算法,如:N叉树排序、堆排序算法。现有的大多数图形学教材并没有将上述内容列入主要章节,而场景组织的相关算法是实现游戏开发的核心算法之一,对这一部分的内容应补充进授课内容。
模型交互与动画算法:在游戏开发过程中,三维模型的交互是利用鼠标和键盘对模型的运动进行控制。三维模型的动画包括:模型运动、碰撞检测、人体骨骼动画、漫游等。掌握这部分内容对于学生深入理解游戏开发来说也是极有必要的。根据笔者所知,目前的《计算机图形学》教材中,大多数没有涉及这部分内容,但也有一些《计算机图形学》课本增加了三维模型动画及动力学的内容,如潘云鹤等所著的《计算机图形学:原理、方法及应用》一书中,就计算机动画的应用作为专门的一章内容进行介绍。
2.2内容组织
针对图形学中大多数的理论比较抽象,实验也大多为算法的验证型实验。大多数学生在学习本门课之前并没有相关计算机图形学方面的知识储备,因此造成学生普遍反映没能将所学知识应用到实际应用中,从而降低学习本门课程的兴趣。教师在具体讲授过程中,可以按照构造游戏的流程,从角色建模讲起,用游戏设计这一根主线找出各部分内容之间的联系,使得学生对课程的内容和游戏开发之间的关系有一个全貌性的认识。本文对图形学中相关算法与游戏开发的具体应用之间进行必要的对接。例如,在讲解物体建模内容方面,可以先采用三维建模软件(3DMAX或MAYA)实现基本物体的建模过程,并通过不同的视图展示模型的线框或三角面片视图。这样可以让学生直观的感受图形学中三维模型是如何构造的,从而让其理解在OpenGL中所调函数的意义。三维模型的显示方面,通过在三维建模软件中设置摄像机成像原理,经过三维空间中实体的世界变换、视角变换等过程了解模型剪裁、几何变换、投影变换的作用,从而更好的辅助学生了解相关算法的理解。真实感图形学主要包括光照模型、纹理贴图等,是图形学中较为复杂和难理解的内容。老师利用三维建模软件中的灯光、材质、质感、纹理贴图的实现过程,让学生直观的了解图形学中实现真实感的途径与方法。欲使课堂讲授的内容生动起来,必须有实际的案例支撑,因此建设面向游戏方向的图形学案例库,使得学生能够快速理解和掌握相关理论和技术,对于提高图形学课程的授课质量至关重要。
2.3图形库的使用
目前大多数图形学课本都是采用OpenGL作为实验的图形生成库。该图形库对于学生理解简单模型的生成具有良好的作用。但是OpenGL对场景组织、模型渲染、真实感、动画等功能的封装不够,从而造成需要学生对一些渲染、光照等数学模型有着较为深刻的理解,并将其用C++语言和OpenGL实现。为了让学生掌握游戏开发中有关场景组织、模型渲染和动画等相关功能,本文建议使用当前主流的3D图形API,如:DirectX或者OSG(Open Screen Graph)等。DirectX是微软开发的多媒体引擎主要用于Windows操作系统开发。Open Scene Graph是一个著名的开源三维图形库,被广泛的应用在可视化仿真、游戏、虚拟现实、科学计算、三维重建。这两个图形库对涉及场景组织、渲染、光照、模型交互动画等高级算法具有良好的封装,使得学生在使用只需要调用相关的API函数即可生成生动的游戏渲染和动画效果。
3结论
结合图形学教学的实际以及游戏开发专业方向的培养目标,从教学内容、内容组织、图形库选择三个方面对于面向游戏开发导向的“计算机图形学”课程教学改革进行了一些探讨,希望能对游戏开发专业的教学和课程建设有所促进。
参考文献
[1]孙家广,胡事民.计算机图形学基础教程[M].北京:清华大学出版社,2005.
[2]向世明.OpenGL编程与实例[M].北京:电子工业出版社,1999.
[3]潘云鹤.计算机图形学:原理、方法及应用[M].北京:高等教育出版社,2002.
[4]Luna F D.Introduction to 3D Game Programming with DirectX 10[J].Mathematical Statistics,5th Edition,Eaglewood Cliffs,NJ:Prentice-Hall,2008.
[5]王锐,钱学雷.OpenSceneGraph三维渲染引擎设计与实践[M].北京:清华大学出版社,2009.