CG游麟网官方站
查看: 2442|回复: 13

【VR游戏开发干货】VR教程如何创建一个VR项目

[复制链接]

46

主题

49

帖子

2353

积分

名动江湖

Rank: 6Rank: 6

麒麟币
2304
任务币
0
威望
0
贡献
42
主题
46
在线时间
6 小时
发表于 2016-3-2 15:08:38 | 显示全部楼层 |阅读模式

北京时间2016年1月7日凌晨,Oculus正式开放对首款消费版Rift产品CV1的预订。599刀的价格让很多VR粉丝心头一紧,不过想想第一代iPhone的价格也是这样,只能期待后续的版本降价了。

  筑基

  为了准备好学习使用Unity开发VR应用,我们首先要检查下自己的电脑硬件和软件配置是否满足要求。简单来说,显卡要NVIDIA GTX970或AMD290以上,CPU要Intel i5-459以上,内存8GB以上,要有两个USB3.0接口,一个USB2.0接口,一个HDMI 1.3接口。

  操作系统比较坑爹,不支持Mac,也不支持Linux。支持Win7,Win8,Win10。

  当然,还要把自己的显卡驱动升级到最新版本。

  Oculus官方的检测地址:

  http://oculus.us5.list-manage.co ... 47&e=86f0296884

  一旦完成了这种烧钱的工作,就该安装Unity了。注意在打开Unity前要把DK2连接好并开启。 在继续之前,打开Oculus Configuration Utility应用,并检查Demo Scene可以正常运行。注意在运行Demo Scene之前看可能需要在Oculus Configuration Utility中设置一个新用户。

  创建第一个VR项目

  接下来我们将使用Unity创建一个简单的VR项目demo,其效果是在VR头盔中观察一个立方体。如果你想研究更多VR示例,不妨下载我们在上一篇教程中提到的VR示例项目(Asset Store:https://www.assetstore.unity3d.com/en/#!/content/51519)。

  Step 1

o6TJ-fxpvysv5092231.jpg

  打开Unity,创建一个新的空项目。

  说明一下,我当前用的Unity版本是5.3.1f1,可能你看到这篇教程的时候又已经升级换代了。

  Step 2

  在Unity的菜单中选择Fiel- Build Settings,并选中PC,Mac& Linux Standalone。

KLti-fxpvysx1821649.jpg

  Step 3

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

-TdP-fxpvysx1821682.jpg

  Step 4

  保存界面(File- Save Scene,或是使用快捷键)。

  Step 5

  在菜单中选择Edit- Project Settings – Player,在”Other Settings“部分勾选”Virtual Reality Supported”

Npp8-fxpvysx1821696.jpg

  Step 6

  点击Unity界面上的Play按钮进入Play模式。

  如果之前的设置没有问题,现在你应该可以通过DK2看到这个场景,四处看看,Unity中的摄像机将自动根据DK2的位置和旋转变化反应。

  出错了怎么办?

  如果你没有在DK2中看到期望的场景,那么检查以下的事项:

  1、确保你在打开Unity项目前就已经把DK2接好并且开启了;

  2、打开Oculus自带的Oculus Configuration Utility,看看Demo Scene是不是可以正常运作;

  3、更新你的显卡驱动到最新版本;

  4、确保你在电脑上装了最新的Oculus Runtime 0.8,或更高版本;

  当然,如果还是有问题,可以到论坛里面参与讨论。(Virtual Reality:http://forum.unity3d.com/forums/virtual-reality.80/

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

  虽然VR应用开发和标准Unity应用开发很相似,不过还是有些区别需要注意的。

  1、编辑器中显示的帧速(Frame rate)

  当你通过编辑器查看项目时,注意体验上可能有些延迟,因为电脑需要将同样的内容渲染两次。所以在实际测试项目的时候,最好创建一个可执行版本,在测试设备上实际体验。

  2、摄像机的移动

  注意,我们不能在Unity中直接移动VR摄像机。如果你希望调整摄像机的位置和旋转,需要确保将它设置为其它游戏物体GameObject的子物体,然后通过所依附的物体进行移动。

NoW4-fxpvytf8811065.jpg
关于这一点,可以查看VR Samples项目中的Flyer和Maze场景。

  3、相机节点

  左眼和右眼的摄像机并不是由Unity创建的。如果你在开发中需要获取这些节点的位置,则必须使用InputTracking类。

  如果你想要获取场景中眼睛的不同位置(比如测试时),请使用下面的示例脚本,并将其attach到摄像机上。

  C#脚本

  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 it

  if (eyes != null && eyes。transform.parent != transform)

  {

  eyes = null;

  }

  // If we don’t have an eye anchor, try to find one or create one

  if (eyes == null)

  {

  Transform t = transform.Find(eyeAnchorNames);

  if (t)

  eyes = t.gameObject;

  if (eyes == null)

  {

  eyes = new GameObject(eyeAnchorNames);

  eyes。transform.parent = gameObject.transform;

  }

  }

  // Update the eye transform

  eyes。transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);

  eyes。transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);

  }

  }

  }

  4、VR中的图像效果(Image Effect)

  在VR项目中使用众多图像效果是很奢侈的事情。考虑到你需要两次渲染同一个场景(每只眼睛一次),因此很多当前经常使用的图像效果对VR应用来说会很浪费,会严重影响游戏的运行帧速。

  因为VR将用户的眼睛置入一个虚拟的空间,因此部分图像效果对VR来说没有任何意义。举例来说,深度视角、模糊效应和镜头光晕效果对VR来说没有任何意义,因为在现实世界中我们是看不到这些效果的。不过如果以后VR头戴设备可以支持眼动跟踪,那么深度视角可能会有意义。

  不过有些效果还是可以考虑使用的:比如抗锯齿是有用的(特别是考虑到某些头戴设备的低分辨率),色彩分级也很有用(关于这一点可以查看这个链接:Color Grading with Unity and the Asset Store:http://blogs.unity3d.com/2015/05 ... nd-the-asset-store/),对有些游戏来说Bloom会有用。不过在使用任何效果之前,最好先在游戏中实际测试下有没有用。

  Unity自身提供了很多图像效果(Assets-Import Package-Effects),此外Asset Store里面也提供了很多效果,比如Colorful,Chromatica,Amplify Color,还有更多。

  5、Render Scale

  根据VR互动应用场景的复杂度和所运行的硬件环境,你可能需要更改render scale设置。通过此项设置可以调整镜头校正前texel:pixel的比率,这样可以牺牲游戏性能来换取画面的清晰度。

  这项设置应该通过代码进行,可以参考这里:

  http://unity3d.com/cn/VRSettings.renderScale

  通过使用以下代码可以改变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 performance

  void Start ()

  {

  VRSettings.renderScale = m_RenderScale;

  }

  }

  }

  关于这项设置,可以参考我们的VR Samples,具体示例是Scenes/Examples/RenderScale场景。此外在MainMenu场景中也有该项设置的应用。

  更改render scale的效果示例如下:

  Unity的默认render scale是1.0,效果如下:

ZfrW-fxpvysv5092310.jpg

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

XK9G-fxpvytf8811145.jpg

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

YvAF-fxpvytf8811154.jpg

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

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


回复

使用道具 举报

17

主题

420

帖子

544

积分

声名鹊起

Rank: 4

麒麟币
124
任务币
35
威望
0
贡献
358
主题
17
在线时间
61 小时

最佳新人忠实会员

发表于 2016-3-2 21:14:49 | 显示全部楼层
楼主我爱你
回复 支持 反对

使用道具 举报

0

主题

434

帖子

1805

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1355
任务币
0
威望
0
贡献
0
主题
0
在线时间
19 小时
发表于 2016-3-3 09:14:56 | 显示全部楼层
CG游麟网真是个很好的学习天堂!
回复 支持 反对

使用道具 举报

0

主题

602

帖子

7843

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
7221
任务币
0
威望
0
贡献
2
主题
0
在线时间
276 小时
发表于 2016-3-3 10:04:56 | 显示全部楼层
很有意思的教程,多谢分享
回复 支持 反对

使用道具 举报

3

主题

259

帖子

637

积分

声名鹊起

Rank: 4

麒麟币
368
任务币
0
威望
0
贡献
0
主题
3
在线时间
12 小时
发表于 2016-3-8 23:48:40 | 显示全部楼层
呵呵呵,很不错!
回复 支持 反对

使用道具 举报

41

主题

436

帖子

563

积分

声名鹊起

Rank: 4

麒麟币
123
任务币
1
威望
0
贡献
0
主题
41
在线时间
16 小时
发表于 2016-3-9 00:59:24 | 显示全部楼层
这篇的确是好教程,学习了
回复 支持 反对

使用道具 举报

5

主题

3975

帖子

5955

积分

誉满一方

Rank: 8Rank: 8

麒麟币
1992
任务币
235
威望
0
贡献
0
主题
5
在线时间
321 小时

忠实会员最佳新人

发表于 2016-3-9 09:37:06 | 显示全部楼层
CG游麟网真的很棒,我喜欢。
回复 支持 反对

使用道具 举报

556

主题

8004

帖子

3万

积分

垂名青史

Rank: 16Rank: 16Rank: 16Rank: 16

麒麟币
23221
任务币
200
威望
0
贡献
0
主题
556
在线时间
133 小时
发表于 2016-3-9 09:46:31 | 显示全部楼层
这篇的确是好教程,学习了
回复 支持 反对

使用道具 举报

0

主题

306

帖子

1357

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1040
任务币
0
威望
0
贡献
0
主题
0
在线时间
97 小时
发表于 2016-8-2 22:33:58 | 显示全部楼层
调调的~~谢谢风向~~
回复 支持 反对

使用道具 举报

0

主题

306

帖子

1357

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1040
任务币
0
威望
0
贡献
0
主题
0
在线时间
97 小时
发表于 2016-8-4 22:51:55 | 显示全部楼层
duang,一大波资源来也!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
客服QQ:
47413829
新QQ群:
418757022
在线时间:周一至周五
9:00-22:00 Email:
47413829@qq.com
举报:网盘资源失效
在线客服
快速回复 返回顶部 返回列表