VR移动开发(二)-Unity3D for VR

作者: 暗尘随码去 | 来源:发表于2017-04-21 15:30 被阅读438次

    上一篇文章简单的介绍了下VR以及在安卓开发中简单的使用VR,但局限性也很明显就是只能看一些简单的全景图和VR视频,想要做到更为复杂的沉浸在我们自建3d场景中以及交互功能只能借助Unity3D了。因此又开始了学习Unity3D之路,因为不像安卓,iOS那样资料多且系统,学起来也是着实费力。这篇文章就是记录下简单的Unity3D环境搭建及借助一些免费的Unity资源并进行简单的交互。

    效果图

    vr_scene.gif

    实现这个效果我们的方法和上一篇文章一样分别借助Google VR sdk和暴风VR SDK来完成。

    1.Google VR sdk简单使用

    • 向Unity项目中导入Google VR Unity SDK。Google VR Unity SDK下载
    • 在Unity Asset Store中找到一个合适的免费资源包,当然我们也可以自建场景。
    • 调用Google VR相机组件,实现双眼分屏的VR模式。
    • 通过Xcode将VR app部署到iPhone当中。
    • 在VR眼镜中欣赏。

    实现过程

    • 下载完 Google VR sdk直接导入我们的Unity中可以看到我们项目里面多了'GoogleVR'和'Plugins'两个文件夹,这里就是我们要用的谷歌VR环境可以使我们的场景变成双屏模式以及打包成安卓和iOS包使用。
    C4C627F2-942E-424A-9E38-5A36932DF9F7.png
    • Google VR Unity SDK布置完毕,下面我们来找一些现成的环境素材。点击 Asset Store 面板(没有的话可以通过Window>Asset Store 找到),在内嵌页面的右侧导航当中找到 3D Models > Enviroments ,筛选并找到自己喜欢的免费模型,确认资源中包含.unity场景文件,例如下图当中我所选用的Handpainted Forest Environment Free Sample资源包所提供的Scene
    找场景.png 下载导入场景.png
    • 打开我们下载的scene
    打开demo scene.png
    • 想要置身于3D环境当中以第一人称视角观察世界,我们需要“眼睛”,即Unity提供的Camera控件。下载的场景中已经包含了Camera控件,在 Project 面板的资源列表中找到 Assets > GoogleVR > Prefabs 文件夹,将其中的 GvrViewerMain 拖放到项目中(这一步骤相当于为Unity项目添加Google VR模式,包括视觉样式及互动机制等等,也是最重要的一步)。
    VR_camera.png
    • 点击顶部的 Play 按钮,界面会自动切换到Game模式。因为我们下载的场景包含移动跳跃脚本因此我们可以在场景中移动、另外Camera下的GvrReticle是我们的准星组件,此时可以按住键盘上的 alt 或 control 键,同时移动鼠标,测试一下主视角。
    效果.png

    2.利用暴风sdk实现这个效果(了解了谷歌sdk在开发中的作用那么暴风sdk的使用也就不难理解了)

    • 第一步同样向Unity项目中导入MojingSDK。MojingSDK下载
      sdk中提供了许多demo我们可以打开体验体验。
    mojingsdk.png
    • 将MojingMain代替我们场景中的Main Camera
    replace.png
    • 运行效果同Google VR sdk。
    • 如果打包成安卓apk在手机上运行的话我们还可以加上手柄控制移动代码,这里因为我打包的是iOS安装包,而暴风魔镜不支持苹果的蓝牙手柄,所以也就没试,不过贴上手柄控制的关键代码。
    using UnityEngine;  
    using System.Collections;  
    using MojingSample.CrossPlatformInput;//引入暴风魔镜跨平台输入类库  
      
    public class MojingInput : MonoBehaviour {  
      
        // Update is called once per frame  
        void Update () {  
      
            if (CrossPlatformInputManager.GetButtonDown ("LEFT")) {  
                //十字键左键按下  
            }  
            if (CrossPlatformInputManager.GetButtonDown ("RIGHT")) {  
                //十字键右键按下  
            }  
            if (CrossPlatformInputManager.GetButtonDown ("UP")) {  
                //十字键上键按下  
            }  
            if (CrossPlatformInputManager.GetButtonDown ("DOWN")) {  
                //十字键下键按下  
            }  
      
            if (CrossPlatformInputManager.GetButtonUp ("OK")) {  
                //手柄OK键抬起  
            }  
            if (CrossPlatformInputManager.GetButtonUp ("C")) {  
                //手柄返回键抬起  
            }  
            if (CrossPlatformInputManager.GetButtonUp ("MENU")) {  
                //手柄菜单键抬起  
            }  
            if (CrossPlatformInputManager.GetButtonUp ("CENTER")) {  
                //十字键中心抬起  
            }  
            //获取手柄摇杆水平摆动值  
            float x = CrossPlatformInputManager.GetAxis("Vertical");  
            //获取手柄摇杆竖直摆动值  
            float y = CrossPlatformInputManager.GetAxis("Horizontal");  
        }  
    }  
    

    3.打包运行在真机上

    • 点击菜单栏中的 File > Build Settings :
    • 在 Build Settings 窗口中,选择 Platforms 列表里的“ iOS ”,然后点击列表下方的 Switch Platform 按钮:
    • 等待素材导入完成,然后点击 Build Settings 窗口中的 Player Settings 按钮,此时右侧的 Inspector 面板当中会出现 PlayerSettings 选项区,点击“ Other Settings ”使其展开,并找到“ Bundle Identifier ”字段,在这里为你的app输入一个合法的安装包名称,只要遵循“com.<公司或组织名称>.<app名称>”的形式即可:
    • 接下来要构建用于部署到iOS设备当中的Xcode项目。在之前的 Build Settings 窗口中点击 Build 按钮,选择恰当的保存位置及Xcode项目路径名称,点击 Save 按钮:
    • 在Finder中找到刚刚构建好的Xcode项目文件夹,打开其中的.xcodeproj文件。用USB线连接好你的iPhone,在Xcode顶部的选项栏中选择自己的iPhone设备,点击Run按钮,等待项目运行到真机上就可以戴着眼镜欣赏了(虽然看一会有点晕但还是不错的😝)。

    相关文章

      网友评论

      • 月光下的铃兰:想问下你的暴风sdk里第一人称的那个案例用键盘的wasd键可以控制移动吗?
        暗尘随码去:@月光下的铃兰 好像是可以动的
        月光下的铃兰:@暗尘随码去 不是,我的意思是我看示例的那个场景里面有一个UnityInput的脚本,按下空格键是可以跳跃的,按wasd就不能移动,我看过一个视频里也是可以移动的,所以我想是不是我Unity的问题,试了好几个版本都不行
        暗尘随码去: @月光下的铃兰 可以啊,你重新写个脚本挂在上面不就可以了么

      本文标题:VR移动开发(二)-Unity3D for VR

      本文链接:https://www.haomeiwen.com/subject/buedzttx.html