【Unity】创建一个自己的AR安卓程序

news/2024/5/4 18:36:06/文章来源:https://blog.csdn.net/qq_41084756/article/details/129557200

目录

  • 1 环境配置
  • 2 下载官方提供的AR Starter工程
  • 3 AR Starter工程中的包以及打包设置
    • 3.1 Package Manager
    • 3.2 Player Settings
  • 4 创建一个新的AR场景
  • 5 AR场景中的物体
  • 6 在unity中运行AR场景
  • 7 在AR场景的基础上添加自己的想法
    • 7.1 修改Cube的旋转速度/方向
    • 7.2 将Cube替换为其他物体
  • 8 打包至安卓手机上运行

1 环境配置

Unity版本:2021.3.1f1 LTS
可在此处通过打开Unity Hub下载

安装过程中提示添加模块时,需要选择Android Build Support及其子模块。
在这里插入图片描述

2 下载官方提供的AR Starter工程

zip下载位置在此,点击即可下载。
下载完成解压后,即可通过Hub打开该工程。

3 AR Starter工程中的包以及打包设置

3.1 Package Manager

打开该工程的包管理器(Windows→Package Manager),选择工程中的包(In Project),可以观察到,相比于普通的项目,多了以下的这些包:

在这里插入图片描述

其中,URP包表示该项目是URP管线项目,其他的包:

  • AR Foundation:提供了用于在Unity中快速构建AR交互相关的类和GameObjects。
  • ARCore:安卓的AR框架。AR Foundation会与ARCore相联系以在安卓设备上获得AR功能。
  • ARKit:苹果的AR框架。AR Foundation会与ARKit相联系以在苹果设备上获得AR功能。
  • XR Plugin Management:管理ARCore和ARKit的工具。
    在这里插入图片描述
    目前,ARKit比ARCore支持更多的功能,包含3D物体追踪以及身体追踪。

3.2 Player Settings

打开该工程的项目设置(Edit→Project Settings),在左侧侧边栏选择Player,可以在安卓图标的面板下对项目进行设置。
在Other Settings中可以观察到有如下的一些更改:

  • 移除了安卓的Vulkan图形API,因为ARCore尚不支持。
    在这里插入图片描述

  • 设置安卓支持的最低级别API。

  • 将脚本后端设置为IL2CPP而不是Mono,以支持64位。

  • 将目标架构设置为ARM64以满足Google Play的64位要求。
    在这里插入图片描述

4 创建一个新的AR场景

项目中预制了一个AR模板场景,我们可以基于该场景创建自己的AR场景。
在Assets的Scene文件夹下使用Ctrl+N新建一个Scene(或者File→New Scene),选择AR场景,点击Create创建:
在这里插入图片描述
这样,就可以在该新建的AR Scene中添加自己的模型了,使用Ctrl+S保存该场景并为其命名。

如果不对该场景进行修改,直接打包出来安装在安卓手机上的话,那么你将看见一个旋转的立方体漂浮在空中。

安卓手机在打开应用后,会提示安装Google Play Services for AR,到应用商店安装好后再开启应用,允许应用使用摄像机,就会发现有一个旋转的立方体是固定在一个位置在旋转。

5 AR场景中的物体

在一个经典的3D场景中,unity会自动为我们创建2个物体:主摄像机Main Camera以及方向光Directional Light。

而对于AR场景来说,将会有这些物体:
在这里插入图片描述

  • AR Session Origin:空间中的AR设备。当用户在现实世界移动或旋转AR设备时,AR Session Origin在unity场景中也会相应的移动或旋转。
  • AR Camera:AR Session Origin的子物体,也即AR场景中的主摄像机,因此必须给它标上Main Camera的tag。它拥有一些组件使得这个相机能够在AR中起作用,如AR Pose Driver、AR Camera Manager和AR Camera Background。
  • AR Session:是一个Session管理器,包括帧率和与设备的通信。注意,一个场景中只能有一个激活的AR Session。

6 在unity中运行AR场景

  1. 观察到黑色的背景下,在中心有一个旋转的正方体。打包到手机上运行时,这个黑色背景会被替换成真实世界的环境。
    在这里插入图片描述

  2. 观察到一个名为Trackables的物体会作为AR Session Origin的子对象出现。它将用于存储现实世界环境中检测到的任何物体,如追踪到的面孔、平面或点等等。
    在这里插入图片描述

  3. 在运行状态下,选中AR Session Orgin物体,并在Inspector面板修改其position以及rotation值,这实际上就是在模拟用户手持着安卓设备在移动。

7 在AR场景的基础上添加自己的想法

7.1 修改Cube的旋转速度/方向

如果要使得Cube旋转得更快些,可以通过修改Cube物体下挂载的Scene Template_Rotate Cube脚本中的Rotate Speed来调整,修改Object Rotation可以调整Cube的旋转方向。
在这里插入图片描述

7.2 将Cube替换为其他物体

如果要添加其他物体,或者替换掉Cube,那么可以直接将物体添至AR Camera的可视范围内,为其挂载上Scene Template_Rotate Cube脚本即可。
在这里插入图片描述

8 打包至安卓手机上运行

注意,平台需切换至安卓平台。项目按照3.2节配置即可。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

今年面试好激烈!

金三银四过去一半,市场火热,但是大家就业压力却没有缓解多少。 很多粉丝后台留言,Java程序员面临的竞争太激烈了…… 我自己也有实感,多年身处一线互联网公司,虽没有直面过求职跳槽的残酷,但经常担任技术面…

【开发实践】在线考试系统(一) 生成错题知识点的思维导图

一、需求分析设计 笔者开发了一个在线考试系统,导师提出一个需求:添加对考试错题相关知识点的总结。 在question表中关联知识点的编号,题目可能关联多个知识点。这里笔者的设计是,只关联一个知识点,便于维护。 下面是知…

【python实操】马上毕业了,你还不懂什么是守护线程、线程、进程?(附12306抢票程序-源代码)

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…

预训练语言模型(GPT,BERT)

文章目录GPT 模型预训练语言模型模型和学习BERT 模型去噪自编码器模型和学习模型特点References在自然语言处理中事先使用大规模语料学习基于 Transformer 等的语言模型,之后用于各种任务的学习和预测,称这种模型为预训练语言模型。代表性的模型有 BERT …

LCX端口转发之远程桌面端口双重映射多主机转发

1.下载LCX端口转发工具源码及程序: git clone https://github.com/UndefinedIdentifier/LCX lcx1 2.复制到目标机: winxp win2003 win7

上海亚商投顾:创业板指低开高走ChatGPT概念股再爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪大小指数今日走势分化,沪指盘中一度跌超1%,午后震荡回升跌幅收窄,创业板指则低开…

iOS多线程——GCD学习总结

文章目录多线程编程进程线程线程与进程的关系CPU核GCD简介为什么我们要使用GCD任务同步执行(sync):异步执行(async):队列(Dispatch Queue)串行队列(Serial Dispatch Queu…

Tensor高阶用法:快速掌握Tensor切分、变形等方法

要想在实际的应用中更灵活地用好 Tensor,Tensor 的连接、切分等操作也是必不可少的。我们就通过一些例子和图片来一块学习下。虽然这几个操作比较有难度,但只要耐心分析,然后上手练习,还是可以拿下的。 Tensor 的连接操作 在项目…

SQL语法基础

简介 SQL (Structured Query Language) 是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。 以下介绍postgresql语法&am…

ChatGPT的多种用法(持续更新中。。。)

指南 写小说 “写一本拥有出人意料结局的推理小说。” “写一个让读者参与其中的交互小说。” “为孩子们写一本激励他们勇敢面对挑战的小说。” “编写一个有关科技创新的未来世界的小说。” “创造一个让读者感到沉浸其中的幻想故事。” 充当 Linux 终端 我想让你充当…

数据结构绪论

​ 文章目录1 知识结构2 数据结构的基本概念2.1 算法的基本概念2.2 数据结构三要素2.2.1 数据的逻辑结构线性结构非线性结构2.2.2 数据的存储(物理)结构数据结构的四种存储结构2.2.3 数据的运算3 算法的基本概念3.1 基本概念3.1.1 算法(Algor…

MIPI D-PHYv2.5笔记(5) -- 不同的PHY配置方式

声明:作者是做嵌入式软件开发的,并非专业的硬件设计人员,笔记内容根据自己的经验和对协议的理解输出,肯定存在有些理解和翻译不到位的地方,有疑问请参考原始规范看 规范5.7章节列举了一些常见的PHY配置,但实…

jsp+ssm在线考试系统+错题集Spring+SpringMVC+Mybatis编写实现的项目

本系统设计了三种角色:管理员,用户和教师。通过此系统,教师可以在线课程信息、考试内容、在线考试、考试管理进行发布。以及在线对试卷进行批阅和批量删除,用户可以对自己任课老师布置的课程信息进行下载,对老师已经批…

TryHackMe-Willow(boot2root)

Willow 柳树下有什么? 端口扫描 循例 nmap NFS枚举 直接挂载进来 存在一个rsa_key 暂时不知道有啥用,先去看80 Web枚举 进入80 看起来像是16进制,使用xxd转换 得到了用户名和rsa密文 在线计算器解密一下得到ssh的私钥 需要密码 ssh2johnj…

现在转行IT还有机会吗?

其实大部分所谓的机会都是建立在我们准备好的基础上的,因为大多数的企业并不会启用一个零基础毫无经验,或者没有企业所需要特质的人员。作为普通人而言,只有当你准备好之后,你才会看到机会,在这之前,你只会…

Web自动化测试入门

1.Web自动化测试的价值(为什么要做web自动化测试) 我们可以使用脚本语言代替人来进行测试 2.Web自动化测试相关技术: Selenium:支持多语言,行业内最火最主流Pytest/JUnit5:最好用最全面的单元测试框架Allure:测试报告3.Web自动化…

NotionAI - 文档领域的ChatGPT,一款 AI 加持的在线文档编辑和管理工具

简介 NotionAI - 文档领域的ChatGPT,一款 AI 加持的在线文档编辑和管理工具 作为国际领先的在线文档编辑和管理工具,Notion受到了广大用户的欢迎,尤其是程序员们。它不仅支持笔记、编码等基本的在线文档功能,还支持团队协作、项…

简单XXE漏洞理解以及在实战中演练【网络安全】

1.概念 XXE(XML External Entity Injection) 全称为 XML 外部实体注入。这是一个注入漏洞,强调利用点是外部实体 ,将注意力集中于外部实体中,而不要被 XML 中其他的一些名字相似的东西扰乱了思维,如果能注入 外部实体并且成功解析…

基于springboot实现留守儿童爱心网站平台【源码+论文】分享

基于springboot实现留守儿童爱心网站演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&…

CS-Stdio Display Builder

Display Builder 1) 操作界面编辑器和Runtime 2)在EPICS edd/dm, medm, edm, ...想法上构建 3)与CS-Studio BOY兼容性非常好 4)大约2015年在CS-Stdio/Eclipse中开始,现在在CS-Studio/Phoebus中 5) 从209年以Web Runtime获取。…