如何利用Unity在10分钟内制作一个360°VR应用?

虚拟现实(VR)激动人心,它也是应用开发的新前沿。

VR有望催生新形式的讲故事方式并引起强烈的情感体验。然而制作VR却令人望而生畏:它花费巨大,而且需要特定的硬件和技巧。

但是情况在改善,因为直观的工具和可负担得起的硬件正使得VR的开发变得可行。本教程将向您展示如何在短短几分钟内利用安卓系统和GoogleCardboard开发一个360°视频应用。另外,这几乎不需要任何代码;)

VR开发不应该是你将灵感融入生活的阻碍。让我们开始吧:

 

必需物品

以下是我们的购物清单:

一部配置了陀螺仪以便于感知头部移动的安卓手机,操作系统基于KitKat(安卓4.4)及以上。

一个Cardboard头戴式显示器。如果你没有,在亚马逊你能找到很多10美元以下价格的。

Unity3D,一个你需要安装在电脑上的跨平台游戏引擎,版本号5.6及以上。我们将利用这个软件去开发我们整个项目。

适用于Unity的GoogleVR SDK,你需要预先下载好。

一个360°录像机。

如何构建此应用?

不同于拥有矩形框架的常规视频,360视频是球形的。因此,我们首先需要创建一个球形屏幕来投影我们的360°视频。播放器(或观看者)将位于该球体内,并能够从任何方向观看视频。

下面的步骤将讲解它在罩下工作的原理,以使你感受到你有能力做出自己的更改。详细步骤说明,请参阅视频。

第一步,创建球体

我们这种情况,的确需要从内部看到我们的球体。这是这个应用的整个关键所在,因此我们将要把内部转化成外部。

在Unity中,球体并不是真正意义上的球体(什么?我们一直都被骗了!),它们是由成千上万个极小的面组成的多边形。面的外侧是可见的,而内侧则不是。基于这个原理,我们将要编一个程序像翻薄煎饼一样来翻转这些微小的面。

在3D几何学中,我们把这种转换称为《倒转法线》或者《反转法线》。

我们将要用到一个叫着色器的程序,它将应用于球体的材料特性中。在Unity中材料特性控制了对象的外观。着色器是一些小的脚本,基于从材料特性中采集的照明和信息来计算每个像素渲染的色彩。

因此要为球体创建一个新的材料特性,那么我们就需要给这个材料应用新的着色器。我们需要为这个着色器写自定义代码……但是不用担忧,你只需复制粘贴以下的代码:

这个小着色器将把球体的每个像素的内侧转变成外侧。现在,在我们的场景内,从内侧看起来我们的球体就像一个巨大的白球。下一步就是将这个白球变成一个视频播放器。

第三步:把你的360°视频放在球体中

这一步你手头上需要有一个360°mp4视频。将其导入项目中,然后将它拖入球体上,之后就是见证奇迹的时刻:一个“视频播放器”组件诞生了;另外,啊哈,视频可以准备播放了。

你可以玩玩像循环和音频之类的设置,另外它也支持视频流!

第四步:设置Google Cardboard

最后一步,我们将在安卓手机上运行此应用并分享给朋友们!

有两种方式可以做到:

  • 回到File> Build Settings。你可以使用USB数据线将一部安卓手机连接到你的电脑,点击Build & Run。这会直接将此应用安装到你的手机上。
  • 另外一个选择是点击Build only。这不会在手机上安装此应用,而是生成一个APK文件。你可以通过email向任何想要尝试这个你刚创建的杰作的人分享这个APK。他们必须双击这个APK附件来将其安装到他们的手机上。

更上一层楼

恭喜,你已经制作了一个360°视频应用,离创建一个VR视频应用仅一步之遥!虽然这两个术语经常使用相似,但是360°和VR代表了两种不同的体验:

360°视频是用专用摄像机或多个摄像机组合从各个角度录制的。用户可以从任何想要的方向观看,但是没有交互式体验。

VR通常指的是一个用户可获得沉浸式体验的由计算机生成的环境。这是一种交互式体验:玩家除了可以从各个方向观看外,还可以进行移动和控制对象。

你的新应用可以作为创造一个更加丰富的VR体验的起点。Unity具有很多你可以利用的功能,比如添加3D元素或酷炫粒子效果✨来叠加和增强视频效果,或者投入某些互动元素。

你也可以在360°视频播放器内部设置一个全3D环境并把播放器作为一个天空盒。用户可以使用这个精巧的自动步行脚本在舞台布景仿真系统中导航。