【VR】虚拟现实软件开发工具与技术
发表于2018-01-08
各式各样新型的虚拟现实的相关硬件设备相继推出、聆郎满目,但是没有软件内容的硬件永远都是没有灵魂的硬壳。硬件的的发展为软件的开发创造了平台和前提条件。本文主要从Unity引擎开发,讲述虚拟现实相关的开发工具与软件技术。
1. 外设驱动——Nibiru SDK 睿锐(官网:http://www.inibiru.com/aboutus.html)
这么的多的外设,各有各的SDK,作为开发者应该何从选择?从何下手?睿锐科技为游戏外设驱动提供了统一的跨平台解决方案,声称适配市面上绝大多数操控外设(包括上一篇介绍的智能指环、4D 座椅、各种眼镜等),以及多种设备。显然这种跨平台的思想同Unity引擎如出一辙。
从功能定位上来讲,Nibiru还是比较偏向游戏领域(从图表设计即可看出)。但技术的领域应用是自由的,事在人为的。这样的跨平台多设备外设驱动同样可以很好的应用于VR技术领域(其实二者很多时候界限本身就不分明)。
值得一提的是,Nibiru CTO在UNITE 2015 虚拟现实技术专场中还特别提到了一种外设,就是通过感知玩家脑电波来获取玩家的精神集中程度,从而控制玩家在游戏中的集中力。这个是比较有意思的一点。
从技术上说,Nibiru是基于蓝牙设备和Android技术体系结构创建的,官方提供的文档主要针对Android工程师。至于其它平台如何使用,还有待调研和探讨。(网址:http://www.nibiruplayer.com/document_center.jsp?status=1)
截止2014年底,Nibiru旗下就已经拥有完美世界的《神鬼幻想》、艾格拉斯《格斗刀魂》、《神守卫》、《永恒之剑》以及《异星风暴》、《恶灵杀场》、《shadow gun VR》等大型虚拟现实游戏,其在VR领域的后续发展值得关注和期待。
2. 3D引擎
目前的主流状况是,主流游戏引擎由于其功能之强大,被用于诸多VR产品的开发。另外一点值得一提的是,并非所有的VR产品或解决方案都需要依赖外设。以展示与简单交互为主要内容的VR产品,在不涉及复杂的行业相关精准计算的条件下,会首选3D引擎配合电脑来完成。
(1)Unity(官网:http://unity3d.com/industries)
虽然刘钢先生在在UNITE 2015上也说,抱歉,Unity引擎目前对于VR在BIM领域(以及其它领域)没有提供原生的功能,但是Unity引擎本身功能灵活,有着对外开放的平台(允许第三方添加各种各样的插件)。另在大会上例举了一个来自麦肯锡的统计数字,称市面上90%的VR产品都是用Unity引擎研发。虽然这个数字没有考证,但是纵观市面上公示出来的VR产品,但凡有一点Unity开发经验的人都会觉得,这类产品用Unity引擎开发很容易实现。
主要难点在于特殊的高标准Shader的自主研发设计以及高仿真的现实模型提炼。有媒体说,Unity引擎在逐渐向虚拟现实游戏转型(http://digi.it.sohu.com/20141125/n406359656.shtml)。
(2)Unreal Engine 虚幻引擎(官网:https://www.unrealengine.com/zh-CN/what-is-unreal-engine-4)
午时科技有限公司的虚拟产品就是用UE4完成的,特点是效果绚丽风格唯美,很适合建筑或内装的展示。
UE4与Unity5的竞争也趋于白热化的状态,这给我们开发者带来最大的好处是,昔日可望不可及的大型3D引擎如今已经垂手可得了。
接下来提几个专门用于VR领域的软件开发平台。
(3)Quest3D(官网:http://quest3d.com/)
Quest3D主要面向建筑领域,虽然也包含逻辑处理,相比之下更侧重于给设计人员使用。简单快速搭建虚拟建筑模型,是Quest3D的主要用意。
(4)VRP(论坛:http://bbs.vrp3d.com/forum.php)
(5)EON
3. 图形库
有了3D引擎,似乎不需要开发人员直接调用3D图形函数库了。其实....不然,实际工作中由于这样那样的原因(或功能或效率),有时还是需要开发人员自己去调用图形库。
(1)OpenGL
(2)DirectX 3D
(3)WebGL
前不久HTML5技术浪潮涌起,也把WebGL推向了浪尖。Unity 5.0也强调了对WebGL的支持,使得互联网上的3D交互及其页面嵌入降低了很多隔阂感。
4. 虚拟现实编程语言
除了各大引擎自身所使用的脚本语言之外,
(1)着色器编程语言: Cg/HLSL
(2)虚拟现实建模语言:VRML
VRML全称Virtual Reality Modeling Language
(3)三维图像标记语言:X3D