谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)_第1页
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)_第2页
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)_第3页
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)_第4页
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.:.;谷歌VR APP实战!UNITY与CARDBOARD APP根底实际三今天的VR实战是腾讯ISUX高级交互家设计师C7210亲身写的,教他借用免费的Unity资源,搭起3D场景,放上3D对象,并运用Google提供的SDK组件模拟VR视野。这个教程最好玩的地方是,假设有兴趣打包成App放到iPhone当中,便可以直接塞到Cardboard里面以真实VR的方式进展体验了我们接下来将要一同捣鼓的东西,简单描画一下大约就是借来一些免费的Unity资源,搭起3D场景,在里面放上一两个没有任何意义的3D对象,运用Google提供的SDK组件模拟VR视野,当视野聚焦在3D对象上时,VR准星会发生形

2、变,同时3D对象会改动外观,暗示互动性;而经过鼠标模拟Cardboard按钮点击事件还可以使3D对象产生位移。大致就是这样。假设有兴趣打包成app放到iPhone当中,便可以直接塞到Cardboard里面以真实VR的方式进展体验了。提炼一下详细的实际要点,包括:向Unity工程中导入Google VRUnity SDK。在Unity Asset Store中阅读并下载免费资源包。调用Google VR相关组件,构建VR方式。向场景(Scene)中添加交互对象。编写代码,制定凝视交互的规那么。构建事件系统及触发规那么。经过Xcode将VR app部署到iPhone当中。需求预备的原料Unity:

3、下载并安装最新的免费个人版本。Google VR Unity SDK:下载并解压,其中包含了SDK以及Google官方提供范例工程。Cardboard:Google Cardboard或其他同类设备均可。Xcode:用于将最终打包的app部署到iPhone当中。体量庞大,假设不预备实践部署也可忽略。布置3D环境与交互组件翻开Unity,新建3D工程:点击菜单栏中的Assets Import Package Custom Package,选择之前解紧缩的Google VR Unity SDK当中的GoogleVRForUnity.unitypackage:在接下来弹出的Import Unity

4、Package对话框中,确保一切资源都有被勾选,然后点击Import按钮:导入完成后,Project面板当中的资源途径看上去应该是这样的:Google VR Unity SDK布置终了,下面我们来找一些现成的环境素材。点击Asset Store面板,在内嵌页面的右侧导航当中找到3D Models Enviroments,接下来可以挑选出一切的免费模型,找到本人喜欢的,确认资源中包含.unity场景文件,例如以下图当中我所选用的Moon Landscape资源包所提供的Demo Scene(接下来所涉及到的相关文件操作均以Moon Landscape为例):建议在这里挂好VPN,然后点击内嵌页中

5、的Download或Import(假设之前曾经下载过)按钮。下载完成后,在弹出的Import Unity Package对话框中,确保一切资源都有被勾选,然后点击Import按钮:导入完成后,在Project面板的Assets管理器当中找到刚刚下载的资源包里的demo场景文件:双击翻开该文件,Scene面板当中会出现demo场景,我们接下来就在这里任务:想要置身于3D环境当中以第一人称视角察看世界,我们需求“眼睛,即Unity提供的Camera控件。新建的空白场景当中不包含任何Camera控件,我们需求本人来添加。点击菜单栏当中的Game Object Camera:确保新添加的Camera控

6、件被选中(假设没有,可以在左侧Hierarchy面板当中点选),在右侧Inspector面板当中点击Tag下拉菜单,选择“MainCamera:由于Moon Landscape场景当中的地形会高出程度面,所以我们需求调整Camera的位置,使其位于地面以上。在“Postion当中,为“Y输入恰当的数值,譬如“25(或任何可以确保Camera垂直方向的位置略微高出地面的数值):同样在Inspector面板当中,点击底部的Add Component按钮,输入关键词“Physics,点选“Physics Raycaster(使Camera视野可以与3D对象进展互动):一番设置之后,Camera控件的

7、Inspector面板看上去应该是这样的:接下来我们需求添加Google VR相关组件。在Project面板的资源列表中找到Assets GoogleVR Prefabs文件夹,将其中的GvrViewerMain拖放到左侧的Hierarchy面板中(这一步骤相当于为Unity工程添加Google VR方式,包括视觉款式及互动机制等等):确保GvrViewerMain被选中,在右侧Inspector面板当中调整“Screen Size和“Viewer Type的值,选择需求部署的手机型号及Cardboard款式:接下来我们要向Camera视野当中添加准星,用于接下来的凝视交互。在Project面

8、板的资源列表中找到Assets GoogleVR Prefabs UI文件夹,将其中的GvrReticle拖放到左侧Hierarchy面板中的Camera控件上,使其成为Camera的子元素:OK我们来预览一下当前场景的实践效果。点击顶部的Play按钮,界面会自动切换到Game方式。夜空、月球外表、Cardboard分屏、准星,还不坏(此时可以按住键盘上的alt或control键,同时挪动鼠标,测试一下主视角的挪动方式):再次点击顶部的Play按钮,退出Game方式。接下来我们要向场景当中添加互动对象。立方体(Cube)是Unity当中最根底最简单的3D对象 点击菜单栏当中的Game Obje

9、ct 3D Object Cube,一个立方体便会被添加到场景当中:我们需求将立方体置于Camera默许视野的前方(选中Camera控件即可查看其视野方向及范围,便于确定“前方的详细位置)。此外,冷寂的月球环境让我想到了当中的一些情景(斯坦利库布里克指点,1968年的鸿篇巨制,有谁看过没?),于是我希望将立方体修正为电影中的黑石碑款式。选中Cube,在右侧Inspector面板当中调整“Position和“Scale的值:调整之后Cube的外形与位置大致如以下图所示:在这个简单的范例当中,3D环境及交互组件就是这些。下面我们要做一些代码任务了。编写代码,设定交互规那么在Assets面板当中点击

10、鼠标右键,选择Create C# Script,将新添加的代码文件命名为“Interactions:双击该文件,Unity会自动加载MonoDevelop代码编辑器。去除掉文件当中自带的全部内容,交换为以下代码: using UnityEngine; using System.Collections;public class Interactions : MonoBehaviour public void SetGazedAt(bool gazedAt) GetComponent().material.color = gazedAt ? Color.red : Color.black; pub

11、lic void MoveUp() transform.position += new Vector3 (0f, 1f, 0f); void Start() SetGazedAt(false); public void OnGazeEnter() SetGazedAt(true); public void OnGazeExit() SetGazedAt(false); public void OnGazeTrigger() MoveUp(); 代码本身并不复杂,简单解释一下逻辑。我们在Interactions类当中总共声明了6个函数:SetGazeAt():根据传入的条件,判别交互对象(譬如立

12、方体)应该呈现出红色还是黑色外观。MoveUp():将交互对象沿Y轴向上挪动一个单位的间隔 。Start():调用特定的功能进展初始化设定(SetGazeAt,参数为“false)。OnGazeEnter():当准星聚焦于交互对象时,调用特定的功能(SetGazeAt,参数为“true)。OnGazeExit():当准星不再聚焦于交互对象时,调用特定的功能(SetGazeAt,参数为“false)。OnGazeTrigger():准星聚焦于交互对象时,用户按压Cardboard上的按钮,那么调用特定的功能(MoveUp)。构建事件系统代码搞定,接下来需求将事件处置系统添加到工程当中,使交互规那

13、么可以在视野与交互对象之间运作起来。点击菜单栏当中的Game Object UI Event System,将其添加到左侧的Hierarchy面板中:确保Event System处于选中态,在右侧Inspector面板当中点击底部的Add Component按钮,输入关键词“Gaze,点选“GazeInputModule,向事件系统中添加基于凝视的交互模组:我们需求提升凝视交互规那么的优先级,使其不会被默许规那么覆盖,否那么在实践凝视Cube对象时,准星的行为会有异常。点击“Gaze Input Module标题右侧的齿轮图标,在下拉列表中选择“Move Up,使“Gaze Input Mod

14、ule整体移至“Standalone Input Module上方:我们还需求使Cube可以呼应代码定义的交互事件规那么。在左侧的Hierarchy面板中选中Cube对象,在右侧Inspector面板当中点击底部的Add Component按钮,找到“Interactions,将代码添加到Cube对象当中:再次点击Add Component按钮,输入“Event,点选“Event Trigger:接下来我们需求将特定的交互动作与代码中设定的规那么关联起来。点击Add New Event Type按钮,选择“PointerEnter:点击“None (Object)右侧的按钮,在弹出的列表当中选

15、择“Cube本身:然后在右侧的Function列表中选择Interactions OnGazeEnter(),也就是我们之前在Interactions代码文件当中定义的OnGazeEnter函数:这一系列设置相当于通知系统,当准星挪动到Cube对象上时,执行OnGazeEnter函数当中定义的行为,即经过SetGazeAt()将Cube的外观设置为红色。同理,我们还需求通知系统当准星分开Cube对象时,或是在Cube对象上按压Cardboard按钮时需求执行怎样的行为。点击“Event Trigger底部的Add New Event Type按钮,选择“PointerExit:确保事件对象为“

16、Cube,然后在右侧的Function列表中选择Interactions OnGazeExit():同理,再次点击“Event Trigger底部的Add New Event Type按钮,选择“PointerClick:确保事件对象为“Cube,然后在右侧的Function列表中选择Interactions OnGazeTrigger():预览至此,我们的范例曾经根本完工,不如预览一下本人的任务成果。点击顶部的Play按钮,进入Game方式:按住alt键,同时挪动鼠标,使准星聚焦于黑石碑,会发现石碑变成了红色,准星本身也变成了环状(提示所凝视的对象具有交互特性):点按鼠标,石碑会一点点升起:

17、说无聊也是够无聊的,但事已至此,完全可以给本人一点掌声,由于我们学会了一些很根底同时也很重要的东西。他还可以继续尝试做些额外的任务,譬如复制几个石碑,排成一行,看上去会很酷,同时也可以帮他了解在Unity当中操作3D对象的根本方法。假设无需担忧设备的性能问题,又足够无聊,复制出几万个黑石碑,混乱的堆放起来,像(续作)那样将整个星球完全吞噬掉也无妨。打包app,在iPhone上运转接下来的步骤属于选做作业,假设手头有Cardboard,那么实践体验一下终归会更有成就感一些。详细的实现流程和之前“Unity与Cardboard app根底实际(1)当中引见的一样。点击菜单栏中的File Build

18、 Settings:在Build Settings窗口中,选择Platforms列表里的“iOS,然后点击列表下方的Switch Platform按钮:等待素材导入完成,然后点击Build Settings窗口中的Player Settings按钮,此时右侧的Inspector面板当中会出现PlayerSettings选项区:找到“Settings for iOS部分,点击其中的“Resolution and Presentation使其展开,将“Default Orientation设置为“Auto Rotation,然后取消勾选“Allowed Orientations for Auto Rotation下的前三个选项,只保管最后一个“Landscape Left为选中态:依然在“Settings for iOS当中,点击“Other Settings使其展开,并找到“Bundle Identifier字段,在这里为他的app输入一个合法的安装包称号,譬如“com.mycompany.cardboarddemo,只需遵照“com.的方式即可:接下来要构建用于部署到iOS设备当中的Xcode工程。在之前的Build Settings窗口中点击Build按钮,选择恰当的保管位置及Xcode工程途径称号,点击Save按钮:看到“Build Succe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论