GoogleVR SDK For Unity 001:Get Start

(本人unity和vr新手,如有错漏,请大家多多指教)

google VR官网,可自行翻墙,然后略过下面大部分内容~ 。 ~

google VR分为Cardboard和Daydream,Cardboard是早期的VR解决方案,而Daydream可以说是Cardboard的进阶版,提供了更加高质量的移动虚拟现实体验。不过Daydream要求比较高(android7.0+商家自定义的daydream设备)。

google给unity,android,ios和unreal都提供了相应的sdk,大家可以根据需求使用不同的sdk,下文采用unity做google VR的开发。

我们来看下文档。

1. Google VR SDK For Unity

google的sdk如何帮助我们快速地开发vr应用:

  1. 使用头部追踪
  2. 并行的立体渲染(不太会翻译,原文:Side-by-side stereo rendering)
  3. 探测到用户的意图通过trigger 或者 controller
  4. 自动的立体配置(得到双目的vr视图)
  5. 对vr眼镜的镜片造成的扭曲做修正
  6. 中间有一个竖线作为标志,帮助你把手机放入眼镜的时候,可以更加准确。
  7. 陀螺仪的自动校准

还有还有:

  1. daydream控制器的支持
  2. 空间化的媒体渲染
  3. 有一些预制件和脚本给入门玩家参考和使用
  4. 在unity内运行游戏时,可以通过按下alt/control键加鼠标的移动,模拟用户的头部移动
  5. 一个用来显示fps的预制件,可以检测你程序的渲染效果

unity和android studio(unity 可以直接生成android apk,不需要用到android原生的话,不需要用android studio)的下载和配置就不说了~ 。 ~

下载unity的google VR sdk。给个百度云(GoogleVRForUnity.unitypackage)

2. Get Start

  1. 在unity开启一个3d的项目
  2. 在unity编辑器的界面中,选择Assets -> Import Package -> Custom Package。选择googleVR SDK(GoogleVRForUnity.unitypackage )

然后选择Import

  1. 选择Assets -> Google VR -> Demos -> Scenes下面看到有四个场景。大家可以自行参考下。

Stereo Rendering(立体渲染?空间渲染?)

要开启Stereo Rendering,可以添加GVRViewerMain这个预制件到你的scene中,或者添加GvrViewer这个脚本到一个scene中存在的物体中。添加了以后运行游戏是酱紫的:


Stereo Rendering可以提供这样的功能。

  1. 模拟头部追踪。在游戏模式中,你可以用鼠标去控制镜头,得到用头追的效果。按住ALT,然后移动你的鼠标,可以模拟头部转动。按住Control键,移动鼠标,模拟头部左右倾斜。
  2. 如果是在开发daydream项目,可以在游戏模式中使用Controller Emulator(controller emulator让我们用第二台安卓手机去代替daydream设备)。
  3. 如果是在开发cardboard项目,在游戏模式中点击鼠标,可以模拟选择一个cardboard viewer。
  4. 失真纠正。由于app真机运行的时候,会有可能出现失真。所以在游戏模式中,摄像机就会做一些失真纠正了。在游戏模式中,可以在GvrViewer properties中选择模拟一种手机模式和视图模式去做模拟。

User Interactions(和用户交互)

在VR应用中和用户交互的方式不同于普通的手机应用。在VR模式中,用户不可以在手机屏幕中随便点击。UI元素必须要是立体的,并且可以让用户清晰地看到。而且交互的元素应该环绕着用户,不只是在用户的正前方,用户一转头就啥都看不到是一种很差的体验。Google VR SDK for Unity有一些预制件和脚本可以帮助我们实现用户与界面进行交互。

daydream控制器

添加GvrControllerMain预制件到你的scence中去实现通过daydream控制器去输入的功能。详情参考Controller API

Gaze(注视)

在cardboard应用中,用户可以通过注视某一个物体来和应用进行交互。google vr sdk提供两个主要的方法帮助我们跟用户通过注视进行交互:使用GvrGaze脚本,或者拥有unity的Event System的GazeInputModule脚本。

使用GvrGaze

GvrGaze允许用户可以很轻易地通过注视和game obeject交互。这个脚本对uGUI不起作用。从Assets -> GoogleVR -> Scripts -> UI -> GvrGaze中把它拖到摄像机中,让他生效。他会给实现了IGvrGazePointer和IGvrGazeResponder的objects发送事件。(官方文档中的目录,在下暂时没有找到~ 。 ~)

使用GazeInputModule

GazeInputModuleJ脚本是给unity的EventSystem的一个输入模块,当用户注视一个GameObjects的时候,就可以选择它。脚本的目录在Assets -> GoogleVR -> Scripts -> GazeImputModule,把它添加到scene的EventSystem object中去,就可以使用了。

在场景中和一个3D object去进行交互时,需要给Event Camera中添加一个PhysicsRaycaster组件。当然你也需要去给每一个参加交互的物体添加脚本去响应事件。这个物体当然也需要一个collider组件。
(看完,发现又没有这么一个例子~ 。 ~可能是sdk版本和官方文档不匹配的缘故吧。但是我明明下的是最新的啊)

自己动手

GoogleVr -> Demos -> Scenes -> GVRDemo ,这是一个经典的google vr的寻宝小游戏。现在根据这个demo来无脑写一个自己的vr小程序

快快快,新建一个项目,导入google SDK,新建一个scenes。

二话不说,把GvrViewerMain拖到场景中去,再把GvrReticlePointer拖到MainCamera的子目录中。随手再新建一个Cube。这样场景就布置好了。

接下来就剩下交互了。

建立一个eventSystem,里面有两个component,把自带的module删掉,添加Gvr Pointer Input Module这个component,里面有一个脚本:GvrPointerInputMoudle。

在main camera中添加组件GvrPointerPhysicsRaycaster。

最后轮到cube了,先添加teleport脚本,至于他的两个属性,inactive Material和Gazed At Material,直接用了google sdk 的material了。分别表示cube被选中和没被选中时的材质。

在cube中再添加event trigger组件,分别添加Enter,Exit,Click事件,选择目标为cube。
在三个事件中选择对应的SetGazeAt()(用户注视时调用的方法)和TeleportRandomly()(用户点击屏幕时的方法)方法(enter和exit选择的方法带一个布朗类型的输入,所以其中一个打个勾吧)。

然后运行游戏!bingo!搞掂了。

8.jpg

今天先到这里,详细的脚本代码下次再说。
我的unity,googleVR学习总结目录在这里。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容