为了准备好学习使用Unity开发VR应用,我们首先要检查下自己的电脑硬件和软件配置是否满足要求。简单来说,显卡要NVIDIA GTX970或AMD290以上,CPU要Intel i5-459以上,内存8GB以上,要有两个USB3.0接口,一个USB2.0接口,一个HDMI 1.3接口。
注意在打开Unity前要把DK2连接好并开启。 在继续之前,打开Oculus Configuration Utility应用,并检查Demo Scene可以正常运行。注意在运行Demo Scene之前看可能需要在Oculus Configuration Utility中设置一个新用户。

一、创建第一个VR项目

接下来我们将使用Unity创建一个简单的VR项目demo,其效果是在VR头盔中观察一个立方体。如果你想研究更多VR示例,不妨下载我们在上一篇教程中提到的VR示例项目( Asset Store )。
Step01:打开Unity, 创建一个新的空项目。 我当前用的Unity版本是5.3.1f1
Step02: 在Unity的菜单中选择Fiel- Build Settings,并选中PC,Mac& Linux Standalone

Step03:
在场景中创建一个新的立方体,从菜单中选择Game Object - 3D Object -Cube ,通过Translate工具把立方体放到默认的Main Camera 前面,类似下面。

Step 04:保存你的场景
Step 05: 到 Go to Edit > Project Settings > Player里去检查"Virtual Reality Supported"是否勾选。如下图:

Step06:点击Unity界面上的Play按钮进入Play模式。
如果之前的设置没有问题,现在你应该可以通过DK2看到这个场景,四处看看,Unity中的摄像机将自动根据DK2的位置和旋转变化反应。

二、出错了怎么办?

如果你没有在DK2中看到期望的场景,那么检查以下的事项:
1.确保你在打开Unity项目前就已经把DK2接好并且开启了。
2.打开Oculus自带的Oculus Configuration Utility,看看Demo Scene是不是可以正常运作
3.更新你的显卡驱动到最新版本
4.确保你在电脑上装了最新的Oculus Runtime 0.8,或更高版本。

三、关于VR开发的一些有用信息:

虽然VR应用开发和标准Unity应用开发很相似,不过还是有些区别需要注意的。
1.编辑器中显示的帧速(Frame rate)
当你通过编辑器查看项目时,注意体验上可能有些延迟,因为电脑需要将同样的内容渲染两次。所以在实际测试项目的时候,最好创建一个可执行版本,在测试设备上实际体验。
2.摄像机的移动
注意,我们不能在Unity中直接移动VR摄像机。如果你希望调整摄像机的位置和旋转,需要确保将它设置为其它游戏物体GameObject的子物体,然后通过所依附的物体进行移动。

关于这一点,可以查看VR Samples项目中的Flyer和Maze场景。
3.相机节点
左眼和右眼的摄像机并不是由Unity创建的。如果你在开发中需要获取这些节点的位置,则必须使用InputTracking类。
如果你想要获取场景中眼睛的不同位置(比如测试时),请使用下面的示例脚本,并将其attach到摄像机上。

using UnityEngine;
using UnityEngine.VR;public class UpdateEyeAnchors : MonoBehaviour
{GameObject[] eyes = new GameObject[2];string[] eyeAnchorNames ={ "LeftEyeAnchor", "RightEyeAnchor" };void Update(){for (int i = 0; i < 2; ++i){// If the eye anchor is no longer a child of us, don't use itif (eyes[i] != null && eyes[i].transform.parent != transform){eyes[i] = null;}// If we don't have an eye anchor, try to find one or create oneif (eyes[i] == null){Transform t = transform.Find(eyeAnchorNames[i]);if (t)eyes[i] = t.gameObject;if (eyes[i] == null){eyes[i] = new GameObject(eyeAnchorNames[i]);eyes[i].transform.parent = gameObject.transform;}}// Update the eye transformeyes[i].transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);eyes[i].transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);}}
}

4.VR中的图像效果(Image Effect)
在VR项目中使用众多图像效果是很奢侈的事情。考虑到你需要两次渲染同一个场景(每只眼睛一次),因此很多当前经常使用的图像效果对VR应用来说会很浪费,会严重影响游戏的运行帧速。
因为VR将用户的眼睛置入一个虚拟的空间,因此部分图像效果对VR来说没有任何意义。举例来说,深度视角、模糊效应和镜头光晕效果对VR来说没有任何意义,因为在现实世界中我们是看不到这些效果的。不过如果以后VR头戴设备可以支持眼动跟踪,那么深度视角可能会有意义。
不过有些效果还是可以考虑使用的:比如抗锯齿是有用的(特别是考虑到某些头戴设备的低分辨率),色彩分级也很有用(关于这一点可以查看这个链接:Color Grading with Unity and the Asset Store ),对有些游戏来说会有用。不过在使用任何效果之前,最好先在游戏中实际测试下有没有用。
Unity自身提供了很多图像效果(Assets-Import Package-Effects),此外Asset Store里面也提供了很多效果,比如Colorful,Chromatica,Amplify Color,还有更多。
5.Render Scale
根据VR互动应用场景的复杂度和所运行的硬件环境,你可能需要更改render scale设置。通过此项设置可以调整镜头校正前texel:pixel的比率,这样可以牺牲游戏性能来换取画面的清晰度。
通过使用以下代码可以改变render scale的设置:

using UnityEngine;
using System.Collections;
using UnityEngine.VR;namespace VRStandardAssets.Examples
{ public class ExampleRenderScale : MonoBehaviour{[SerializeField] private float m_RenderScale = 1f;              //The render scale. Higher numbers = better quality, but trades performancevoid Start (){VRSettings.renderScale = m_RenderScale;}}
}

关于这项设置,可以参考我们的VR Samples,具体示例是Scenes/Examples/RenderScale场景。此外在MainMenu场景中也有该项设置的应用。
更改render scale的效果示例如下:
Unity的默认render scale是1.0,效果如下:

如果将render scale设置成1.5,可以看到显示效果更锐利:

接下来把renderscale设置成0.5,可以看到像素化很严重:

根据游戏场景的不同,可以考虑降低render scale来提升游戏运行性能,或者通过增加render scale的数值让画面效果更锐利,但会以牺牲游戏运行性能作为代价。

好了,看到这里,你应该知道如何在Unity项目中整合VR,如何设置游戏中摄像机的移动,以及和非VR游戏相比应该如何使用图像效果。

Unity 5.3制作VR项目相关推荐

  1. unity 使用socket制作局域网项目--激流勇进

    公司接了一个多人划船项目,开始使用一个程序来制作的,有多个相机,后面因为水面的反射问题,无法实现水面在两个相机的画面里有不同的反射效果,故只能使用联机模式.参考书籍<unity3d网络游戏实战( ...

  2. 使用Unity+HTC VIVE做VR时如何创建用户体验较强的菜单

    该文章仅作为本人工作过程中的开发笔记,难免有不严谨不深刻的地方,适合刚入门Unity+HTC VIVE新手制作VR菜单时作为参考,望大神勿喷. 在使用Unity+HTC VIVE制作VR游戏或者严肃游 ...

  3. 如何在Unity中制作VR全景动画

    超简单的引言 本教程介绍的是如何一个人制作出像模像样的VR全景动画.笔者没有去详细的研究过动画的制作方式,或者说根本就不了解啊,所以本文章只是门外汉的一次自嗨,请勿认真,作为一种参考即可. 一 总览 ...

  4. unity的vr场景怎么做_怎么运用Unity制作VR全景漫游

    展开全部 前言 本文介绍了两种方法来制作VR场景: 方法一62616964757a686964616fe58685e5aeb931333363393038:通过6张小图搭建的VR场景 方法二:通过一张 ...

  5. unity的vr场景怎么做_如何运用Unity制作VR全景漫游?

    看文百篇,不如实操一遍.今天给大家分享的是通过Unity制作VR全景漫游的过程与方法,大家感兴趣可以动手试试. 前言 本文介绍了两种方法来制作VR场景:方法一:通过6张小图搭建的VR场景 方法二:通过 ...

  6. unity 使用姿态传感器制作互动项目--太极平衡桩

    使用深圳维特智能WT931姿态传感器来制作互动项目,就是一个人站在平衡桩上,同步控制场景中的迷宫模型旋转,从而让小球进入洞里面.画面大概是这样的. 需要使用WT931姿态传感器和三合一模块,以及长一点 ...

  7. 【Unity 2017.3 制作安卓2D单机手游】2.这就开始做

    这就开始做 关于Unity的介绍以及如何创建项目,我就不多说了,因为百度很容易.现在就开始直接做,因为我也是要边做边学,所以必定会有很多不足.大佬们觉得哪里不对,欢迎指正! 开发环境 windows1 ...

  8. 《基于Qt的VR编辑器开发》(Yanlz+Unity+SteamVR+5G+AI+VR云游戏+Qt+编辑器+跨平台+人机交互+触发事件+立钻哥哥+==)

    <基于Qt的VR编辑器开发> <基于Qt的VR编辑器开发> 版本 作者 参与者 完成日期 备注 YanlzFramework_Qt_V01_1.0 严立钻 2019.09.04 ...

  9. 浅谈Unity与VR产业,用Unity开发第一款VR应用

    部分内容为整合与装载 浅谈VR VR(Virtual Reality的缩写,中文翻译-虚拟现实)概念早在80年代初就被提出来的,其具体是指借助计算机及最新传感器技术创造的一种崭新的人机交互手段. 中国 ...

  10. Unity 4 3 制作一个2D横版射击游戏 2

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在上一篇 ...

最新文章

  1. Swift中文教程(五)--对象和类
  2. linux字符设备led驱动源码,字符设备驱动控制LED灯
  3. [改善Java代码]适时选择不同的线程池来实现
  4. pandas读取excel,设置默认读取类型
  5. Touch the AppCache manifest file
  6. .call() 与 .apply() 的用法及区别
  7. Android学习笔记(二)基础知识(1)
  8. 震惊!几道Python 理论面试题,Python面试题No18
  9. django3安装rest_framework,并测试
  10. html日期控件默认设置为当天日期,以及获取当前日期前的指定天数
  11. Codeforces 1092D1. Great Vova Wall (Version 1)
  12. 如何管理好技术团队的十六点建议
  13. C++后台开发面试题总结(涉及C++基础、多线程多进程、网络编程等)
  14. 如何git命令创建一个本地分支,并提交到远程(remote)
  15. echarts制作区域地图。
  16. Python小白逆袭大神-结营心得-alading
  17. 机械臂——arduino、marlin固件、printrun软件
  18. p5.js动态图形临摹以及拓展
  19. [视频整理]使您成为windows专家的一些学习习惯
  20. 信息系统安全等级保护、安全策略设计原则及安全方案笔记

热门文章

  1. c语言中switch0,C语言switch0.ppt
  2. 给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1,N=3时,S=1+11+111=123。
  3. 命令与征服:红色警戒3 解决游戏启动时界面黑屏,但右上角有五角星电脑卡死的问题——hosts
  4. 【图解算法使用C++】1.2 生活中的算法
  5. linux系统时间编程(2) 各种时间标准GMT、UTC、世界时、TAI
  6. Syntax error, annotations are only available if source level is 1.5 or greater错误
  7. 18-Halcon机器视觉实例入门:图像滤波-各向异性滤波
  8. 青春期发育阶段的测量
  9. android——java.lang.IllegalStateException: Fatal Exception thrown on Scheduler
  10. 帝国cms安装 mysql支持错误_帝国CMS安装时 mysql出错。