前段时间通过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. 新鲜出炉,这是全网讲的最详细的springboot整合消息服务了吧,建议收藏!

    springboot整合activeMq ActiveMq是Apache提供的开源消息系统采用java实现, 很好地支持JMS(Java Message Service,即Java消息服务) 规范 A ...

  2. 安装Ubuntu16.04系统后分辨率底的问题

    问题描述:安装Ubuntu系统后有可能会遇到分辨率很低的问题,别着急,这是一个小问题. 解决方案:修改/etc/default/grub,打开终端用命令:sudo gedit /etc/default ...

  3. 【MathType教学】表示分类的大括号怎么打

    大括号是一种常见的数学符号,可以用于集合.分段函数中,其实大括号还可以用来总结数学知识,比如对三角形进行分类,此时用的大括号可以称为表示分类的大括号.MathType作为专业的数学公式编辑器,可以快速 ...

  4. C语言讲义——内存管理

    动态分配内存 动态分配内存,在堆(heap)中分配. void *malloc(unsigned int num_bytes); 头文件 stdlib.h或malloc.h 向系统申请分配size个字 ...

  5. Java基础教程——封装

    面向对象的三大特征 封装:encapsulation 继承:inheritance 多态:polymorphism 封装 类是一个最基本的封装 封装的好处: 数据安全:保证数据安全 方便调用:提供清晰 ...

  6. Memtest在CentOS下的使用方法。

    #memtest,指定测试大小范围248G,指定测试1次 nohup memtester 248G 1 > mem218.log&

  7. JDK阅读之Enum

    JDK学习之Enum enum的使用 在没有enum之前如果想要定义一些常量,就会采用如下的方式 假设要定义四个常量表示不同的季节 public class SeasonWithoutEnum { p ...

  8. codeforces 1424J,为了过这题,我把祖传的C++都用上了!

    大家好,我们选择的是Bubble Cup比赛Div2场次的J题,不用问我Bubble Cup是什么比赛,我也不清楚.总之是一场算法比赛就是了.可能是这个比赛知名度比较低吧,参与的人数也不是很多,我们选 ...

  9. 冲刺随笔——Day_Four

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...

  10. 从docker介绍及其简介

    一.引言 1.我本地代码运行没问题啊,但是别人机器运行不了,从而导致环境不一致的问题 2.那个兄弟又写死循环了,怎么这么卡,在多用户的操作系统下,会相互影响. 天猫双十一的情况下,用户量暴涨,从而导致 ...