使用Unity的VR功能创作交互式媒体体验
VR的世界庞大而丰富,除了游戏外,还有360度全景视频、建筑、医疗和教育等方面精彩应用体验,而它们仅仅是冰山一角。
在本教程中,我们将了解360度全景视频,并在VR中模拟场景来克服恐惧症,学习使用Unity创作交互式媒体体验。
下载项目
本文提供示例项目下载学习,请使用Unity 2018.2或更高版本打开项目。
云盘下载: https://pan.baidu.com/s/1HoFzX1iZj2Kvq7iSRricEg
提取码: mk1d
设置项目
使用Unity打开项目文件,查看项目窗口,Razeware文件夹中提供了一些新文件。
Scenes文件夹:包含本教程的场景。
Sounds文件夹:包含风的环境音效。
Videos文件夹:包含360度全景视频。
从Razeware\Scenes文件夹打开Interactive Media A场景,查看层级窗口。
该场景包含一个定向光和简单的VRTK设置,控制器上没有任何额外功能。随后我们将为它加上360度全景视频,过程非常简单。
展示360度全景视频
360度全景视频是投射到球体上的沉浸式3D视频。360度全景视频通常使用一个全方位摄像机或一组摄像机录制,这类视频在近几年逐渐流行起来,我们甚至可以直接通过显示器或智能手机等显示设备,观看视频网站上的360度全景视频。
本项目中,玩家位于视频投影到的球体内部。Unity场景默认提供天空盒,其实是一个大型球体,我们不妨用它来进行操作,这种方式高效而简单。
首先,我们在Razeware\Videos文件夹找到要使用的视频:360_BavarianAlps。播放时,我们将看到下图画面。
视频看起来有点奇怪,这是因为它不像常规视频使用平面投影,而是使用了球面投影,类似于现代世界地图。
现在开始在Unity中进行处理。
我们在层级窗口新建一个Video Player对象,然后给它添加Audio Source组件,把360_BavarianAlps视频从Razeware\Videos文件夹拖到Video Player组件的Video Clip属性栏。
接下来,把Audio Source组件拖到Video Player组件的Audio Source属性栏,视频声音会改用Audio Source组件里的设定。
这个游戏对象会完成大部分工作,它将加载和播放带声音的视频。然而现在运行场景还不够,我们需要添加其它部分。
在Razeware\Render Textures文件夹创建新Render Texture渲染纹理,命名为360 Render Texture,特别需要修改的是Size,设置它与源视频的宽度和高度相同。
我们要用到的视频画面大小为4096×2048,通过选中视频,在检视窗口可以查看到该属性。
再次选中渲染纹理,把Size改为4096×2048。修改Depth Buffer为No depth buffer,我们不需要使用任何深度数据,禁用它能节省渲染纹理所需的一半内存,从64MB减少为32 MB。
选中Video Player对象,把360 Render Texture拖到该对象的Target Texture属性栏,这样Video player会把视频渲染到渲染纹理上。
现在还要让渲染纹理显示在天空盒上,我们需要创建一个新材质。我们在Razeware\Materials文件夹创建一个新材质,命名为360 Skybox Material。
我们将该材质的着色器改为Skybox/Panoramic,然后把Render Texture渲染纹理从Razeware\Render Textures文件夹拖到该材质的Spherical (HDR)属性框。
最后一步是指定新的天空盒材质。依次点击Window > Lighting > Settings,打开Lighting Settings光照设置窗口,把360 Skybox Material材质从Razeware\Materials文件夹拖到Skybox Material属性栏,之后关闭该窗口。
设置好后,运行场景,带上头戴式设备,向四周看看。
你是否从中感受到了新鲜的空气和微凉水雾?即便没有,也一定能体验到场景里的轻松氛围。
你可以在自己制作的游戏或体验中使用这类视频,例如:移动VR经常采用的一种技术是将精美的环境预渲染到360度全景视频上,然后像本文一样把视频用作天空盒。
另一种应用是让用户体验真实世界环境的感觉,你可以坐在爱尔兰酒吧内,登上富士山顶峰,或欣赏玻利维亚的盐沼,所有这一切只需几分钟就能实现。这种特殊用途目前已经在旅行机构流行使用起来了。
无论如何使用360度全景视频,它们都是很有价值的工具。下面我们将介绍高度模拟器,希望你没有恐高症。
高度模拟器
每个人都有害怕的东西,有的人害怕蜘蛛,有的人害怕狭小空间,有的人害怕细菌。大多数恐惧心理难以克服,通常又需要直面自己害怕的事物。
研究表明,让人们在虚拟环境中观看自己害怕的东西对治疗恐惧心理有很大帮助,所以我们可以使用VR来帮助人们克服恐惧症。
现在网上已经有不少治疗类VR应用程序,包括:帮助克服恐高症的应用,克服公众演讲恐惧症的应用,以及克服对蜘蛛、蛇和海洋生物恐惧症的应用等。
现在我们有了一定背景了解,现在来展示一下如何用Unity创建简单的高度模拟器。
首先,打开Chapter 11 – Interactive Media B场景,然后进行观察。
该场景模拟了一个小型岛屿城市,城市之中有一座高塔,玩家会在塔的顶部附近,向下俯瞰城市。
为了实现规模感,玩家一开始会在地面,然后被传送到塔的顶部。这里提供了简单的VRTK设置,放在塔的底部。
为了使玩家达到塔顶部,我们要用到DestinationPoints预制件,把该预制件从VRTK\Prefabs文件夹拖到层级窗口,将Position属性设为(X:0, Y:0.32, Z:-3)。
现在地面部分就加好了“胶囊”传送点。
为了让玩家到塔上去,我们需要新游戏对象来标记传送位置。创建新一个游戏对象,命名为High Point,把Position属性改为(X:10.5, Y:144, Z:-2)。
选中DestinationPoint对象,把High Point对象拖到Destination Location属性栏。
这样会创建单向传送过程,使玩家到达塔的顶部位置。
为了实现真正的沉浸式体验,我们在玩家到达塔的顶部时听到风声,为此我们可以使用项目文件提供的音频进行循环播放。
我们创建一个新Audio Source对象,命名为AmbientWind,然后把它的Position属性改为(X:0, Y:144, Z:0)。把AmbientWind音效从Razeware\Sounds文件夹拖到AudioClip属性栏。
最后勾选Loop复选框,使音频循环播放。
这样就完成了。请运行项目,传送到塔的顶部,然后走到塔的边缘,小心地向下观察效果。我们可以基于该场景进行构建,添加更多逼真的模型和天气效果,增强总体感觉。
小结
本文中,我们学习了如何展示360度全景视频,以及在VR中模拟出用以克服恐惧症的场景。更多Unity教程学习,尽在Unity Connect平台(Connect.unity.com)。
下载Unity Connect APP,请点击此处。 观看部分Unity官方视频,请关注B站帐户:Unity官方。
推荐阅读
Childish Gambino借助Unity为粉丝创造沉浸空间
使用Unity 2019.1中的Timeline Signals
Unite 2019 | Unity中的实时光线追踪技术剖析
有奖调查
Unity Hub 2.0中文版以及Unity中文版文档已发布,请参与有奖调查,反馈你的意见,以便我们进一步改进。更多详情,请访问此处。
点击“阅读原文”访问Unity Connect