【Unity】Unity中AR Foundation的使用
前段时间通过Unity 3d打包测试对比ARCore与ARKit环境探针的效果的过程中,在Google AR Core官网下载到了ARCore for Unity SDK,但是在苹果官网却没有找到ARKit for Unity SDK。于是我想在Unity AssetStore也许能找到,结果也是没有,经过多方查询才知道,原来Unity AssetStore早在2018年就下线了ARkit,Unity自己构建了一个AR开发平台,这就是AR Foundation。
什么是AR Foundation?

在AR Foundation诞生之前,如果我们需要开发一个多平台的AR应用,会使用 ARCore XR Plugin 开发一个Android设备版本,使用 ARKit XR Plugin 开发一个iOS设备版本。由于底层API的不同,这样我们就需要同时维护多份代码,这无疑增加了我们工作量和开发成本。因此Unity利用其跨平台的优势,开发了一个与平台无关的AR开发工具包,Unity将这个AR开发工具包命名为“AR Foundation”。
AR Foundation本身并没有实现任何AR功能,而是定义了一个多平台API。AR Foundation这个平台架构于各平台AR SDK之上,对各个平台的AR SDK进行了二次封装,其目的就是利用Unity的跨平台能力构建一种与平台无关的AR开发环境。目前AR Foundation包含的AR SDK有ARCore、ARKit、Magic Leap、Hololens,相信在后续AR Foundation会兼容更多的主流AR SDK。在进行开发时,用户可根据自己项目需求选择合适的底层SDK版本。

AR Foundation与ARCore、ARKit都正处于快速发展中,ARCore基本保持每两个月进行一次更新频率,不过AR Foundation功能的实现要比底层的原生API稍晚一些。下表展示了AR Foundation中ARCore、ARKit、Magic Leap、Hololens功能对比:

利用AR foundation打包Android与ios的流程:
下面来讲一下利用AR Foundation来打包到Android与ios的基本流程:

我用的是Unity版本是2019.4.14,通过Unity Hub下载把Android与ios打包必须的一些环境都给装上了,后续就不用单独就配置了。
Android配置流程:
1.Unity主窗口Windows->PackageManager安装AR Foundation与ARCore XR Plugins(它们版本得相同);
2.Edit→ProjectSetting→XR Plugins-in Management→Plug-in Providers→勾选ARCore;
3.Edit→ProjectSetting→Player→othersetting,在Other Setting选项卡中取消勾选 Multithreaded Rendering(多线程渲染),最后还要删除Vulkan,因为Android不支持Vulkan;
4.设置与ARCore兼容的Android最低版本,找到“Minimun API level”选项,点击其下拉菜单,选择“Android7.0‘nougat’(API level 24)”或以上。

iOS配置流程:
Unity主窗口Windows→Package Manager安装AR Foundation与ARKit XR Plugins(它们版本得相同);
Edit→Project Setting→XR Plugins-in Management→Plug-in Providers→勾选ARKit;
我们设置Target SDK为Device SDK。设置最低iOS系统版本为11.0,因为支持ARKit的最低iOS版本是11.0。最后设置处理器架构为ARM64。

完成以上基础设置,就可以场景中添加AR基础组件,在Hierarchy窗口中的空白处点击鼠标右键,在弹出的级联菜单中依次选择XR→AR Session和XR→AR Session Origin,新建这两个AR基础组件。内容可根据自己需求来增加,不清楚如何开发的朋友可以先在GitHub上下载相关示例,附链接:github.com/Unity-Technologies/arfoundation-samples
ARCore打包到安卓时,会报一个Gradle版本不对的错误,具体解决方法可参照: developers.google.com/ar/develop/unity/android-11-build
ARKit打包出来是一个Xcode工程,我们需要在Xcode中打包发布到真机,这个环节是要用到苹果电脑,而且对系统版本和Xcode版本是有要求的,详细的操作步骤可参照: www.doulipark.com/2019/1122.html
通过AR Foundation开发后,如果想要让不同设备的用户直接通过URL访问体验,可以将应用上传到3DCAT实时渲染云平台,用户体验AR应用不用下载跟安装APP,任何时间地点,任何设备都可以直接访问,在线体验3D应用。3DCAT实时渲染云平台是一个三维应用的托管运行平台,在云端提供强大的图形实时渲染计算服务,平台配备弹性GPU资源集群,支持自动负载均衡和伸缩扩容,支持海量用户同时安全访问应用。
3DCAT是集实时渲染、实时3D可视化、像素流送、虚拟仿真等相关技术服务于一身的实时渲染云平台。利用云端的海量GPU算力处理繁重的图像渲染计算并串流同步输出到终端设备,从而实现终端设备的轻量化,让高质量三维图形应用变得无处不在。
了解更多实时渲染相关资讯,体验目前3DCAT实时渲染平台在一些行业已经应用的demo,欢迎访问3DCAT实时渲染云平台:https://www.3dcat.live
以上就是3DCAT实时渲染云平台整理发布的《Unity中AR Foundation的使用》一文。如需转载,请注明出处及链接:https://www.3dcat.live/news/unity-ar-foundation
了解更多虚拟仿真相关资讯,请关注3DCAT实时渲染云平台:https://www.3dcat.live
【Unity】Unity中AR Foundation的使用的更多相关文章
- Unity AR Foundation 和 CoreML: 实现手部的检测和追踪
0x00 前言 Unity的AR Foundation通过上层抽象,对ARKit和ARCore这些底层接口进行了封装,从而实现了AR项目的跨平台开发能力. 而苹果的CoreML是一个可以用来将机器学习 ...
- i3D的一篇Unity教程中的笔记
原地址:http://blog.sina.com.cn/s/blog_72b936d80100wwej.html 以下是i3D的一篇Unity教程中的笔记. i3D的这篇教程是[i3D.Next-Ge ...
- [译]如何在Unity编辑器中添加你自己的工具
在这篇教程中你会学习如何扩展你的Unity3D编辑器,以便在你的项目中更好的使用它.你将会学习如何绘制你自己的gizmo,用代码来实现创建和删除物体,创建编辑器窗口,使用组件,并且允许用户撤销他们所作 ...
- 关于Unity项目中创建项目遇到的一些问题
1.Unity调用Android的方法默认不是在UI线程执行,所以在Android上写一些页面的重绘的方法,让Unity去调用时,注意要在Android中添加对应的runOnUiThread才可以: ...
- 【Unity优化】如何实现Unity编辑器中的协程
Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种 ...
- 在Unity 3D中加入Image图片
在Unity 3D中加入Image图片,我在刚开始是加不进去的,为什么呢?因为没有图片,图如下: 原因就是我们没有把图片设置为Script,图片的格式还是默认的那个,这只能作为贴图使用.我们将图片进行 ...
- Unity 3D中的阴影设置
在Unity 3D中,经常需要用到光照阴影,即Directional Light的Shadow,Shadow分为Hard Shadow和Soft Shadow.区别是Soft Shadow的阴影边缘比 ...
- Unity 3D中不得不说的yield协程与消息传递
1. 协程 在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花.怪物死亡后20秒再复活之类的.刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这 ...
- MVVM框架在unity开发中的使用
1.什么是MVVM 借用一下百度百科上对MVVM的介绍,MVVM是Model-View-ViewModel的简写,它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我 ...
随机推荐
- 思维导图软件MindManager的视图介绍
MindManager思维导图软件提供了多种视图帮助用户更好边界组织思维导图,包括导图视图.大纲视图.甘特图.链接的视图等等,下面将逐一介绍MindManager视图模式及其作用. 打开软件视图功能区 ...
- 工作中使用RabbitMQ
写一个基类 1 <?php 2 3 namespace BI\Service\RabbitMQJob; 4 5 use AMQPConnection; 6 use AMQPChannel; 7 ...
- python连接mysql循环插入千万条数据脚本
之前都是在mysql的存储过程中插入数据,毕竟mysql语法函数有限,很多都有限制.突然想到学了python正好可以练练手.首先需要安装pymysql模块包(模块包安装请自行百度) pip insta ...
- 【ACwing 95】费解的开关——枚举 + 搜索
(题面来自ACwing) 你玩过"拉灯"游戏吗?25盏灯排成一个5x5的方形.每一个灯都有一个开关,游戏者可以改变它的状态.每一步,游戏者可以改变某一个灯的状态.游戏者改变一个灯的 ...
- 【知识点】C/C++编码规范
为了提高我们写的代码的可读性,本文章说一下C/C++的编码规范. 一.源文件头部的注释 /******************************************************* ...
- C#(一)基础篇—类型与变量
于今日起学习巩固C#基础 2020-12-01 本随笔用于个人回忆理解,记录当天学习过程,内容多从书中整理与自我学习了解,如有问题麻烦指正 以后有时间会单独分版块叙述 不管什么语言,都从一个Hello ...
- 探究 | 如何捕获一个Activity页面上所有的点击行为
前言 最近逛wanAndroid论坛,发现一个有趣的问题:如何捕获一个Activity页面上所有的点击行为. 一起研究下吧,不想看源码的小伙伴可以直接看文末总结- 准备工作 先得罗列出页面上的一些点击 ...
- 记一次容器CPU高占用问题排查
起因:发现docker中有两个容器的CPU持续在百分之95以上运行了一晚上 执行命令:docker stats 发现这个两个大兄弟一点没歇满负荷跑了一晚上,再这么下去怕不是要GG 容器里跑的是JAVA ...
- Spring Boot + RabbitMQ 使用示例
基础知识 虚拟主机 (Virtual Host): 每个 virtual host 拥有自己的 exchanges, queues 等 (类似 MySQL 中的库) 交换器 (Exchange): 生 ...
- OpenCV-Python setMouseCallback回调函数中图像变量img的传递方法解析
☞ ░ 前往老猿Python博文目录 ░ 一.使用全局变量进行变量传递 OpenCV-Python中可以使用setMouseCallback来设置鼠标事件的回调函数,我们来看个样例. 1.1.案例1代 ...