前段时间通过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配置流程:

  1. Unity主窗口Windows→Package Manager安装AR Foundation与ARKit XR Plugins(它们版本得相同);

  2. Edit→Project Setting→XR Plugins-in Management→Plug-in Providers→勾选ARKit;

  3. 我们设置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的使用的更多相关文章

  1. Unity AR Foundation 和 CoreML: 实现手部的检测和追踪

    0x00 前言 Unity的AR Foundation通过上层抽象,对ARKit和ARCore这些底层接口进行了封装,从而实现了AR项目的跨平台开发能力. 而苹果的CoreML是一个可以用来将机器学习 ...

  2. i3D的一篇Unity教程中的笔记

    原地址:http://blog.sina.com.cn/s/blog_72b936d80100wwej.html 以下是i3D的一篇Unity教程中的笔记. i3D的这篇教程是[i3D.Next-Ge ...

  3. [译]如何在Unity编辑器中添加你自己的工具

    在这篇教程中你会学习如何扩展你的Unity3D编辑器,以便在你的项目中更好的使用它.你将会学习如何绘制你自己的gizmo,用代码来实现创建和删除物体,创建编辑器窗口,使用组件,并且允许用户撤销他们所作 ...

  4. 关于Unity项目中创建项目遇到的一些问题

    1.Unity调用Android的方法默认不是在UI线程执行,所以在Android上写一些页面的重绘的方法,让Unity去调用时,注意要在Android中添加对应的runOnUiThread才可以: ...

  5. 【Unity优化】如何实现Unity编辑器中的协程

    Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种 ...

  6. 在Unity 3D中加入Image图片

    在Unity 3D中加入Image图片,我在刚开始是加不进去的,为什么呢?因为没有图片,图如下: 原因就是我们没有把图片设置为Script,图片的格式还是默认的那个,这只能作为贴图使用.我们将图片进行 ...

  7. Unity 3D中的阴影设置

    在Unity 3D中,经常需要用到光照阴影,即Directional Light的Shadow,Shadow分为Hard Shadow和Soft Shadow.区别是Soft Shadow的阴影边缘比 ...

  8. Unity 3D中不得不说的yield协程与消息传递

    1. 协程 在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花.怪物死亡后20秒再复活之类的.刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这 ...

  9. MVVM框架在unity开发中的使用

    1.什么是MVVM 借用一下百度百科上对MVVM的介绍,MVVM是Model-View-ViewModel的简写,它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我 ...

随机推荐

  1. python-基础入门-6快速入门总结

    快速入门 程序输出: 1.print语句,字符串用双引号括起来 _在解释器中表示最后一个表达式的值. print语句 与字符串格式(%)结合使用,能实现字符串替换功能. >>>pri ...

  2. python办公入门3:xlrd操作工作表

    工作表 1 import xlrd 2 3 #接受工作表 4 data=xlrd.open_workbook("data.xlsx") 5 #查询第一个工作表的打开状态 6 pri ...

  3. python3 Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接

    报错源代码from selenium import webdriverimport unittestimport timefrom HTMLTestRunner import HTMLTestRunn ...

  4. P5851 [USACO19DEC]Greedy Pie Eaters P

    如果只考虑选哪些奶牛吃派和奶牛吃派的顺序,就会陷入僵局,那么我们可以考虑派的情况. 套路地令 \(f_{i,j}\) 表示 \(i\sim j\) 这一段派,能满足一些奶牛,它们的最大可能体重. \[ ...

  5. 一张图彻底理解Spring如何解决循环依赖!!

    写在前面 最近,在看Spring源码,看到Spring解决循环依赖问题的源码时,不得不说,源码写的太烂了.像Spring这种顶级的项目源码,竟然存在着这种xxx的代码.看了几次都有点头大,相信很多小伙 ...

  6. Mac 上超好用的代码对比工具 beyond compare,对比json差异

    导读 昨天下午,公司业务跑不通,然后开发组长让架构师联系我,给我发一个json和部署到dev上的微服务url,让我去测试下,将发来的json放到json.cn上愣是解析不出来,我就用之前的json请求 ...

  7. 【mq读书笔记】客户端处理消息(回调提交到异步业务线程池,pullRequest重新入队)

    看一下客户端收到消息后的处理: MQClientAPIImpl#processPullResponse private PullResult processPullResponse( final Re ...

  8. LaTeX相关自学文档

    install-latex-guide-zh-cn: lshort-zh-cn: 百度网盘链接:https://pan.baidu.com/s/1cBv9Fu8KFaf0QFZ7_slxmw 提取码: ...

  9. 2020.10.17 JZOJ 提高B组T2 导弹拦截

    2020.10.17 JZOJ 提高B组T2 导弹拦截 题目 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统. 敌国的导弹形成了立体打击,每个导弹可以抽象成一个三维空间中的 ...

  10. Zookeeper(5)---分布式锁

    基于临时序号节点来实现分布式锁 为什么要用临时节点呢?如果拿到锁的服务宕机了,会话失效ZK自己也会删除掉临时的序号节点,这样也不会阻塞其他服务. 流程: 1.在一个持久节点下面创建临时的序号节点作为锁 ...