林佳一
(广东交通职业技术学院信息学院,广州510650)
新一轮的科技创新大潮的到来,使人们的生活变得更加舒适、便利和快捷。作为前沿科技领域的研究热点之一的虚拟现实(Virtual Reality,VR)技术得到国家层面的政策大力支持。2016 年3 月,国家在十三五规划纲要中将虚拟现实列为重点支持的新兴支撑产业。随着5G 通信网络技术的诞生,为可视化信息数据的传递进一步拓宽了渠道,数据的精准性、可视化程度得到了创新发展,也促使虚拟现实技术在新时期的发展建设提供了更为广阔的空间[1]。
近年来,虚拟现实广泛应用于各行各业,如:教育、新闻媒体、游戏、电商和房地产等。虚拟现实产业蓬勃发展,对人才需求量不断增大。许多高职院校竞相设置虚拟现实技术专业或开设与之相关的课程,以拓宽学生的就业面。掌握软件开发工具Unity3D 是实现虚拟现实技术的必备的核心技能,于是《Unity3D 应用开发》课程成为通往虚拟现实开发工程师职业之路上重要基石。如何从高职院校的学生实际情况出发,让学生通过《Unity3D 应用开发》课程的学习,理解Unity3D引擎的原理和使用方法,按照项目开发的工作流程进行开发,成为从事虚拟现实这个新兴行业的专业人才。本文结合《Unity3D 应用开发》课程的特点,对在实际教学过程中的存在的问题和采用的方法进行了深入的分析和探讨。
Unity3D 是丹麦Unity Technologies 公司开发的一款能让你轻松创建诸如:三维视频、三维动画等类型互动内容的多平台的游戏开发工具[2]。Unity 提供了丰富的插件,这些插件可以使Unity 和一些VR 硬件设备,例如HTC Vive、Oculus、三星Gear 等兼容来实现VR 效果。除了Unity 外,Unreal 也是一款德国公司开发VR的引擎。相比之下,Unity 更容易学习,其插件更新速度快,支持跨平台,产品可发布在包括iOS、Android、Web、PC、PS3 和Xbox 等多个平台。基于上述特点,Unity3D 成为了虚拟现实产业中使用率最高的开发引擎。
为了提升学生的就业竞争力,伴随着虚拟现实技术的兴起,许多学校把Unity3D 作为虚拟现实职业方向基础骨干课程。目前,在开设了Unity3D 课程的院校中存在着两种情况:一种情况是在原有的软件类各门课程的基础之上,增加Unity3D 课程。这种方式偏重于技术开发层面;另一种情况将是Unity3D 课程设置在数字媒体专业中。这种方式则更强培养学生的场景建模能力。
我们在软件专业里设置了《Unity3D 应用开发》课程。该课程开设在三年学制中的第二学年,是专业课程。学生在学习本课程之前,要求掌握C#的基本语法和常用算法。因此,学生必须先学习《程序设计基础》和《数据结构》。《Unity3D 应用开发》课程的目标是使学生掌握Unity 基础与开发环境配置、脚本程序的开发、图形用户界面、物理引擎、光影效果、模型与动画、地形与寻路技术等知识。要求学生能够在Unity 中构建三维可视化场景、掌握用C#语言实现系统互动效果各种方法和基本具备使用Unity3D 引擎进行开发的能力。为了能让学生更进一步掌握Uinty3D 的技术,提高综合应用能力,还开设了后置课程《Unity3D 高级应用》。
虽然很多学校已经尝试开展了虚拟现实专业的人才培养工作,但有关Unity 课程还没有形成一套成熟的规范体系,也没有太多的教学经验可循,只能是在不断的实践中总结和完善。下面通过分析现有的教学情况,以针对教学开展过程中出现的问题,摸索出相应的处理对策,做到有的放矢。
对于有关新技术的课程,最突出的问题就是缺乏配套教材。很多学校直接把Unity3D 项目开发类型的书籍和资料作为教材,这些面向的是从事虚拟现实开发的工作人员。特别是某些翻译国外的资料,语言随意性强,内容并不是按照高职学生的学习特点来规划,组织松散,不仅不适合学生理解和掌握,而且给教师教学带来了很多困扰。
在教学中教师往往只关注于自己这门课程,忽视了与其它课程的衔接。《Unity3D 应用开发》课程的内容与多门课程都有直接或间接的联系。例如:Unity3D 的程序代码中大量应用到集合和泛型,这就需要在前置课程《程序设计基础》中将此部分内容讲解透彻。而实际Unity3D 教学中经常要补充强调原本不属于本课程范畴的集合和泛型,导致教学效果大打折扣。
Unity3D 有强大的图像引擎和逼真的物理特效。真实的场景效果的背后往往意味着运行大量的计算程序,这对硬件设备提出了更高的要求。Unity3D 课程往往开设在普通的实验室,由于没有配备大容量的硬盘和高速的独立显卡,上课时运行Unity3D 程序出现了卡顿和花屏的现象。
为了适应虚拟现实产业发展,培养出更多具备Unity3D 引擎开发能力的专业人才,面对《Unity3D 应用开发》这门新课程,在教学实践中我们始终按照以学生为中心的教学理念,结合教学的实际情况,从教学内容、教学环节和教学方法三个方面进行了有益的探索。
教学内容的确定直接关系到《Unity3D 应用开发》课程的目标的实现质量,不能随意参考几本书籍,或者由某几个教师来制定,需要全面系统地进行分析。以下是在明确教学内容过程中,主要考虑的三个因素和相应的具体做法,以及最后得出的课程主要内容,如图1。
图1 教学内容组织
第一,职业能力的要求。深入一线企业走访调研,或者把经验丰富虚拟现实开发工程师请进来,通过与授课教师和已经毕业学生共同分析岗位职业能力,最后归纳出本课程培养学生的职业能力。分别是Unity3D 资源管理能力、基本设计与创建场景能力、物理引擎的使用能力、图形用户界面的设计能力、基本的模型和动画设置能力、3D 游戏开发常用开发技术的能力、基本Unity3D 项目的分析、设计和发布的能力、具备Unity API 和帮助文档的使用能力。
第二,前后课程的衔接。应该与前置课程和后置课程的教师一起规划教学内容,经过大家多次反复揣摩和沟通,以保证内容不重复,连惯性和一致性。《Unity3D 应用开发》的授课教师除了把常用到的程序设计的知识点告知教授基础编程的教师,还要把这些知识作为课前准备内容发布给学生,可通过在线学习平台或微课,让学生提前准备好前置知识。
第三,教学内容编排次序。由于没有成熟的专业课程教材,我们在职业能力分析的基础上,将现有的一些资料进行梳理。打破原有的章节组织,按照知识的难易程度,逻辑关系,重新整合教学内容。例如:为了激发学习热情,将地形章节放前面,使学生能快速体验到完成一个简单项目的乐趣;此外,根据教学内容的特点,将知识点分成操作型和编程型,难点大部分在编程型。在不影响前后次序的情况下,交错安排知识点,这样把难点平均分布在学习过程中,避免因难度过于集中而使学生失去学习信心;最后,为了加强综合应用能力,引入一个Unity3D 企业项目,并不是一味强调与以前项目开发的不同,而是带领学生从策划准备、设计开发到打包上线一起完成项目,潜移默化中让学生体会到Unity3D 项目特有开发流程。
要把教学内容更有效的让学生掌握,实施好整个教学各个环节是十分重要的。整个教学环节包括理论教学、上机实践、课后作业、综合实训和考核。
结合本课程实践性强的特点,首先采用了一体化的教学方式,将理论教学和上机实践融为一体,边授课边实操。例如,讲位移与旋转时,初学者一般对三维空间的方向感缺乏认识,总是弄不清楚对象的位置,此时仅一味分析实现物体运动代码,学生会感到枯燥乏味。如果用一个卡通模型直观展示效果,并让学生马上在课堂上实践,会迅速提升学习效率。其次,要提升职业教育类课程的教学质量,教和学之间的交互过程就显得尤为重要[3]。在课堂上设置多个任务点,难度依次递增,学生在感受闯关成功的乐趣同时学习积极性也调用起来。为了增强教学师生互动活跃课堂气氛,还使用课程App 进行点名和提问。最后,教师在教学活动结束后应对本次教学进行总结,分析不足之处,不断修正后面的课堂教学,
课中的实践主要让学生理解并基本使用知识,而课后作业则应发挥学生的主动性和创造性,拓展知识的广度和深度。课后作业应具有一定难度,并非简单重复,需要上网搜集资料并思考完成。例如,在实例化游戏对象的课后作业中在没有提供任何的素材情况下,要求学生实现射击子弹的效果。
综合实训是在学期末单独留出一周时间让学生独立完成一个实际工作项目。给出学生更多自由发挥空间,教师主要起引导和启发作用,通过跟进学生的完成进度情况,获取项目设计中的难度,指导他们去解决问题。
课程考核采用过程性评价与总结性评价相结合[4],过程性评价主要考核每个教学单元的表现,评分是根据小组互评和教师评价综合而得。每个教学单元就像的一个环,环环相扣形成学习链条,如果一个环断了,意味着某个教学单元的考核目标没有达到,进而影响到整个教学预期效果。过程评价能让教师及时了解学生学习状况,以针对学生的特点进行精准教学。总结性评价包括期中考试和期末考试。期中考试后,会对成绩不理想的学生进行预警,督促他们查漏补缺。
授课过程中混合多种教学方法,例如案例法、启发式教学法、项目教学法等。打破以知识传授为主要特征的传统学科课程模式,在前面基础知识的教学中多采用案例教学、启发式教学等方式。例如:粒子系统,先给学生展示一个用摇杆控制小船在湖面行驶的案例[5]。然后给出完成这个案例需要解决的问题,逐步引出各个知识点。这里不是简单的给出任务就了事,重要的是要让学生学会如何用知识点去解决问题。
讲解综合项目开发内容时,我们以一个实际项目为主线,随着课程内容的深入,带领学生逐步完成这个项目的主要功能模块,既能够训练学生综合掌握各知识点,同时,又能够通过与企业项目的结合,提高学生实训效果,更好地培养学生实际项目的设计技能。项目的选取必须联系当前先进的系统开发技术,同时又要兼顾含盖的知识点广泛,不能仅限于某个行业。
经过几个学期实践,通过对学生的教学反馈和教学成果分析,大部分学生能够在较短的时间里逐步地了解、认识、掌握Unity3D 技术制作三维交互的,效果逼真的虚拟现实场景。在各种相关竞赛中不少学生取得了优异的成绩,还有些学生用Unity3D 技术来实现创新创业的项目。
在《Unity3D 应用开发》课程教学实践中,已经探索出一些好的做法,但目前仍然还存在着一些问题。首先,如果对这门课程的教学改进仅仅停留在某个课程的局部上是不够的,应该从整个专业的全局层面上进一步的整合。其次,该课程对教师的要求较高,需要掌握多门学科内容,因此教师必须坚持学习,及时更新教学内容。另外,Unity3D 和各种虚拟现实的教学实施有较高的硬件要求,良好的教学条件是实施好教学的有力保证,这需要获得学校层面的支持。今后,如何在新的产业形式下培养出更多的具有创新意识Unity3D 技术人才,还需要不断思考。