程序丨如何利用Unity在10分钟内制作一个360°VR应用?
翻译:艾涛(mad world)
审校:黄威(横写丶意气风发)
虚拟现实(VR)激动人心,它也是应用开发的新前沿。
VR有望催生新形式的讲故事方式并引起强烈的情感体验。然而制作VR却令人望而生畏:它花费巨大,而且需要特定的硬件和技巧。
但是情况在改善,因为直观的工具和可负担得起的硬件正使得VR的开发变得可行。本教程将向您展示如何在短短几分钟内利用安卓系统和GoogleCardboard开发一个360°视频应用。另外,这几乎不需要任何代码;)
VR开发不应该是你将灵感融入生活的阻碍。让我们开始吧:
https://v.qq.com/txp/iframe/player.html?vid=c0554ufg757&width=500&height=375&auto=0
必需物品
以下是我们的购物清单:
一部配置了陀螺仪以便于感知头部移动的安卓手机,操作系统基于KitKat(安卓4.4)及以上。
一个Cardboard头戴式显示器。如果你没有,在亚马逊你能找到很多10美元以下价格的。
Unity3D,一个你需要安装在电脑上的跨平台游戏引擎,版本号5.6及以上。我们将利用这个软件去开发我们整个项目。
适用于Unity的GoogleVR SDK,你需要预先下载好。
一个360°录像机。
如何构建此应用?
不同于拥有矩形框架的常规视频,360视频是球形的。因此,我们首先需要创建一个球形屏幕来投影我们的360°视频。播放器(或观看者)将位于该球体内,并能够从任何方向观看视频。
下面的步骤将讲解它在罩下工作的原理,以使你感受到你有能力做出自己的更改。详细步骤说明,请参阅视频。
第一步,创建球体
首先,如果你是从头开始的话,我们先新建一个Unity项目(或者,如果你想把360视频播放器集成到已有项目上就新建一个场景)。把一个场景想象成视频游戏的这一个级别,而一个项目则是一个完整的游戏。
之后,在场景中添加一个球形物体,放置于场景的中心(坐标=0,0,0),半径为50(范围=50,50,50)。摄像机坐标应设置为0,0,0。摄像机就是播放器/观看者的眼睛,因此我们想要它位于球体的中心。摄像机放置于其他位置将会使得视频失真。
一旦摄像机放置到了球体的内部,后者在场景中就不再可见了。别担心,对此有相关解释!事实上,大多数的引擎默认情况下并不渲染3D对象的默认内侧。这是因为我们很少需要看见它们,渲染它们会是一种资源的浪费。下一步我们将解决此问题。
第二步:反转球体的法线
我们这种情况,的确需要从内部看到我们的球体。这是这个应用的整个关键所在,因此我们将要把内部转化成外部。
在Unity中,球体并不是真正意义上的球体(什么?我们一直都被骗了!),它们是由成千上万个极小的面组成的多边形。面的外侧是可见的,而内侧则不是。基于这个原理,我们将要编一个 45 33066 45 14985 0 0 3139 0 0:00:10 0:00:04 0:00:06 3139序像翻薄煎饼一样来翻转这些微小的面。
在3D几何学中,我们把这种转换称为《倒转法线》或者《反转法线》。
我们将要用到一个叫着色器的程序,它将应用于球体的材料特性中。在Unity中材料特性控制了对象的外观。着色器是一些小的脚本,基于从材料特性中采集的照明和信息来计算每个像素渲染的色彩。
因此要为球体创建一个新的材料特性,那么我们就需要给这个材料应用新的着色器。我们需要为这个着色器写自定义代码……但是不用担忧,你只需复制粘贴以下的代码:
这个小着色器将把球体的每个像素的内侧转变成外侧。现在,在我们的场景内,从内侧看起来我们的球体就像一个巨大的白球。下一步就是将这个白球变成一个视频播放器。
第三步:把你的360°视频放在球体中
这一步你手头上需要有一个360°mp4视频。将其导入项目中,然后将它拖入球体上,之后就是见证奇迹的时刻:一个“视频播放器”组件诞生了;另外,啊哈,视频可以准备播放了。
你可以玩玩像循环和音频之类的设置,另外它也支持视频流!
第四步:设置Google Cardboard
在这一步,我们将会让你真正体验到身临其境的感觉。那就是我们想要用VR头戴式显示器进行观看的原因,这就需要一个Google Cardboard。
我们想要利用GoogleVR SDK创造一种“立体”视图(屏幕将分成两部分,两侧都有一些鱼眼效果—每侧对应一只眼睛)。作用在每只眼睛上的鱼眼效果,加上纸板的塑料镜片的扭曲变形效果,给予了你有深度和沉浸感的幻觉:
为了把GoogleVR SDK添加到我们的项目中,请下载和导入这个插件,然后我们将调整一系列安卓设置:
转到顶部状态栏menu > File > Build Settings。如果你的新场景还未添加那么请添加,然后在支持平台列表选择安卓。
点击SwitchPlatform。当你第一次进行转换时这会花费一段时间。
点击PlayerSettings。组件出现在Instructor面板上
在播放器设置的指导者面板上,“其他设置”节下:
检查VirtualReality Supported。在Virtual Reality SDKs栏下,选择+图标,然后选择Cardboard将其加入列表。
在BundleIdentifier字段中输入包名称(例如,com.yourdomain.demo360)。名称必须是独一无二的,用于将我们的应用与Google Play商店中的其他应用区分开来。
将MinimumAPI Level下拉菜单设置为“Android 4.4 Kit Kat’(API level19)”。
之后,从项目浏览器内的GoogleVR\Prefabs文件夹中获取“GvrViewerMain”元素,并拖入到场景中。在检查器中,给出与球体中心相同的位置--(0,0,0)。
GvrViewerMain预设控制着所有VR模式设置,例如调整屏幕适应Cardboard的镜头。它还与你的手机的陀螺仪通信以追踪你的头部运动。当你转过头,相机和360°视频播放器内你看到的画面也会随之转动。
现在当视频播放时你就能够从所有方向去观看,屏幕分成两部分,以容纳Cardboard的两个镜头。
第五步:在安卓上运行此应用
最后一步,我们将在安卓手机上运行此应用并分享给朋友们!
有两种方式可以做到:
回到File> Build Settings。你可以使用USB数据线将一部安卓手机连接到你的电脑,点击Build & Run。这会直接将此应用安装到你的手机上。
另外一个选择是点击Build only。这不会在手机上安装此应用,而是生成一个APK文件。你可以通过email向任何想要尝试这个你刚创建的杰作的人分享这个APK。他们必须双击这个APK附件来将其安装到他们的手机上。
更上一层楼
恭喜,你已经制作了一个360°视频应用,离创建一个VR视频应用仅一步之遥!虽然这两个术语经常使用相似,但是360°和VR代表了两种不同的体验:
360°视频是用专用摄像机或多个摄像机组合从各个角度录制的。用户可以从任何想要的方向观看,但是没有交互式体验。
VR通常指的是一个用户可获得沉浸式体验的由计算机生成的环境。这是一种交互式体验:玩家除了可以从各个方向观看外,还可以进行移动和控制对象。
你的新应用可以作为创造一个更加丰富的VR体验的起点。Unity具有很多你可以利用的功能,比如添加3D元素或酷炫粒子效果✨来叠加和增强视频效果,或者投入某些互动元素。
你也可以在360°视频播放器内部设置一个全3D环境并把播放器作为一个天空盒。用户可以使用这个精巧的自动步行脚本在舞台布景仿真系统中导航。
制作一个精彩的VR故事很难,而开发VR应用不应该如此。
【版权声明】
原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权。
----------------------
今日推荐
添加小编微信,可享双重福利
1.加入GAD程序猿交流基地
获取行业干货资讯,观看大牛分享直播
2.领取60G独家程序资料库,地址在小编朋友圈
包括腾讯内部分享、文章教程、视频教程等全套资料
↓长按添加小编GAD苏苏↓