谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)精编版

上传人:ahu****ng1 文档编号:141820041 上传时间:2020-08-13 格式:DOCX 页数:28 大小:8.06MB
返回 下载 相关 举报
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)精编版_第1页
第1页 / 共28页
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)精编版_第2页
第2页 / 共28页
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)精编版_第3页
第3页 / 共28页
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)精编版_第4页
第4页 / 共28页
谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)精编版_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)精编版》由会员分享,可在线阅读,更多相关《谷歌VRAPP实战UNITY与CARDBOARDAPP基础实践(三)精编版(28页珍藏版)》请在金锄头文库上搜索。

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的方式进行体验了。提炼一下具体的实践要点,包括:o 向Unity项目中导入Google VRUnity SDK。o 在Unity Asset Store中浏览并下载免费资源包。o 调用Google VR相关组件,构建VR模式。o 向场景(Scene)中添加交互对象。o 编写代码,制定凝视交互的规则。o 构建事件系统及触发规则。o 通过Xcode将VR app部署到iPhone

3、当中。需要准备的原料o Unity:下载并安装最新的免费个人版本。o Google VR Unity SDK:下载并解压,其中包含了SDK以及Google官方提供范例项目。o Cardboard:Google Cardboard或其他同类设备均可。o Xcode:用于将最终打包的app部署到iPhone当中。体量庞大,如果不准备实际部署也可忽略。布置3D环境与交互组件打开Unity,新建3D项目:点击菜单栏中的Assets Import Package Custom Package,选择之前解压缩的Google VR Unity SDK当中的GoogleVRForUnity.unitypack

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

5、为例):建议在这里挂好VPN,然后点击内嵌页中的Download或Import(如果之前已经下载过)按钮。下载完成后,在弹出的Import Unity Package对话框中,确保所有资源都有被勾选,然后点击Import按钮:导入完成后,在Project面板的Assets管理器当中找到刚刚下载的资源包里的demo场景文件:双击打开该文件,Scene面板当中会出现demo场景,我们接下来就在这里工作:想要置身于3D环境当中以第一人称视角观察世界,我们需要“眼睛”,即Unity提供的Camera控件。新建的空白场景当中不包含任何Camera控件,我们需要自己来添加。点击菜单栏当中的Game Obj

6、ect Camera:确保新添加的Camera控件被选中(如果没有,可以在左侧Hierarchy面板当中点选),在右侧Inspector面板当中点击Tag下拉菜单,选择“MainCamera”:由于Moon Landscape场景当中的地形会高出水平面,所以我们需要调整Camera的位置,使其位于地面以上。在“Postion”当中,为“Y”输入恰当的数值,譬如“25”(或任何能够确保Camera垂直方向的位置略微高出地面的数值):同样在Inspector面板当中,点击底部的Add Component按钮,输入关键词“Physics”,点选“Physics Raycaster”(使Camera视

7、线可以与3D对象进行互动):一番设置之后,Camera控件的Inspector面板看上去应该是这样的:接下来我们需要添加Google VR相关组件。在Project面板的资源列表中找到Assets GoogleVR Prefabs文件夹,将其中的GvrViewerMain拖放到左侧的Hierarchy面板中(这一步骤相当于为Unity项目添加Google VR模式,包括视觉样式及互动机制等等):确保GvrViewerMain被选中,在右侧Inspector面板当中调整“Screen Size”和“Viewer Type”的值,选择需要部署的手机型号及Cardboard款式:接下来我们要向Cam

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

9、y当中最基础最简单的3D对象 点击菜单栏当中的Game Object 3D Object Cube,一个立方体便会被添加到场景当中:我们需要将立方体置于Camera默认视线的前方(选中Camera控件即可查看其视野方向及范围,便于确定“前方”的具体位置)。此外,冷寂的月球环境让我想到了2001太空漫游当中的一些情景(斯坦利库布里克指导,1968年的鸿篇巨制,有谁看过没?),于是我希望将立方体修改为电影中的黑石碑样式。选中Cube,在右侧Inspector面板当中调整“Position”和“Scale”的值:调整之后Cube的形状与位置大致如下图所示:在这个简单的范例当中,3D环境及交互组件就是

10、这些。下面我们要做一些代码工作了。编写代码,设定交互规则在Assets面板当中点击鼠标右键,选择Create C# Script,将新添加的代码文件命名为“Interactions”:双击该文件,Unity会自动加载MonoDevelop代码编辑器。清除掉文件当中自带的全部内容,替换为以下代码: using UnityEngine; using System.Collections;public class Interactions : MonoBehaviour public void SetGazedAt(bool gazedAt) GetComponent().material.colo

11、r = gazedAt ? Color.red : Color.black; public 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类

12、当中总共声明了6个函数:o SetGazeAt():根据传入的条件,判断交互对象(譬如立方体)应该呈现出红色还是黑色外观。o MoveUp():将交互对象沿Y轴向上移动一个单位的距离。o Start():调用特定的功能进行初始化设定(SetGazeAt,参数为“false”)。o OnGazeEnter():当准星聚焦于交互对象时,调用特定的功能(SetGazeAt,参数为“true”)。o OnGazeExit():当准星不再聚焦于交互对象时,调用特定的功能(SetGazeAt,参数为“false”)。o OnGazeTrigger():准星聚焦于交互对象时,用户按压Cardboard上的按

13、钮,则调用特定的功能(MoveUp)。构建事件系统代码搞定,接下来需要将事件处理系统添加到项目当中,使交互规则可以在视线与交互对象之间运作起来。点击菜单栏当中的Game Object UI Event System,将其添加到左侧的Hierarchy面板中:确保Event System处于选中态,在右侧Inspector面板当中点击底部的Add Component按钮,输入关键词“Gaze”,点选“GazeInputModule”,向事件系统中添加基于凝视的交互模组:我们需要提升凝视交互规则的优先级,使其不会被默认规则覆盖,否则在实际注视Cube对象时,准星的行为会有异常。点击“Gaze In

14、put Module”标题右侧的齿轮图标,在下拉列表中选择“Move Up”,使“Gaze Input Module”整体移至“Standalone Input Module”上方:我们还需要使Cube能够响应代码定义的交互事件规则。在左侧的Hierarchy面板中选中Cube对象,在右侧Inspector面板当中点击底部的Add Component按钮,找到“Interactions”,将代码添加到Cube对象当中:再次点击Add Component按钮,输入“Event”,点选“Event Trigger”:接下来我们需要将特定的交互动作与代码中设定的规则关联起来。点击Add New Ev

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号