【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第1张图片
Cardboard

本文的流程是这样的:

  1. 准备
  2. 开始制作最简单的 VR 盒子
  3. 添加凝视事件
  4. 运行与测试
  5. 发布到手机并测试
  6. 结束
  7. 下载

本文的测试环境:

  • macOS Mojave 10.14.3 / MacBook Pro 2015
  • Unity 2018.3.9f1
  • VR 盒子:VR Shinecon Virtual Reality Glasses
  • 测试安卓机:360手机 N4S 骁龙版

准备

我们要制作的是一个最简单的 VR 盒子程序,只能看,不能点的那种,因为最简单的 VR 盒子就是这样,没有外设嘛。

本文开始之前呢,约定读者掌握了 Unity 的基础知识,比如创建项目,创建脚本之类的。

本文开始之前,你需要准备以下这些东西:

  • GoogleVRForUnity_*.unitypackage
  • Android SDK(如果需要的话)
  • Unity 2018.3.9f1

开始制作最简单的 VR 盒子

好啦,我们开始。

打开 Unity,创建一个名为 gvr-cardboard-test 的项目:

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第2张图片
gvr-cardboard-test

导入 GoogleVRForUnity_*.unitypackage

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第3张图片
导入 `GoogleVRForUnity_*.unitypackage`

将项目的平台设置为 Android 平台:


【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第4张图片
Switch Platform 到 Android

在项目中添加 vr sdk, 选中Edit/Project Setting/Player/XR Settings/Virtual Realty Supported,点击加号,在弹出的列表中,选择Cardboard

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第5张图片
项目中添加 vr sdk

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第6张图片
Cardboard

并且在 Other Settings/Minimum API Level 中选择 Android 4.4 'KitKat' (API level 19) 或者比它更高的:
【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第7张图片
选择 `Android 4.4 'KitKat' (API level 19) ` 或者比它更高的

项目的已经设置完毕。

此时我们的gvr-cardboard-test项目是一个空项目,如果现在就把它打包,在手机上运行的话:

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第8张图片
打包这个空项目

你会发现,此时屏幕已经分屏了,可以在盒子里面看了:


【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第9张图片
屏幕已经分屏

我们回到项目中,此时运行 Editor 的话,Game 窗口中什么也不会动,很不方便,我们加点东西可以在 Game 中直接调试程序(, Gvr.. 的预制体可以在 Assets/GoogleVR/Prefabs 中找到。):

  1. 添加一个 Cube 到项目中,并为其添加一个 EventTrigger
  2. 添加一个名为 player 的 GameObject,把主摄像头挂到它下面成为 player 的子对象,并在主摄像头上添加GvrPointerPhysicsRaycaster脚本。
  3. 主摄像头下添加一个 GvrReticlePointer 作为子对象
  4. Player 下添加一个 GvrControllerPonter 作为子对象,它作为主摄像头的兄弟对象存在。
  5. 项目中在添加 GvrEventSystem、GvrEditorEmulator、GvrControllerMain,看名字就知道这些是干嘛的是吧:Gvr 的事件系统,Editor 的模拟器,Gvr 的控制入口。
  6. 把主摄像头的位置改为 0 0 0,把 Clipping Planes 改为 0.03。
  7. 将 Cube 的位置设置一下,比如 位置为 1 0 2,旋转的角度嘛,就改为 45 45 0。


    【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第10张图片
    项目结构

此时我们运行 Editor,按住 option/alt 来移动鼠标的话,Game 窗口的行为将模拟头部的运动,你也可以按住control,再移动鼠标试试看:

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第11张图片
按住 `option/alt` 来移动鼠标,也可以按住`control`,再移动鼠标,Game 窗口的行为将模拟头部的运动

我们注意到,我们的视线指针,也就是那个圆圈,当它移动到 Cube 上就会变大,移开则变成一个小白点:


【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第12张图片
我们的视线指针,也就是那个圆圈,当它移动到 Cube 上就会变大,移开则变成一个小白点

它是白色的,可以修改一下颜色,让它变得更显眼些:选中GvrReticlePointer,在着色器的面板上修改下颜色,比如改成红色的:

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第13张图片
将视线指针改成红色

再次运行:


【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第14张图片

添加凝视事件

我们为 Cube 添加一些凝视事件,也就是视线进入,视线离开的事件;创建个脚本CubeController,并挂着 Cube 身上,代码如下:

using UnityEngine;

public class CubeController : MonoBehaviour
{
    public void SetGazedAt(bool gazedAt) => GetComponent().material.color = gazedAt ? Color.blue : Color.black;
}

在 Cube 的Event Trigger 中 点Add New Event Type,添加 Pointer Enter,当然选中 Cube 这个对象,把刚写的 SetGazedAt 函数选上,并打上对勾;同样的再添加个 Pointer Exit 事件,这次不要打对勾了:

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第15张图片
添加凝视事件

运行与测试

好啦,基本上搞定,运行程序试试效果:


【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第16张图片

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第17张图片

【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第18张图片

一切没问题。

发布到手机并测试

打包发布到手机上:


【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第19张图片
【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第20张图片
【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程)_第21张图片

结束

光看不能动,这种 VR 程序就没多大意思了,不要看下载个 VR 视频直接看哩(嘿嘿嘿)。不过,VR 盒子就是这样子的,不用其他外设,也算方便。

如果有了外设,比如说有一个按钮,就可以使用 Google VR SDK 中的 Daydream了。

下载

这里提供一下这个项目的源码,有需要的话可以在这里下载。

你可能感兴趣的:(【VR-Unity-Google VR SDK】Cardboard 入门——制作最简单的 VR 盒子(图文教程))