Unity教程|10分钟轻松制作360全景VR应用

发表于2017-06-25
评论0 7.6k浏览

随着科技的发展与进步,开发VR内容的硬件与软件成本也越来越容易被人接受。今天这篇教程,将教大家使用Unity在Google Cardboard平台上制作一款运行在Android设备上的360全景视频应用。

 

准备工作

在进行具体的开发之前,要先准备好所需的硬件与软件,具体需求如下:

  • 一部Android手机,必须具有陀螺仪,用于侦测头部移动,并且需要搭载Android KitKat 4.4及以上版本的操作系统;

  • 一部Cardboard眼镜;

  • Unity 5.6或以上版本;

  • GoogleVR SDK for Unity;

  • 一个360全景视频文件,需使用360全景相机拍摄。

 

实现步骤

普通视频的画面为矩形,而360全景视频为球形画面。所以首先需要创建一个球面用于投射360全景视频。玩家将位于球体内部,以便于从各个方向观看视频。下面来详细介绍实现步骤,大家也可以根据自己的需求进行更改。

 

1

制作球体

新建Unity项目,或者在已有Unity项目中添加新场景。在场景中新建球体,坐标设置为原点处(0, 0, 0),缩放为(50, 50, 50)。将相机位置也设为坐标原点,作为玩家的眼睛,这样看起来视频才不会变形。

 


将相机放置于球体内部后,会发现场景中无法看到球体了。这是因为很多引擎为了提高性能,都不会渲染模型内部。下面的步骤就来解决该问题。

 

2

翻转球体法线

 

由于需要看到球体内部才能观看投射的全景视频,所以接下来要将球体法线进行翻转。在Unity中,球体并非数学意义上的真正球体,而是由大量小的平面拼接而成的多面体。球体外部可见但内部不可见,所以需要使用着色器来翻转这些小平面。

 


编写着色器附加到球体所使用的材质上,材质用于控制物体在Unity中显示的外观。着色器则用于计算每个被渲染的像素点颜色,会用到材质的多种属性,例如光照等。

 

新建材质替换球体使用的默认材质,然后新建着色器赋给刚刚新建的材质。着色器代码如下:


 

该着色器会翻转球体的每个像素,现在从球体内部也可以看到它白色的材质。下面让球体变为视频播放器。

 

3

将全景视频映射到球体

将准备好的MP4格式全景视频导入项目,并将该文件直接拖拽到球体上,Unity会自动添加Video Player组件,现在这个球体已经可以播放360全景视频了。还可以尝试自己调整一些设置,如循环播放或音频设置等等,Unity 5.6的视频播放器还支持流媒体播放!


4

设置Google Cardboard

下面实现在VR眼镜中观看全景视频。使用GoogleVR SDK创建一个“立体”视图,屏幕将分为左右两边分别对应两只眼睛,两边都会有“鱼眼”效果,再结合Cardboard眼镜镜片的扭曲效果就会形成景深与沉浸感。

 


导入GoogleVR SDK,并更改一些Android相关的设置:

  • 依次点击Unity菜单项File – Build Settings,如果构建列表中不包含当前场景,则点击添加。选择Android作为构建的目标平台;

  • 切换平台完成后,点击Player Settings打开播放器设置;

  • 在播放器设置的“Other Settings”下勾选“Virtual Reality Supported”。在Virtual Reality SDKs下点击加号,选中Cardboard添加到列表;

  • 更改Bundle Identifier作为应用标识符,例如com.domain.demo360;

  • 将Minimum API Level设为“Android 4.4 ‘Kit Kat’ (API level 19)”。

 

设置调整完成后,将GoogleVR/Prefabs文件夹下的“GvrViewerMain”预制件拖拽到场景中,在检视视图中将其坐标设为球体中心(0, 0, 0)。GvrViewerMain预制件用于控制所有的VR模式设置,例如将屏幕调整为Cardboard眼镜模式等,它还可用来调用手机的陀螺仪以检测头部的移动。玩家头部移动时,场景中的相机也会随之移动。

 

5

在Android设备上运行应用

最后一步,将应用构建到Android设备上,用数据线连接Android设备,在Build Settings中点击Build & Run直接在设备上运行应用,或者先Build为APK再离线安装到设备上。



启动应用后将手机放入Cardboard眼镜,就可以360度观看视频了。

 

结语

使用Unity制作观看360全景视频的应用非常简单,整个过程不到10分钟就能完成。但今天教大家制作的全景视频并未加入与玩家交互的部分,欢迎大家在此基础上继续深入,加入一些互动操作或是粒子效果让整个应用更加丰富,制作出更佳美妙的沉浸式虚拟现实体验。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引