在上一篇中《【实战分享1】如何使用华为VR Glass 6dof 基于 OpenXR@ unity 开发VR游戏》最后小结中提到,基于openxr可以支持一套代码,达到跨平台部署:

  1. 使用openxr标准,无需在场景或者XR RIG上做任何的改动,可以跨平台(PC,VR一体机(各类品牌));真正做到了一套代码,支持跨平台运行。
  2. 基于PC VR,打出的运行包,基本上可以兼容市面上几乎所有的PC VR头显。
  3. VR一体机方面:只需直接在工程building设置中选择Android,并选择openxr,quest,直接编译出可以Android包,在quest上也是可以运行的,其他方面无需做设置;相信将来更多VR一体机可以支持openxr。

此篇就跨平台部署,实际实操一下,看看是否可以真的运行,分享一下相关的案例;

1 环境准备

硬件条件:

  1. 一台VR READY的PC或者笔记本电脑:笔者使用的是荣耀猎人V700
  2. 一套华为VR Glass 6dof (含VR Glass,6dof 游戏套件(2手柄,1 头部定位器,1 散热背夹));
  3. 1根PC VR链接线缆(可选),笔者使用的是VR Glass 自带的1.2米长 C2C线缆;
  4. 一台Oculus Quest1(需要打开开发者模式)

如下图,环境非常简单:

(已经尘封近两年的Oculus Quest1终于上场了,头带上都已经发白了。。。。)

使用Oculus quest 进行真机debug,

硬件链接:可以直接使用华为VR Glass 自带的 C2C线缆链接 quest1 到电脑来进行使用;

在build settings 中,选择Android平台,run device中即可发现 Oculus quest设备;

软件条件:

  1. Unity 2020 LTS
  2. SteamVR 1.21.8
  3. Oculus quest1 :  V34版本

VR Glass 6dof 可以正常运行steamVR平台游戏内容;

2 工程,场景 XR RIG等设置

参考上一篇:《如何使用华为VR Glass 6dof 基于 OpenXR@ unity 开发VR游戏》建立工程,导入openxr 相关插件等工作。

目录

1 环境准备

2 工程,场景 XR RIG等设置

3 构建基本交互demo应用

3.1 增加手柄 prefab或者物体模型

3.2 增加可以抓取的物体

3.3 增加locomotion功能

3.4 增加teleport功能

3.4.1 Teleport anchor

3.4.2 Teleport Area

3.5 小结:

4 输出不同的平台的软件包

4.1 输出PC VR平台包

4.2 输出Oculus QUEST包

5 小结


3 构建基本交互demo应用

3.1 增加手柄 prefab或者物体模型

分别在LeftHand Controller 和 RightHand Controller,增加一个cube,调整cube合适的大小;

此时已经在手柄上挂接了物体模型了,当然了,可以自行增加模型,可以是厂家提供的原版手柄模型,也可以是一把刀,一支剑,或者一把斧头;

点击play,

结果:此时可以实时查看成功附加了自定义的手柄模型了;

3.2 增加可以抓取的物体

Add  3D Object –>cube 对象到场景中

在刚刚新增的Cube 对象 中

Add component -> XR GrabInteractable

增加后结果如下:

Rigidbody

点击play

结果:此时可以通过手柄来抓取刚刚增加的cube对象了。

3.3 增加locomotion功能

功能:使用手柄的遥杆操作进行头部的转向;

准备工作:Add XRI Default snap Turn 为default preset;

此时在Preset manager中发现如下,已经增加

后面增加Locomotion System对象时,会自动挂接手柄响应reference,无需挨个配置。

ADD XR->Locomotion System 对象到场景中,

此时可以发现,Locomotion System对象中已经根据preset Manager的设置,自动关联了左右手柄的操作reference(红色部分),当操作手柄遥杆的时候,就可以响应了。

注意一下,locomotion system 包括了 teleportation provider 这个组件,如下图;这个也是后面增加teleport 相关的功能提供了基础。

配置XR orgin,将场景中的XR ORIGIN直接拖到如下图红色框框中,最终结果如下:

点击play

结果:使用左/右手柄的遥杆操作可以进行头部的转向了。

3.4 增加teleport功能

3.4.1 Teleport anchor

功能:增加一个teleport 锚点,主要用于场景中某个特定的位置进行teleport;

场景中增加一个Teleportation Anchor

XR->Teleportation Anchor

点击play

结果:此时可以发现,当手柄的射线接触这个anchor 对象时,射线的颜色发生变化(从红色变为白色),点击手柄侧键,则可以直接跳到anchor的位置了。

3.4.2 Teleport Area

功能:在一个空间上,可以随意的进行跳转;

在此demo场景中,已经有了一个Ground对象代表了地板,

在Ground 对象中add Teleportation Area组件

即可实现整个场景中的地面范围均可以teleport了。

点击play

结果:当左右手柄的射线接触到地面的时候,会从红色变为白色,此时扣动侧键,直接会跳转到射线指向的位置了。

3.5 小结:

到此为止,一个拥有了基本的交互功能的VR DEMO应用构建完成了,完全是0代码,无需写任何的脚本,此时还是在PC VR上play模式正常运行;

下一步是输出不同平台的包,特别是VR一体机(Oculus quest)上,是否可以不用写任何代码就可以直接输出apk包。

4 输出不同的平台的软件包

4.1 输出PC VR平台包

这一步就跳过了,在前一篇中已经有过验证。直接进入下一步;

4.2 输出Oculus QUEST包

工程设置:切换到Android平台

配置XR Plugin management ,勾选 OpenXR

增加interaction profiles ,选择 Oculus touch controller profile

OpenXR Feature Groups 勾选 Oculus Quest Support

Note: 关于勾选 Oculus Quest Support,unity 有说明,主要是明确loader类型;主要是当前还未有统一的loader;

应该在将来可以不用选择特定的硬件型号了,毕竟VR一体机硬件会百花齐放,都去选择一遍也是件很费劲的事情,也不符合openxr的初衷;

Build Settings-> Build and run 输出编译包

硬件链接:使用华为VR Glass自带的C2C线缆链接 quest1 到电脑;则会发现 run device 里面有了Oculus quest 设备;软件包会自动安装到quest1上,自动打开,戴上quest1就开始了看到了启动logo了;

自动拷贝软件包到quest头显;

结果:quest1 上的体验,和华为VR Glass 6dof(PC VR模式)上的体验一致;画面,场景,操作交互没有发现任何的不同;

5 小结

1、基于openxr标准,开发跨平台的XR游戏/应用,只需进行简单的工程配置,“零”代码(工程building 设置,player settings设置),基本可以满足同一套代码,输出不同的包,支持不同的平台VR设备运行;大大的简化了适配工作。

2、此次试验的是PC VR和Oculus quest1;分别输出EXE文件和apk包。由于VR一体机种类比较多,是否需要每一个厂家的VR一体机输出不同的apk包?将来通过openxr 标准,可以做到一个apk包来兼容所有的厂家的VR一体机,其实应该就差一个统一的loader了。

3、关于开发使用的设备,此次使用了华为VR Glass 6dof(PC VR模式)和Oculus quest1(一体机VR);后续再开发新的应用的时候,应该只需要在PC VR上直接开发和调试,无需购置各种类型的VR一体机真机(前提是VR一体机支持openxr标准)进行调测了,既节约了购置成本,也大大的节省了开发的时间。希望其他的VR一体机厂家加快对openxr的支持。

最后,openxr标准的成熟和落地,离不开广大的开发者、游戏引擎、硬件平台、标准组织共同努力。

建议目前从事VR游戏/应用的开发者们,已经立项但还未开工的、已经开工但是还未完全交付的,建议切换到openxr标准上来。

对于国内的VR硬件平台的厂家们,希望尽快的推出支持openxr 的runtime 和 SDK,并且和当前主流的untiy、unreal等引擎对接起来。

【实战分享2】:如何基于OpenXR@ unity + 华为VR Glass 6dof Quest 开发跨平台VR游戏/应用相关推荐

  1. 实战分享1:如何使用华为VR Glass 6dof 基于 OpenXR@ unity 开发VR游戏/应用

    目录 1 环境准备 2 使用OpenXR + XR Interaction Toolkit 2.1 工程准备 2.1.1 安装openxr相关插件 2.1.2 配置工程 2.1.3 Debugger ...

  2. 华为VR Glass 6DoF 评测

    6DoF ( Degree of Freedom )游戏套装,免装驱动软件,只需在HUAWEI VR Glass上插入视觉模组即可使用.新增3个自由度感应,不仅能识别前后左右的移动,还能识别跳起和蹲下 ...

  3. 基于QT的华为网络摄像头二次开发

    资源下载链接 第一次使用华为的网络摄像头并进行二次开发,网上关于QT对华为网络摄像头的二次开发的文章很少,基于项目的需求做了一些工作,特此记录. 目标: 1.实时预览 2.手动控制录制视频 3.监听告 ...

  4. 【游戏开发实战】(完结)使用Unity制作像天天酷跑一样的跑酷游戏——第七篇:游戏界面的基础UI

    文章目录 一.前言 二.导入游戏界面UI素材 三.制作游戏界面UI预设 四.事件管理器 五.编写GameMainPanel.cs脚本 六.游戏管理器添加金币逻辑 七.加金币 八.跳跃事件 九.运行测试 ...

  5. LibGDX_8.1: LibGDX 项目实战: 开发跨平台 2048 游戏

    本文链接: http://blog.csdn.net/xietansheng/article/details/50188259 LibGDX 基础教程(总目录) 声明: 游戏中使用到的部分图片和音频资 ...

  6. 水滴筹基于阿里云 EMR StarRocks 实战分享

    摘要:水滴筹大数据部门的数据开发工程师韩园园老师为大家分享水滴筹基于阿里云EMR StarRocks的实战经验. 本篇内容将会围绕以下五个方面展开: 公司介绍 StarRocks 概览 场景实战 最佳 ...

  7. 安卓开发实战,用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序

    文章目录 引子 ==**核心提示:此SDK免费,安卓全机型覆盖!**== 证件照DIY开发实战 1 开发准备 1.1 在项目级gradle里添加华为maven仓 1.2 在应用级的build.grad ...

  8. 实战分享:淘宝Web 3D应用与游戏开发

    大家下午好!我们今天讲个比较有意思的话题,这个话题在业界被谈及得比较少.大家在座有做过移动端开发的同学吗?请举个手,人还挺多的.那做过3D应用的同学请举个手,有用过Threejs的请举个手,做过游戏的 ...

  9. VR开发从何入手的实战分享

    摘要: 6月25日,由CSDN主办的"[VR技术开放日]VR开发从何入手"在北京辽宁大厦隆重举行,会议邀请到小米互娱VR技术专家房燕良.焰火工坊CTO王明杨.资深VR开发工程师王秋 ...

最新文章

  1. golang连接postgresql too many client_MySQL和PostgreSQL压测性能对比
  2. ffmpeg php win32,解决PHP5.3.x下ffmpeg安装配置问题
  3. 如何反映两条曲线的拟合精度_【隆旅干货分享】差压传感器的应用及精度特性分析...
  4. Java微信公众平台开发--番外篇,对GlobalConstants文件的补充
  5. 基于springboot框架的博客系统
  6. 小米回应设备被谷歌禁用;苹果中国宣布 2019 款 iPad 降价;Wine 5.0-rc4 发布 | 极客头条...
  7. 拓端tecdat|R语言Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES
  8. 实用工具,可以生成dal层的相关cs代码
  9. FIT2CLOUD飞致云正式推出X-Lab孵化器,首期发布两款开源软件
  10. SQL查询语句大全集锦
  11. 【牛客网C++服务器项目学习】Day12-网络编程的两种事件处理模式
  12. 计算机9针485接口,串口RS232__485的9针引脚定义
  13. Android进程系列1---进程基础
  14. 微信PC版多开的方法
  15. android蓝牙a2dp切换歌曲广播,Android蓝牙A2DP连接实现
  16. 问题描述:the jar file jrt-fs.jar has no source attachment
  17. Ubuntu(乌班图)修改阿里云镜像源详细步骤及安装gcc编译器
  18. win10开启hdr功能屏幕泛白如何解决?
  19. 机器翻译评测方法——BLEU
  20. 程序员必备的17个软件开发工具

热门文章

  1. 三段式与四段式耳机插头的区别
  2. python可以不对变量初始化_Python 可以不对变量如 a 初始化就可在表达式如 b=a+1 中使用该变量。...
  3. jQuery的小米官网-----侧边导航栏
  4. Spring3 MVC详解二
  5. 产业创新新主流,讯众股份上榜创业黑马“新一亿中流”企业top100
  6. PLINK-GWAS学习3------数据质控之性别质控
  7. QT-事件机制学习笔记
  8. 核心微生物分析_基因测序找出肠道核心微生物群
  9. Win10电脑键盘失灵打不出字解决方法分享
  10. 阿里云ECS通用型g7云服务器支持vTPM第三代神龙架构性能评测