“登高而招,而见者远;顺风而呼,而闻者彰。”
两千多年前的荀子就已经洞察出学习应该有的方式与技巧:借力。现在,AR/VR应用的开发是一项艰巨而且极度复杂的工作,此时的开发引擎便如山、如风被开发者所借,才承托起AR/VR应用高速迭代,行业应用场景不断推陈出新的景象。
诸多AR/VR引擎的前身是传统3D引擎,但是在VR插件的帮助下,实现了左右分屏渲染、陀螺仪、位置跟踪等API。随着AR/VR产业链的发展,用户对于应用内容需求质数双量的不断提升,AR/VR专用引擎也已经开始出现。引擎,这种底层代码的封装极大地加快了开发者内容开发效率,降低了内容开发学习成本。
但,如此巨大的市场摆在面前不免吸引大小厂商疯狂入场。各式各样的开发引擎也让开发者无所适从,使用错误的开发引擎非但不能提高开发效率,反而会被不合适的引擎拖累。笔者今天深度分析市面上数款开发引擎从性能、功能性、行业场景适用性等特点与角度,为开发者拨开引擎选择的层层迷雾。
Unity3D
让开发者轻松创建三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台综合型开发工具Unity3D是一款全面整合的专业开发引擎。编辑器兼容Windows、MacOS等运行环境,成品在Windows、Mac、Wii、iPhone、Windowsphone8和Android平台均可发布。Unity从之前的默默无闻到现在的风靡全球离不开它优秀的跨平台表现、界面易用性、上手速度快等特点。在所有畅销移动游戏中,几乎三分之一都是使用Unity技术开发,游戏应用成了Unity3D的最主要应用场景。
但随着全球VR产业的兴起,Unity逐步将重心调整至满足VR游戏开发人员的开发需求。比如为VR和增强现实设备增添了“高度优化”渲染管道。同时也增添了对OculusRiftHMD的原生支持。在OculusRift交付之初中的数十款可玩游戏中的16款是使用Unity技术研发的。不仅如此,HTC、SONYPSVR、SamsungGearVR甚至是微软的Hololens平台的开发者对于Unity技术同样需求巨大。考虑到商业应用方面VR的巨大潜力,VR游戏已经成为当下Unity主推的重要功能之一。
6月15日Unity宣布和腾讯云合作推出Unity游戏云(UnityConnectedGames),从在线游戏服务、多人联网服务和开发者服务三个层次打造一站式联网游戏开发平台,支持沉浸式VR、数字孪生等新兴领域。
Unity在2月所发布的《2020年商用AR/VR热门趋势报告》中说道:2020年将是商用AR和VR技术的转型之年。不难看出,Unity或将在AR/VR领域给予产品及开发者更多投入。
Unreal
既然说了Unity就必然要说到与它相爱相杀的Unreal。两者都推出了专门针对VR优化的新版本引擎,伴随着VR产业的崛起,具有相似功能与应用场景的两者风云角逐、你死我活。
与Unity一样,Unreal(UE)是Epic公司开发目前世界最知名、授权最广的顶尖游戏引擎之一,据说占有全球商用游戏引擎八成的市场份额,比如很火爆的“吃鸡”游戏就是用UE开发出来的。
UE由于渲染效果强大以及采用PBR物理材质系统,它的实时渲染效果可以达到类似Vray静帧的效果,强大的功能性成为全球开发者最喜爱的引擎之一。
Unreal为了进一步吸引开发者加入UE阵营,采取免费下载策略,在让利策略驱动下取得了显著效果。近几年来,UE引擎已成为许多VR游戏体验致胜的法宝。免费、开源、画质全球数一数二、跨平台、热更新、商城……等等海量独有或者更加优秀的功能与特性使得Unreal虏获全球大批拥趸。
6月,Unreal简化开发工具Optim,推出VR与PC联机功能,简化Unreal项目开发流程,并提供各种快捷的开发工具包。
现在的UE已经不仅仅将自己束缚于游戏领域,事实上其实时交互和渲染功能非常适用于各种非游戏应用的项目,包括汽车、航空、建筑、消费电子产品和复杂数据可视化,融合了DataSmith的UnrealStudio版本则是Epic官方发布的针对于建筑和产品设计行业,能够将CAD和3dsMax数据快速导入,大幅度缩短迭代时间的划时代工具。
CryEngine
CryEngine游戏引擎(CE)是由德国Crytek公司研发,旗下工作室“GMBH”优化、深度研究的游戏引擎。在某种方面也可以说是CEinline的进化体系。CE具有许多绘图、物理和动画的技术以及游戏部分的加强,世界游戏业内普遍认为性能堪比UE,《孤岛危机》系列和《罗马之子》的视觉表现已经征服了全世界。在2016GDC游戏开发者大会上,Crytek正式公开了其最新研发的CryEngine5便已全面支持VR开发,并且开源免费。
CE在3D技术方面有着优秀的自身经验,加上引擎渲染能力和高帧数高分辨率速度,让CryEngine能够提供非常真实的视觉效果,这对于VR体验来说是保证视觉效果体验的坚实基础。
前不久,英国ShopTo上架后又迅速下架吊足全世界玩家胃口的大作《掠食VR》便是由CryEngine开发,《掠食VR》在宇宙恐怖氛围的塑造上时至今日依然十分出色,由此可见CE作品的视觉表现力。
NibiruStudio
这款引擎和其他的都不一样,自主研发、XR专用、可视化、低功耗是它的标签,它不是由哪个传统引擎通过加装的方式而支持XR,它自诞生以来便是为XR应用而生。另外就是应用行业与场景的不同,NibiruStudio针对的不是游戏或同类别场景,而是面向航天、电力、大工业、资源、运输、气候等国家级重要领域,广阔应用场景加持已经有诸多项目落地。
行业与应用场景决定了产品的特点,也决定了我们今天提到的引擎和它都不构成直接竞品关系。引擎中最为推崇的渲染性能在这里不常被提及,反而易用性、易维护性、稳定性、功能完善性、低功耗、高安全性、资源利用率、跨平台属性、专用性等特点反而成为NibiruStudio斩获国家级用户及订单的利器。
NibiruStudio使用Java开发语言,可视化3DGUI编辑器,AndroidStudio无缝衔接,拒绝XR应用开发过程中的重复操作,重塑效率。Windows,Android,Linux等系统跨平台运行。针对XR功能与场景已封装好完整专业控件,供开发人员随时调用,效率极高。NibiruStudio生成的应用已运行于全球数百万部AR/VR一体机设备。全面发掘AR/VR技术潜力、延伸AR/VR技术应用。
StingRay
“Stingray”是通用实时引擎,它和“虚幻引擎”一样有望适用于游戏以外,尤其在建筑领域。毕竟场景制作的工作不论在哪个行业的哪个领域都是有类似之处的,将触角拓展到建筑等传统领域,对游戏领域来说也会有诸多积极正面的推动与影响。
jMonkeyEngine
jMonkeyEngine(jME)是一款全部采用Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,而不必担心版权问题。jMonkeyEngine也被称为是一款适合冒险的Java开发人员的3D游戏引擎。
jME封装了OpenGL,提供一个完整强大的高性能工具包,使3D游戏的开发变得容易。jME提供所有常规手段来模拟烛光、阳光、闪光和全局光照,阴影效果用类似PSSM和SSAO等技术实现。材质系统完全基于染色器(Shader)技术实现,采用称为ShaderNodes的创新设计来将染色器超级模块化,使其能够在可视化编辑器中进行编辑。当然,你依然可以手动编写染色器代码。
jME3使用后置处理器、滤镜以及粒子发射器等技术,能够实现多种多样的特效,比如水面、雾化、光照散射、爆炸特效等。
ArToolKit
对于开发一个AR应用程序来说,最具难点的部分莫过于实时将虚拟图像覆盖到用户视口,并且和真实世界中的对象精确对齐。ARToolKit提供快速和准确的标记跟踪,能够让开发者快速的开发出更有趣的AR应用。ARToolKit包含了跟踪库和这些库的完整源代码,开发者可以根据平台的不同调整接口,也可以使用自己的跟踪算法来代替它们。Artoolkit解决了增强现实中的两个关键问题:视点跟踪和虚拟对象交互。
目前来说,ARToolKit支持自然图片/Marker/2DBarCode的识别。自然图片处理:这个应用比较广泛,对用户的限制也会小很多,不过最好使用一些特征比较明显的图像效果会更好。Marker/MultiMarker:这是一种经过特殊处理的图像,需要在边缘包裹两层,最外侧是包裹了白色/浅色边缘,内侧是包裹了黑色边缘,用以提高识别度,同时也方便计算Pose(因为可以直接提取边缘来计算Pose)。2DBarCode:就是二维码,这个比较常见。
另外ARToolKit目前支持的渲染引擎是OSG(OpenSceneGraph),不过版本比较低。当然,你也可以使用OpenGLES进行绘制,毕竟我们只需要获取到了MVP矩阵,理论上绘制部分是可以完全分开的。
AR/VR是一项注重体验的技术,所以现在的VR应用项目,大部分都是以强烈的画面冲击感为主要指标。在这种趋势引领下,高渲染效果引擎自然受到开发者的独特青睐。但是对于国家级关乎民生的大型项目而言,则更加偏向于引擎的稳定性、功耗、功能完整性、可维护性等产品本身核心性能参数。
对于开发难度而言,上手快,界面易用,相关开发链上无论是资源还是插件都完善,就开发效率层面来说,则更胜一筹。毕竟有些引擎刚推出不久,扩展资源不够丰富,对开发者会造成一定的不便。而有些引擎工作流程复杂,学习难度大,硬件要求高,这就需要开发者有一定深度的理解才能完全发挥出性能,开发难度较高。
随着AR/VR的进一步发展,各大引擎厂商也逐渐在市场中找准自己的位置。但是开发者选择一个引擎要考虑的因素却是相当复杂的,成本、性能、上手难度、技术支持、渲染效果、能耗等等太多。而开发引擎的选取对于开发效率等因素又具有决定性的影响,所以开发者要切实分析自身需要,综合各引擎特点选取最适合自己的引擎。
君子性非异也,要善假于物也!