2.2 Unity项目开发流程

2.2 Unity项目开发流程

一套系统化的工作流程有助于让我们的任务执行起来更加规范,也能提高开发效率、提升开发效果,对于AR、VR应用开发亦是如此。此处主要介绍其主体部分Unity的使用流程。使用Unity进行项目开发,无论是针对游戏、AR/VR应用、APP应用,其基本流程大致相同,可归纳为以下步骤。

1.系统设计

系统设计是在整个项目开发的初始阶段,也是在使用Unity之前的准备阶段。开发人员需要在正式开发之前对项目进行整体策划,主要设计系统的各个方面,包括:需求分析、总体功能设计、系统框架设计、子模块功能设计等。完整的系统设计有时还包括用户调研等准备工作。

2.准备资源

完成系统设计之后,可以开始准备开发所需的资源了,资源也可理解为素材。在Unity开发中,最常用也是最基本的资源包括:3D模型、音频、图片、视频、材质等元素。将这些资源导入Unity中进行整合,例如搭建场景、制作对话、制作交互等。这些资源可以用对应的工具事先创建,如表2.1所示。

表2-1 各类资源素材的制作软件

以上各类素材在AR、VR开发中各自扮演着重要角色,在不同的开发场景中根据需要进行使用。3D模型在开发时通常应用较多,除了表2.1中列出的软件之外,还可以用其他方式制作。例如,在工业化数字孪生、文物的数字复原等场景中,可以使用3D扫描(图2.8)、照片建模等方法,一方面有助于减少庞大的人工建模工作量,另一方面也能准确逼真地对实物数字化。

图2.8 使用3D扫描仪对文物建模

(图源:REVOPOINT网站)

此外,Unity的Asset Store中也提供了丰富且优秀的数字资源,在学习时可根据需要选择使用,若用于商业用途,需要获得版权方的授权许可,以免涉及侵权。

3.新建项目和导入资源

准备好资源之后,就可以新建Unity项目,并将资源导入Unity中以备使用。从外部导入的资源被存放在Unity项目的Assets目录下,在Unity编辑器的Project面板中进行管理。

4.导入开发工具包

在进行AR、VR开发时,虽然也可以通过自己编写代码实现,但为了提高效率、提高代码的强健性,在实际开发中一般使用相应的SDK(Software Development Kit,软件开发工具)进行开发。目前各大主流VR、AR硬件平台产商均提供面向Unity的SDK,例如HTC Vive PC端系列、Vive Focus系列、Oculus、Holo Lens、Pico Neo等。这些SDK中提供了脚本、预制体、材质等,帮助进行高效率开发。一些主流VR、AR硬件品牌及其适配Unity的SDK如表2.2所示。

表2-2 VR、AR硬件平台的SDK

5.搭建虚拟场景

在VR开发中,通常都需要搭建虚拟场景,此步骤包括:模型摆放、赋予材质、设计关卡/地形、灯光布置等。在Unity的Scene面板中,开发者可以对游戏对象进行可视化的编辑,包括设置其位置、大小、旋转等基本属性,还可以在Inspector面板中设置更多的参数选项;创建地形、添加灯光,等等。

6.设置灯光环境

灯光环境的建构和渲染是创建高质量VR项目不可或缺的环节。Unity提供了灯光(Light)类型的各种游戏对象,以及强大的全局光照(Global Illumination,GI)技术,无论是实时全局照明还是烘焙光照贴图,都能满足VR环境对于光照的高要求,再加上Post.Pro.cessing后处理栈工具,能够显著提高应用程序的画面品质。

设置灯光环境的流程包括:单个灯光组件的渲染模式(Render Mode)、选择照明技术、布置反射探头(Reflection Probe)、灯光探头(Light Probe)等。

7.交互内容开发

在VR项目中,交互是非常重要的元素。目前主要有以下交互方式:手柄控制、手势识别、语音识别、凝视射线等。在早期的移动端VR眼镜(如Google Cardboard)中,通常智能采用凝视射线的方法进行简单互动;随着PC端VR头显、VR一体机的兴起,手柄控制成为当前最常用的VR交互方式。

由于目前VR行业还没有设定统一的硬件标准,不同的VR头显厂商的手柄控制器也各不相同,同一品牌不同型号的VR头显也对应不同的VR控制器,在开发时需要选择相应的SDK进行手柄交互的开发。目前主流VR头显及其对应的SDK已在表2.1里列出,此处不再赘述。

2019年7月,开放标准行业协会科纳斯组织(Khronos Group)宣布批准和公开发布Open XR 1.0规范,这是一个统一、免版权费的公开标准,提供了对于VR和AR(统称为XR)平台与终端的高性能跨平台的接入,旨在规范XR硬件和软件通信方式。2021年开始兴起的“元宇宙”概念也大力推动了VR行业软硬件标准化进程。2022年7月,科纳斯组织与Meta、微软、谷歌、高通、英伟达、华为、Unity等科技巨头宣布成立元宇宙标准论坛,旨在制定AR/VR、人机界面和交互范式等技术领域的行业标准。

8.测试优化

测试是软件开发中的重要环节,决定一个软件的可用性和效率如何。在Unity进行AR、VR开发时,不仅要测试项目是否可以正常运行,还要对程序的性能进行分析,对帧率、内存等指标进行衡量。

Unity提供了多种分析工具,帮助开发者找到性能瓶颈。例如Frame Debugger、Memory Profiler、Profiler等。

9.发布应用程序

在程序经过测试和优化之后,就可以将其导出发布了。在Unity编辑器中,选择需要的目标平台,通常,PC端VR设备对应PC平台、VR一体机对应Android平台,等等。

如果是企业定制项目,直接将应用程序交付即可。如果希望发布一个公开的商业产品,则可以将作品发布到各大厂商的应用商店,如表2.3所示。

表2-3 各大VR厂商的应用商店