β

VR 时代,我们应该如何编程?

zrong's Blog 757 阅读

3月3日,我被这篇文章轰炸了: Firefox联手Chrome合作开发网页VR标准 。文中提到:

随着1.0版WebVR API的完成,Mozilla已经收到了许多开发者发回的反馈。值得注意的是,该公司已经改进了如下内容:

—以虚拟现实为核心的设备渲染和显示标准;
—WebVR页面之间的遍历链接能力;
—能够枚举虚拟现实输入的输入处理机制,包括6轴动作手柄;
—适应坐姿和站姿两种体验;
—使用桌面和移动平台。

在获得认可后,Mozilla还计划于今年上半年在Firefox Nightly中推出一个WebVR 1.0的工作版本。如果你勇于探索,可以从布兰登-琼斯那里下载几个实验版Chromium浏览器,体验这种API的概念验证效果。

我们知道,Mozilla 的 WebVR API 早已在 2015年7月 推出草案,那么这篇没有任何引用的语焉不详的 WebVR 1.0 是啥?有趣的是,中文互联网上该文章大部分为转载,内容完全相同(甚至更少)。这让我开始质疑其内容的完整和正确性。

稍微搜索一下,发现原文应该是这篇 Introducing the WebVR 1.0 API Proposal ,译者可能是偷懒,也可能是并非技术人员,仅仅翻译了新闻部分,没有翻译代码部分。看看 WebVR 草案 中的 Editors 信息,3 个 Mozilla 的人,1 个 Google 的人,我们就能了解到,目前暂时只有 Firefox 和 Chrome 陪玩了。

回到本文的标题,身为开发者,我们该如何更新自己的技能,才能适应这个新的平台?更准确的说,我们应该学习什么编程语言/或3D引擎(3D Engine),才能适应 VR 时代的发展?

VR 设备分析

让我们先来看看现在的 VR 设备。

目前主要的 VR 设备有 Oculus , Sumsang Gear VR , HTC Vive , Microsoft HoloLens , Sony PlayStation VR ,国内的 VR 设备则太多,销量较高的有 蚁视 暴风魔镜 等等。

Oculus

代表产品: Oculus Rift

简单介绍: 万众瞩目的 Oculus Rift 已经预售了。简单地说,Oculus Rift 是一个带有部分输入设备的虚拟现实显示器。这些输入设备包括一个遥控器,一个红外传感器,还有 Touch 控制器。Rift 的所有计算是在一台 PC 上进行的,在 Oculus Ready PCs 可以看到 Rift 要求的 PC 配置。由于显卡的性能问题,Rift 目前并不支持 Mac,只能下载到基于 Windows 的 Runtime。

SDK支持: Oculus Rift 支持 Unity 5 Unity 4 Unreal 。3月1日,Oculus 发布了 MobileSDK 1.0.0.1 升级,这个 SDK 提供了对 Oculus Remote Monitor 的支持,同时也让我们可以在 Mac OSX 上基于 MobileSDK 进行开发。

Samsung

代表产品: Gear VR

简单介绍: Gear VR 是 Samsung 和 Oculus 共同开发的。它目前使用 Samsung 的 Galaxy S7/S7 edge, Note5, S6, 和 S6 edge 来代替头显中原来的显示器。Gear VR 还内置传感器用于和三星手机配对,并内置了触摸板用于操作。和 Oculus Rift 使用 PC 来进行计算不同,Gear VR 把计算放在了 Samsung 手机上。

SDK支持: Oculus 的 MobileSDK 最开始就是为 Gear VR 提供的。

HTC

代表产品: Vive

简单介绍: Vive 也已经预售了。它是目前呼声最高的消费级 VR 设备了。Base stations 设计,电子围栏,多功能操纵手柄,StreamVR,良好的体验都让它成为目前最好的 VR 设备。在 VIVE OPTIMIZED PCs 可以看到推荐的 PC 配置,和 Oculus 类似,但不要求 8G 内存 :-)

SDK支持: Steam VR Unity Unreal

Microsoft

代表产品: HoloLens

简单介绍: M$ 的确是不差钱,一上来就搞出来一个 MR(Mixed Reality) 设备,还让 HeloLens 上了国际空间站 。简单的说,HoloLens 就是一台微型 Windows 10 一体机啊!和竞争对手们完全不是一个打法好么?不在一个纬度好么!硬件我就不说了,直接看 Hardware 好了,简直惊悚。

SDK支持: 为 HoloLens 开发应用,其实就是为 Windows 10 开发 App ,目前官方页面并没有公布太多的开发信息。但你也知道,IDE 一定是宇宙最强的 Visual Studio,语言一定是 C# 。

Sony

代表产品: PlayStation VR

简单介绍: Sony 大法虽然好,但 PSVR 和上面几家比起来会出来的比较晚,又从 2016 上半年跳票到下半年。它是和 PS4 共同使用的,目前我没有找到它的 SDK。但 Unity 提到了对 PlayStation VR 的支持。

暴风魔镜

代表产品: 魔镜4

简单介绍: 暴风魔镜是目前在国内大肆宣传的一款产品。暂时还没有哪一款产品的宣传力度超过它。当然,它也是我唯一买过(主要是买得起)的产品。和 Google Cardboard 类似,它是一款把手机塞进去就能体验廉价 VR 的产品。具体的体验效果,取决于手机的高(tu)端(hao)程度。

SDK支持:暴风魔镜提供了 Android/iOS/Unity/Unreal 的 SDK 。

VR 引擎分析

从上面的设备分析可以看出,目前对 VR 支持最好的 3D 引擎就是 Unity 和 Unreal 了。它们两位可以说是 VR 的标配引擎。借用一句广告词: 2U ,你值得拥有!

除了 2U 哥俩外,下面还有一些在 VR/AR 界十分活跃的引擎和软件:

OSVR

Open Source Virtual Reality 是一个全面开源的软件平台,支持多种设备和引擎,Blender/MonoGame/StreamVR/Unity/Unreal/CryEngine/WebVR 都在支持之列。在国内,OSVR 已经和 360 公司展开了合作。

OSVR是全球的开源虚拟现实平台,由Razer(雷蛇)——全球高性能游戏硬件、软件与系统品牌,以及Sensics——全球专业级虚拟现实头戴式显示器品牌联合创立。该软件平台致力于为所有虚拟现实技术树立开放标准,使得各款支持OSVR的虚拟设备与支持OSVR的软件能够顺利交互、接合。

OSVR软件 介绍了这套引擎的架构方式。

OSVR能够提供简单而标准化的方式,助你探索、配置和操作数以百计的设备,包括VR眼镜、定位追踪、深度摄像头、眼动议、游戏控制器等等。

VRPN

Virtual Reality Peripheral Network 是学术圈搞起来的一套基于网络传输界面的开源 VR 库。允许大家共同建设,把自家的设备加进去。这个库支持非常多的设备,甚至直接包含了设备驱动 Supported hardware devices 。VRPN 已经在 PC/Win32, PC/Cygwin, PC/Linux, and Mac/OSX (32- and 64-bits on all), ARM Linux systems 和 Android 上测试过。

MiddleVR

MiddleVR 目前提供 Unity 插件 ,当然你也可以直接使用它的 SDK ,它也支持目前大多数主流的 HMD (Head-mounted display)设备。虽然是由一家公司在维护,但目前是免费使用的。

VR 语言

说起 VR 语言,其实还不如说是 3D 引擎的语言。VR 没有 3D 引擎支持是无法进行开发的。让我们看看上面提到的 3D 引擎和 SDK 主要使用什么语言。

首当其冲的是 C/C++ ,这是毋庸置疑的。大多数 3D 引擎都使用 C++ 开发,Oculus 提供的 SDK 也是使用 C++ 进行开发的。 Gear VR 是在安卓设备上运行,需要使用 Android NDK 基于 C++ 进行开发。Unreal 引擎同样使用 C++ 进行开发。 MiddleVR 提供了基于 C++ 的 SDK。

其次是 C# 。 Unity 把 C# 当作脚本语言使用。在 VRPN 中可以使用 .NET bindings for VRPN 作为开发语言。不出意外的话, HoloLens 也一定使用的是 C# 。

再次就是 Javascript 。它也是 Unity 的一种脚本语言(即使选择的人并不多)。但 WebVR 和 Javascript 程序员的基数(基友数?)一定会让 Javascript 继续在使用人数上占优(我真的不是黑啊)。即使不考虑 WebVR , three.js Babylonjs 这类已经非常成熟的 HTML5 3D 引擎也足够证明 Javascript 在 3D 上的强大生命力。

VR 平台

从目前的状态看, Oculus 仅支持 Windows 和 Android(通过 Gear VR) 。 MiddleVR 仅支持 Windows 平台。其他的几个引擎例如 OSVR/VRPN 都是多平台支持的,Unity 和 Unreal 当然也是多平台支持。 Playstation VR 无疑是 PS 独占。 HoloLens 则无疑是 Windows 独占。

只有 WebVR ,不挑平台陪你玩。

结语

VR/AR/MR 仍然在如火如荼的发展。以上的技术 1~2 年后或许会有翻天覆地的变化,领跑者说不定就成了追赶者,黑马也可能随时出现。但总的来说,VR 在目前这个阶段的发展,最重要的仍是内容。内容的产出依然离不开程序员,离不开 3D 引擎和编程语言。作为程序员,只要我们苦练内功,紧跟技术发展的脚步,就不必担心被时代所遗弃。若是不小心搭上了 VR 时代的快车,或许更容易一飞冲天。

而当下,我们需要一往无前。

(全文完)

作者:zrong's Blog
可能是一个程序员
原文地址:VR 时代,我们应该如何编程?, 感谢原作者分享。

发表评论