全景资讯 News这里有最新、最快、最全的全景行业动态

当前位置:全景首页 > 全景资讯 > 360/720全景技术知识 >

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

日期:2018-03-28 / 人气:

随着科技的发展与进步,开发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分钟就能完成。但今天教大家制作的全景视频并未加入与玩家交互的部分,欢迎大家在此基础上继续深入,加入一些互动操作或是粒子效果让整个应用更加丰富,制作出更佳美妙的沉浸式虚拟现实体验。

编辑:优品君