第5章 VR开发-5.3 Nibiru平台_第1页
第5章 VR开发-5.3 Nibiru平台_第2页
第5章 VR开发-5.3 Nibiru平台_第3页
第5章 VR开发-5.3 Nibiru平台_第4页
第5章 VR开发-5.3 Nibiru平台_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

第5章VR开发

5.3Nibiru平台

.目录.1.在Unity中配置Android系统

.2.

NibiruVR在Unity中的基本使用方法.3.

NibiruVR中交互功能的实现

Nibiru是国产的VR操作系统平台,它在Android的基础上针对VR一体机进行了大量优化和改进,是国内使用最多的VR一体机开发平台之一。

Nibiru有完整的产品生态链。除了VR系统和VR一体机硬件产品外,它还有AR系统和AR眼镜硬件产品、NibiruCreator内容创作工具、VR/AR场景播控系统、RemoteRendering仿真系统等,是国内比较先进的产品平台。

Nibiru还提供了比较完善的开发环境,其官方网站维持了一个活跃的开发社群,能给开发者提供相关帮助。

(1)打开Unity软件,单击菜单“Edit”→“Preferences”,选择“ExternalTools”选项卡,设置AndroidSDK和JDK的安装路径,如图所示。1.

在Unity中配置Android系统

(2)单击菜单“File”→“BuildSettings”,在“BuildSettings”对话框中单击“SwitchPlatform”,选择“Android”。在Unity的“BuildSettings”对话框中设置Android系统为发布目标系统,如图所示。1.

在Unity中配置Android系统

(3)单击上页图中的“PlayerSettings”按钮,选择“OtherSettings”选项,按照下图设置Unity中发布AndroidApp的相关属性。其中,“BundleIdentifier”属性是按照“com.公司名称.App名称”的格式来填写的,图中公司名称为“gdqy”,App名称为Temp。“MinimumAPILevel”属性规定了发布的App所能支持的最小Android版本。支持的最小版本越低,所能支持的设备种类就越多,但也有很多高级功能可能会不支持。支持的最高版本属性一般不用修改,使用默认设置即可。1.

在Unity中配置Android系统

1.

在Unity中配置Android系统

(1)需要从官网下载NibiruVR_SDK_Unity开发包,本书使用的是2.0.5版本。将下载的开发包NibiruVRSDK_V2.0.5.unitypackage导入Unity工程后,需要针对Unity的Android配置做一些设置,这样才可正确发布Android应用。如果只是在计算机上做实验,则可以跳过这一步骤。具体的设置方法,是通过Unity的菜单“Edit”→“ProjectSettings”→“Graphics”,打开工程图像设置界面,将NVR/Resources目录下的SolidColor和UnlitTexture这两个着色器文件,拖入“AlwaysIncludedShaders”如下页图所示。2.

NibiruVR在Unity中的基本使用方法

2.

NibiruVR在Unity中的基本使用方法

(2)先新建一个场景,删除其中自带的MainCamera,把NVR/Prefabs目录下的MainCamera和NvrViewerMain这两个预设体拖入场景,即完成了初始设置。此时运行场景,即可看到如左图所示的NibiruVR初始运行效果——左右眼双屏画面;按住Alt键的同时,移动鼠标,可以模拟戴着VR头显转动头部的效果。现在因为没有参照物,移动时看不出效果。可以加入NVR/Prefabs目录下的NvrSphere预设体,再次运行场景,可看到室内环境;此时再运行场景,即可通过键盘和鼠标模拟头显转动来观察这个房间了,加了房间参照物后的运行效果如右图所示。2.

NibiruVR在Unity中的基本使用方法

(3)在NvrViewerMain预设体中,有一个NvrViewer组件可用来实现一些VR形式的设定,如图所示。例如,“VRModeEnabled”控制是否以VR模式运行场景,如果不勾选该复选框,则不会出现上页图中那样的双目效果,而是出现一个普通的画面,通过键盘和鼠标模拟头显转动的功能不变,这样可以扩大画面,有利于在计算机上观察效果;“LockHeadTracker”控制是否锁定头显;“DistortionEnabled”控制是否显示镜头畸变效果。2.

NibiruVR在Unity中的基本使用方法

下面介绍两种Nibiru头显中较常见的功能:视线注视交互VR头显按键交互3.

NibiruVR中交互功能的实现

(1)新建一个场景,删除原有的MainCamera,把NVR/Prefabs目录下的MainCamera和NvrViewerMain这两个预设体拖入场景,完成初始设置。再添加一个Cube物体,作为用视线注视改变颜色的目标物体。(2)新建一个空物体,改名为“EventSystem”,在其上添加GazeInputModule组件。添加GazeInputModule组件后,会自动添加一个EventSystem组件,交互功能相关组件如图所示。这两个组件定义了视线注视的各种操作。3.

NibiruVR中交互功能的实现——视线注视交互功能

(3)新建一个C#脚本changeColor.cs,将其作为组件赋予Cube物体。脚本内容如下可以看到这个脚本的功能比较简单,只有一个public类型的函数SetGazedAt(),其会根据bool类型的参数gazedAt来决定物体的材质颜色为红色还是白色。3.

NibiruVR中交互功能的实现——视线注视交互功能

(4)给Cube物体再添加一个EventTrigger组件,这个组件用来处理事件触发的工作。单击组件中的“AddNewEventType”按钮,添加PointerEnter和PointerExit两个事件,它们就是视线进入和移出Cube物体的事件。单击事件窗口中的“+”按钮,将Cube拖入框,两个事件处理函数都选择changeColor.cs脚本中的SetGazedAt()函数,Cube的EventTrigger组件如下页图所示。这样设置之后,就代表视线进入和移出Cube物体事件发生后的处理函数都是SetGazedAt()函数。

因为SetGazedAt()函数有一个bool类型的参数,所以在图5-39中可以看到PointerEnter事件的处理函数中该参数被勾选,代表其值为true;而PointerExit事件的处理函数中该参数没有被勾选,代表其值为false。再结合代码,可以看到,当视线进入Cube物体后,PointerEnter事件发生,处理函数SetGazedAt()会根据为true的gazedAt参数,把Cube的颜色改为红色;视线移出Cube物体后,PointerExit事件发生,处理函数SetGazedAt()会根据为false的gazedAt参数,把Cube的颜色改为白色。3.

NibiruVR中交互功能的实现——视线注视交互功能

(5)运行场景,通过按住Alt键并移动鼠标,模仿戴着头显转动头部的操作,来观察视线注视交互功能。3.

NibiruVR中交互功能的实现——视线注视交互功能

VR头显上一般都有按键或者是触摸板,提供了一定的交互功能。VR头显上的按键如图所示,有音量大小调节键,OK键,上、下、左、右方向键等。有些厂家提供的VR一体机的手柄的功能其实和这些头显上的按键或触摸板的功能是一样的。3.

NibiruVR中交互功能的实现——VR头显按键交互功能

在Nibiru的SDK中,VR头显按键交互的实现和视线注视交互的实现方法是类似的。例如,针对前面的例子,实现在视线注入Cube物体的情况下,按下OK键,使Cube物体变大一倍的功能,方法如下。(1)打开脚本changeColor.cs,在其中添加函数SetGazedTrigger(),函数内容如下:3.

NibiruVR中交互功能的实现——VR头显按键交互功能

(2)找到Cube物体,在其EventTrigger组件中,单击“AddNewEventType”按钮,添加PointerClick事件;单击事件窗口中的“+”按钮,将Cube拖入框,事件处理函数选择changeColor.cs脚本中的SetGazedTrigger()函数,新添加的PointerClick事件处理函数如图所

温馨提示

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

最新文档

评论

0/150

提交评论