适用于Unity的 Google Cardboard XR Plugin快速入门

news2024/12/28 4:13:03

本指南向您展示如何使用 Google Cardboard XR Plugin for Unity 创建您自己的虚拟现实 (VR) 体验。
您可以使用 Cardboard SDK 将移动设备变成 VR 平台。移动设备可以显示具有立体渲染的 3D 场景,跟踪头部运动并对其做出反应,并通过检测用户何时按下查看器按钮来与应用程序交互。

首先,您将使用HelloCardboard案例,这是一款演示 Cardboard SDK 核心功能的演示游戏。在游戏中,用户环顾虚拟世界以寻找和收集物品。它向您展示了如何:

  • 设置您的开发环境
  • 下载并构建演示应用程序
  • 扫描 Cardboard 查看器的二维码以保存其参数
  • 跟踪用户的头部运动
  • 通过为每只眼睛设置正确的失真来渲染立体图像
  • 打开和关闭 VR 模式

一、设置您的开发环境

软件要求:
Unity 2020.3.36f1或更高版本
确保在使用Unity Hub安装Unity版本过程中添加了包含 Android 和 iOS 构建模块支持。
必须安装Git ,并且Git可执行文件必须位于PATH环境变量中。有关详细信息,请参阅 Unity 的包管理器git支持 文档。

二、导入SDK并新建工程

按照以下步骤导入 Unity SDK 并创建一个新项目。

  • 打开 Unity并创建一个新的3D项目。
  • 在 Unity中,转到Window > Package Manager
  • 单击+并选择从 git URL 添加包。
  • 粘贴https://github.com/googlevr/cardboard-xr-plugin.git到文本输入字段中。该包应添加到已安装的包中。
  • 导航到适用于Unity包的 Google Cardboard XR 插件。在示例部分中,选择导入到项目中。
  • 示例资产应加载到 Assets/Samples/Google Cardboard//Hello Cardboard.
  • 导航到Assets/Samples/Google Cardboard//Hello Cardboard/Scenes,选择Add Open Scenes,然后选择HelloCardboard打开示例场景。
    注:是发布包的语义版本号。(例如, X.Y.Z 1.1.0)
    在这里插入图片描述

三、配置 Android 项目设置

导航到文件>构建设置。

  • 选择Android并选择Switch Platform
  • 选择Add Open Scenes并选择HelloCardboard

Player选项设置

导航到Project Settings>Player
Resolution and Presentation设置
导航到Project Settings > Player > Resolution and Presentation
将默认方向设置为Landscape LeftLandscape Right
禁用Optimized Frame Pacing
在这里插入图片描述

注意:虽然 Cardboard XR 插件支持纵向和纵向上下颠倒方向可能无法为设备上的眼睛渲染提供足够的空间。

Other Settings设置
Graphics API中选择OpenGLES2OpenGLES3Vulkan,或它们的任意组合。
Minimum API Level中选择Android 7.0 ‘Nougat’ (API level 24)或更高。
Target API Level
中选择API level 31或更高。
Scripting Backend中选择IL2CPP
Target Architectures中选择 ARMv7ARM64,或者其中一个。
Internet 访问中选择Require
Package Name下指定公司项目名称(包名)。
如果Vulkan被选为Graphics API:
Vulkan Settings中取消选中Apply display rotation during rendering复选框。
如果Unity版本为2021.2以上,在Texture compression format中选择ETC2
在这里插入图片描述

注意:可以通过更改呈现 API 兼容性来使用较低的最低 API 级别。有关详细信息,请参阅SDK 的build.gradle.
注意:如果您在选择 Vulkan 作为图形 API 时遇到问题,请选中Build Settings的Development Build选项框并分析运行时日志以查找驱动程序兼容性错误。

发布设置

导航到Project Settings>Player>Publishing Settings

在构建部分中,选择Custom Main Gradle TemplateCustom Gradle Properties Template
将以下行添加到的依赖项部分 Assets/Plugins/Android/mainTemplate.gradle
在这里插入图片描述
在这里插入图片描述

  implementation 'androidx.appcompat:appcompat:1.4.2'
  implementation 'com.google.android.gms:play-services-vision:20.1.3'
  implementation 'com.google.android.material:material:1.6.1'
  implementation 'com.google.protobuf:protobuf-javalite:3.19.4'

将以下行添加到 Assets/Plugins/Android/gradleTemplate.properties
在这里插入图片描述

 android.enableJetifier=true
 android.useAndroidX=true

注意:所需的依赖项可能会因版本而异。如果您想使用与最新版本不同的版本,请查看Cardboard SDK 存储库的sdk/build.gradle中依赖项部分的历史记录。

XR Plug-in Management设置

导航到Project Settings> XR Plug-in Management
Plug-in Providers下选择Cardboard XR Plugin
在这里插入图片描述

建立你的项目
导航到File>Build Settings
选择Build,或选择一个设备并选择Build and Run
在这里插入图片描述

五、配置 iOS 项目设置

导航到File>Build Settings

选择iOS并选择Switch Platform
选择Add Open Scenes并选择HelloCardboard

Player设置

Resolution and Presentation

导航到Project Settings > Player > Resolution and Presentation
将默认方向设置为Landscape LeftLandscape Right

注意:虽然 Cardboard XR 插件支持纵向和纵向上下颠倒方向可能无法为设备上的眼睛渲染提供足够的空间。
导航到文件>构建设置。

Other Settings

Camera Usage Description中,写Cardboard SDK requires camera permission to read the QR code (required to get the encoded device parameters)
Target minimum iOS Version中,写12.0
Package Name指定公司项目名称(包名)。
注意:如果使用的是 iPhone X,请选择Hide Home Button On iPhone X 的选项。
在这里插入图片描述

XR Plug-in Management设置

导航到Project Settings> XR Plug-in Management
Plug-in Providers下选择Cardboard XR Plugin

六、建立你的项目

导航到File>Build Settings
选择Build,或选择一个设备并选择Build and Run
请按照以下步骤使用示例应用程序进行试用:

  1. 将设备移动到您想要重新居中的位置(用作新的前瞻性头部姿势)。
  2. 按住 Cardboard 设备的扳机至少三秒钟。
  3. 松开扳机。
  4. 初始姿势现在位于相机指向的方向。
  5. 打开和关闭 VR 模式。

Unity XR Plug-in Management API可让您为适用于 Unity的Google Cardboard XR 插件打开或关闭 VR 模式。Unity 的最终用户文档中提供了最终用户文档和使用示例。

HelloCardboard 示例中的VrMode场景展示了上述 API 的基本用法。在这个场景中,VR 模式可以通过点击exit 来关闭,也可以通过点击屏幕任意位置再次打开。检查VrModeController.cs以了解有关如何执行此操作的详细信息。

参考文档:
https://developers.google.com/cardboard/develop/unity/quickstart
https://github.com/googlevr/cardboard-xr-plugin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL篇【5】——约束

目录表的约束空属性默认值列描述zerofill主键自增长唯一键外键如何理解外键约束在数据库的实际操作中难免会有一些操作不规范的地方,比方说在一张学生成绩表中,成绩的最高值为100,那么如果在这张表中如果出现了超过100分的成绩那显然是不合理…

单片机定时器

定时器 STM32有11个定时器,2个高级定时器、4个通用定时器,2个基本定时器,1个系统嘀嗒定时器(systick),2个看门狗定时器。 定时器计算: Tout((per)psc)/Tclk t(f/pre)per…

Spire.Office for Java 7.12.2 迎接新年/圣诞!!!

谷歌找破解版Spire.Office for Java is a combination of Enterprise-Level Office Java APIs offered by E-iceblue. It includes Spire.Doc for Java, Spire.XLS for Java, Spire.Presentation for Java, Spire.PDF for Java and Spire.Barcode for Java.内容及配图来自网络 …

cv2.findContours() 图像的轮廓

cv2.findContours(image, mode, method, contoursNone, hierarchyNone, offsetNone)参数: image:寻找轮廓的图像,注意输入的图片必须为二值图片。若输入的图片为彩色图片,必须先进行灰度化和二值化 mode:轮廓的检索模…

高分子PEG: mPEG-Phosphate MV 1K 2K 3.4K 5K 10K 20K 特点分享

【中文名称】甲氧基-聚乙二醇-磷酸盐 【英文名称】 mPEG-Phosphate 【结 构 式】 【CAS号】N/A 【分子式】N/A 【MV】1000、2000、3400、5000、10000、20000 【基团部分】Phosphate PEG,磷酸盐PEG 【纯度标准】95% 【包装规格】1g,5g,10g&…

java基于Springboot的影视管理系统-计算机毕业设计

项目介绍 影城管理系统的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台:首页、电影信息、电影资讯、个人中心…

acwing-Django项目——前期工作+前端js css

文章目录1.租服务器配置环境 配置docker环境创建工作用户ljh并赋予sudo权限配置免密登录方式给server1装环境装docker将AC Terminal中的/var/lib/acwing/docker/images/docker_lesson_1_0.tar镜像上传到租好的服务器中将镜像加载到本地配置docker环境创建项目配置git运行一下dj…

C++中前置操作性能一定优于后置操作?

后置操作和前置操作,一个会产生临时变量,一个不会产生临时变量,其原因是:前置操作遵循的规则是change-then-use,而后置操作遵循的规则是use-then-change。正因为后置操作的use-then-change原则,使得编译器在…

Python如何pip批量安装指定包 - 最简单方法

文章目录背景解决办法1. 制作requirements.txt文件2. 将requirements.txt传到需要部署的电脑上3. 批量安装包背景 有很多台服务器需要配置, 简单说也就是公司给我配备了3台Windows, 我需要配置Python环境并安装7个包, 如果按照常规的pip install我至少得安装3x721次, 并且得一…

data shift--学习笔记

一般假设训练集和测试集是独立同分布的,才能保证在训练集上表现良好的模型同样适用于测试集。当训练集和测试集不同分布时,就发生了dataset shiftdata shift类型: 协变量偏移(covariate shift): 协变量&…

简约而不简单!分布式锁入门级实现主动续期-自省

一、背景 一个分布式锁应具备的功能特点中有避免死锁这一条: 如果某个客户端获得锁之后处理时间超过最大约定时间,或者持锁期间内发生了故障导致无法主动释放锁,其持有的锁也能够被其他机制正确释放,并保证后续其它客户端也能加锁…

Unity 3D 刚体(Rigidbody)|| Unity 3D 刚体实践案例

Unity 3D 中的 Rigidbody 可以为游戏对象赋予物理特性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的物理学现象。 我们通常把在外力作用下,物体的形状和大小(尺寸)保持不变,而且内部…

Vue3 —— Pinia 的学习指南以及案例分享

文章目录 前言一、什么是pinia?二、为什么要使用Pinia?三、Pinia对比Vuex四、具体使用方法 1.安装2.创建一个store五、state 1.访问state2.重置状态3.修改state4.批量修改state5.替换state六、getters 1.访问getters2.getters传参3.写为普通函数可调用this4.访问其他的store中…

可见光热红外图像融合算法设计

本设计方式中对于多源图像融合算法采用以下三个步骤进行: 多源图像目标特征提取;多源图像配准;多源图像融合。 1.多源图像目标特征提取 多源图像的目标特征提取中,优先对目标图像进行预处理,对于可见光图像…

品牌势能铸就非凡经典,凯里亚德与郁锦香酒店亮相品牌沙龙会烟台站

近日,汇聚国内众多投资人的锦江酒店(中国区)品牌沙龙会烟台站顺利举行。本次沙龙活动以“齐风鲁韵 锦绘未来”为主题,锦江酒店(中国区)旗下众多优秀品牌共同亮相。凯里亚德酒店与郁锦香酒店在本次活动中向投资人展示了在如今复杂多变的酒店市场中如何以强…

Java面向对象:继承

面向对象三大特征之二:继承 目录 面向对象三大特征之二:继承 1.继承是什么: 2.继承的好处 继承概述的总结 1.什么是继承?继承有什么好处? 2.继承的格式是什么样的? 3.继承后子类的特点是什么&#x…

Docker介绍及项目部署

安装Docker 关闭SELINUX服务 SELINUX是CentOS系统捆绑的安全服务程序,因为安全策略过于严格,所以建议搭建关闭这项服务 修改/etc/selinux/config文件,设置SELINUXdisabled vim /etc/selinux/config # 设置SELINUXdisabled# 设置完成后重启…

[附源码]计算机毕业设计姜太公渔具销售系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Crane如何做到利用率提升3倍稳定性还不受损?

作为云平台用户,我们都希望购买的服务器物尽其用,能够达到最大利用率。然而要达到理论上的节点负载目标是很的,计算节点总是存在一些装箱碎片和低负载导致的闲置资源。下图展示了某个生产系统的CPU资源现状,从图中可以看出&#x…

编译器设计(十二)——指令选择

文章目录一、简介二、代码生成三、扩展简单的树遍历方案四、通过树模式匹配进行指令选择4.1 重写规则4.2 找到平铺方案五、通过窥孔优化进行指令选择5.1 窥孔优化5.2 窥孔变换程序六、高级主题6.1 学习窥孔模式6.2 生成指令序列七、小结和展望一、简介 指令选择(in…