Unity-AR 简介_unity ar-程序员宅基地

技术标签: ar  unity  游戏引擎  unity 相关  

Unity-AR 简介

现有Unity AR Sdk

  1. ARKit : 苹果推出的AR开发平台

  2. ARCore : Google 推出的增强现实 SDK

  3. ARFoundation : ARFoundation是ARKit XR插件和ARCore XR插件 的集合

  4. vuforia : 高通推出的针对移动设备扩增实境应用的软件开发工具包

  5. EasyAR : 国内 上海视辰信息 增强现实(AR)互动营销技术和解决方案

ARFoundation

1. 简介

​ 2017年,Apple公司与Google公司相继推出了各自的AR开发SDK工具包ARKit和ARCore,分别对应iOS平台与Android平台AR开发。ARKit和ARCore推出后,极大的促进了AR在移动端的普及发展,将AR从实验室带入到普通消费场景中。由于当前的移动手机操作系统主要由iOS与Android两大系统统治,ARKit和ARCore分别服务于各自己的系统平台,这意味着软件产商要开发一套移动AR应用就必须使用ARKit开发一个iOS版本、使用ARCore开发一个Android版本,这无疑增加了开发时间与成本。
  ARCore提供了Android、Android NDK、Unity、Unreal开发包,ARKit官方只提供了Xcode开发包,这也提高了利用其他工具进行开发的开发者学习成本。在这种情况下,Unity构建了一个AR开发平台,这就是ARFoundation,这个平台架构于ARKit和ARCore之上,其目的就是利用Unity的跨平台能力构建一种与平台无关的AR开发环境,换句话说,ARFoundation对ARKit与ARCore进行了再次封装,并按照用户的发布平台自动选择合适的底层SDK版本。

因此,ARFoundation是ARKit XR插件(com.unity.xr.arkit)和ARCore XR插件(com.unity.xr.arcore)的集合,虽然最终都使用ARKit SDK和ARCore SDK,但因为Unity再次封装的缘故,与专业平台(如ARKit插件和ARCore SDK for Unity)相比,C#调用的API略有不同。
  ARFoundation的目标并不局限于ARKit与ARCore,它的目标是建成一个统一、开放的AR开发平台,因此,ARFoundation极有可能在下步发展中纳入其他AR SDK,进一步丰富AR开发环境。在进一步的发展中,ARFoundation不仅支持移动端AR设备,还会支持穿戴式AR设备开发。
  从上面的描述我们也可以看出,ARFoundation它并不提供AR的底层开发API,这些与平台相关的API均由第三方如ARKit与ARCore提供,因此ARFoundation对某特定第三方功能的实现要比原生的晚(ARFoundation将某第三方SDK的特定功能集成需要时间)。

2. ARFoundation与ARCore、ARKit的关系

ARFoundation提供了一个独立于平台的脚本API和MonoBehaviour,因此,开发者可以通过ARFoundation使用ARCore和ARKit共有的核心功能构建同时适用于iOS和Android两个平台的AR应用程序。换句话说,这可以让开发者只需开发一次应用,就可以部署到两个平台的设备上,不必做任何改动。
  如前所述,ARFoundation实现实现某底层SDK的功能会比原生的晚,因此,如果我们要开发ARFoundation尚不支持的功能,可以单独使用对应的原生SDK。目前,如果我们只面向ARCore进行开发并希望获取完整的功能集,Google为Unity开发提供了ARCore SDK for Unity;如果只面向ARKit进行开发并希望获取完整的功能集,Unity提供了适用于Unity开发的ARKit插件(Apple并未提供Unity的ARKit SDK开发插件,在ARFoundation发展起来以后,Unity肯定不会再继续维护ARKit插件)。
  ARFoundation与ARCore、ARKit的关系如下图所示:
20190611172200952

3. AR Foundation历史事件

​ 2018年10月Unity发布AR Foundation 1.0版本,支持平面追踪、特征点云检测、参考点/锚点、设备追踪、光照估计、射线碰撞。

​ 2019年5月,AR Foundation 2.1 支持图像追踪、物体追踪、面部追踪、环境探针。

​ 2019年6月,AR Foundation 3.0 支持 ARKit 3.0,新增动作捕捉、人物遮挡、多人协作等功能。

​ 2019年9月[MOU1] ,AR Foundation 支持 Magic Leap 以及 HoloLens 1 和 2 。

​ 2019年11月,SenseAR正式集成进了Unity中国增强版2018.4.11C版本中。

4. 专业术语

​ 设备跟踪:跟踪设备在物理空间中的位置和方向。

​ 平面检测:检测水平和垂直表面。

​ 点云:世界坐标空间中的点的集合。

​ 锚点:设备跟踪的任意位置和方向。

​ 光线估算:估算物理空间中的平均色温和亮度。

​ 环境探针:一种用于生成表示物理环境特定区域的立方体贴图的方法。视频链接: https://live.csdn.net/v/embed/163218

​ 人脸跟踪:检测和跟踪人脸。

​ 2D图像跟踪:检测和跟踪2D图像。

​ 3D对象跟踪:检测3D对象。

​ 网格划分:生成与物理空间相对应的三角形网格划分。

​ 身体追踪:在物理空间中识别出的人类的2D和3D表示。

​ 多人协作:在共享的AR体验中跟踪其他设备的位置和方向。

​ 人体分割和遮挡:将距离现实世界中的对象的距离应用于渲染的3D内容,从而实现物理对象与虚拟对象的逼真的融合。https://www.bilibili.com/video/av455309216/

​ 射线广播:查询物理环境中检测到的平面和特征点。

​ 直通视频:优化了将移动摄像机图像渲染到触摸屏上作为AR内容的背景。

​ 会话管理:启用或禁用AR功能时自动对平台级配置进行操作。

​ 遮挡:在真实场景中的位置实现虚拟物体遮挡 视频资源: https://v.qq.com/x/page/g3104nljtqb.html

5.ARKit 设备支持情况
5.1 ARKit版本历史

​ 2017年9月 ARKit 1.0:支持环境光照估测、用户设置锚点、追踪状态更改、AR会话中断和恢复的事件通知等。

​ 2018年3月 ARKit 1.5: 新增垂直平面识别、图像识别、图像分辨率提升50%等。

​ 2018年9月 ARKit 2.0:新增多个玩家联机、图像跟踪、3D对象识别、usdz格式文件和测距仪APP等。

​ 2019年9月 ARKit 3.0:新增人体轮廓抠图、人体四肢识别、原型化和制作AR内容的Reality Composer工具软件等。

​ 2020年3月 ARKit 3.5:新增场景几何体、即时增强现实、定位跟踪配置等。

​ 2020年9月 ARKit 4.0:新增深度API、定位锚、增加面部跟踪支持的设备。

5.2 ARKit对芯片的要求和系统版本

​ **ARKit 4.0:**运行iOS 14,配置了A12芯片的设备

​ **ARKit 3.5:**运行iPadOS 13.4,配置了激光雷达扫描仪的第四代iPad Pro

​ **ARKit 3.0:**运行iOS 13,人体抠图和人体识别需要A12芯片

​ **ARKit 2.0:**运行iOS 12,芯片要求A9以上

​ **ARKit 1.5:**运行iOS 11.3,芯片要求A9以上

​ **ARKit 1.0:**运行 iOS 11,芯片要求A9以上

​ 芯片数据:https://www.apple.com.cn/ipad/compare/

5.3 ARKit支持iPad

​ ARKit 1和ARKit 2需要设备是A9、A10、A11芯片,ARKit 3的人体抠图和人体识别需要A12芯片。

1、12.9英寸iPad Pro

​ 第三代 A12X

​ 第二代 A10X

​ 第一代 A9X

2、11英寸iPad Pro

​ A12X

3、9.7英寸iPad Pro

​ 只销售了3个月,Apple官网未显示该款产品。

4、iPad Air

​ 第三代 10.5英寸 A12

​ 第二代 9.7英寸 A8X 不支持ARKit

​ 第一代 9.7英寸 A7 不支持ARKit

5、9.7英寸 iPad

​ 第六代 A10

​ 第五代 A9

6、7.9英寸 iPad mini

​ 第五代 A12

​ 第四代 A8 不支持ARKit

​ 第三代 A7 不支持ARKit

​ 第二代 A7 不支持ARKit

5.4 ARKit对摄像头类型的要求

ARWorldTrackingConfiguration

​ 世界跟踪配置(6DOF),只能使用后置摄像头,需要iOS 11以上。图像识别和垂直平面识别,需要iOS 11.3以上。

ARFaceTrackingConfiguration

​ 人脸跟踪配置,只能使用前置的TrueDepth摄像头,需要iOS 11以上。

AROrientationTrackingConfiguration

​ 方向跟踪配置(3DOF),只能使用后置摄像头,需要iOS 11以上。

ARImageTrackingConfiguration

​ 图像跟踪配置,只能使用后置摄像头,需要iOS 12以上。

ARImageTrackingConfiguration与ARWorldTrackingConfiguration的区别如下:

​ 1、ARImageTrackingConfiguration当图像快速移动时,也能跟踪上,而ARWorldTrackingConfiguration当图像缓慢的移动,才能跟踪上。

​ 2、ARWorldTrackingConfiguration依赖IMU(惯性测量单元),当周围环境发生运动时,无法正常工作。比如用户在交通工具上,AR显示的虚拟物体会飘走。

​ 3、当使用ARImageTrackingConfiguration时,无法使用ARWorldTrackingConfiguration,也就无法使用ARWorldTrackingConfiguration的水平面识别。

ARObjectScanningConfiguration

​ 对象扫描配置,只能使用后置摄像头,需要iOS 12以上。

ARBodyTrackingConfiguration

​ 人体跟踪配置,只能使用后置摄像头,需要iOS 13以上和A12芯片。

配置要求https://developer.apple.com/documentation/arkit/arconfiguration

6. ARCore设备支持列表
6.1 Android支持使用ARCore设备列表

ARCore 要求:

​ 运行在搭载 Google Play 应用商店的设备上

​ Android 7.0 或更高版本 (如下所示,个别型号需要更高的版本)

​ 若你的应用为AR可选应用, 请修改 minSdkVersion 声明: ‘minSdkVersion14` (API Level 14, Ice Cream Sandwich, version 4.0.1 - 4.0.2)

​ 若你的应用为AR必备应用, 请修改 minSdkVersion 声明: minSdkVersion24(API Level 24, Nougat, version 7.0)

Android(中国)

​ 在中国,设备不搭载 Google 应用商店。 您可以从以下应用商店中选择其一来安装 ARCore:

​ Xiaomi app store (小米应用商店)
​ Huawei Apps Gallery (华为应用商店)
​ OPPO APP Market (OPPO 软件商店)
​ Samsung Galaxy Apps (三星应用市场)
​ V-Appstore (vivo应用商店)

​ 在中国区域,ARCore 支持以下设备:

​ 谷歌官方查看支持ARCore设备地址:https://developers.google.cn/ar/devices arCoreSup

7. 检查设备支持AR功能

​ 配置相关 : https://zhuanlan.zhihu.com/p/330235815

​ 返回状态:

namespace UnityEngine.XR.ARFoundation
{
    /// <summary>
    /// Represents the current state of the AR system.
    /// </summary>
    public enum ARSessionState
    {
        /// <summary>
        /// The AR system has not been initialized. Availability is unknown.
        /// <see cref="ARSession.CheckAvailability"/>.
        /// </summary>		AR系统尚未初始化,可用性未知。
        None,

        /// <summary>
        /// AR is not supported on the current device.
        /// </summary>		当前设备不支持AR。
        Unsupported,

        /// <summary>
        /// The system is checking for the availability of AR.
        /// <see cref="ARSession.CheckAvailability"/>.
        /// </summary>		系统正在检查当前设备上AR的可用性。
        CheckingAvailability,

        /// <summary>
        /// AR is supported, but requires an additional install.
        /// <see cref="ARSession.Install"/>.
        /// </summary>		当前设备支持AR,但是AR支持需要安装其他软件。
        NeedsInstall,		

        /// <summary>
        /// AR software is being installed. <see cref="ARSession.Install"/>.
        /// </summary>		正在安装AR软件。
        Installing,

        /// <summary>
        /// AR is supported and ready.
        /// </summary>		AR已支持并准备就绪。
        Ready,

        /// <summary>
        /// An AR session is initializing (i.e., starting up). This usually means AR is working
        /// but has not yet gathered enough information about the environment.
        /// </summary>		AR会话正在初始化(即正在启动)。这通常意味着AR正在运行,但尚未收集到足够的有关环境的信,
        SessionInitializing,

        /// <summary>
        /// An AR session is running and is tracking (i.e., the device is able to determine its
        /// position and orientation in the world).
        /// </summary>		AR会话正在运行并且正在跟踪(也就是说,设备能够确定其在世界上的位置和方向)。
        SessionTracking
    }
}

远程调试

​ 三方插件: https://zhuanlan.zhihu.com/p/335236675

vuforia

1. 官网链接 :
https://developer.vuforia.com/
2. 简介

​ 目前世界上主流的AR SDK提供厂商,国外的主要是Vuforia、Metaio,国内的主要是EasyAR。其中Metaio在2015年5月已被Apple重金收购,之后就没有再对外公开过SDK,经过两年的封闭开发,Apple已经打造出了强大的ARKit,能够基于庞大的iOS和iPad设备生产出各种惊艳的AR产品。Vuforia也在2015年11月被PTC公司重金收购,但是后续一直在更新并提供SDK,因此在ARKit普及之前,Vuforia一直是开发者最青睐的AR SDK,众多的功能以及高质量的识别技术,良好的跨平台性和兼容性,兼容目前主流的PC,Android,IOS平台.使得Vuforia早已深入人心,是学习AR应用开发的必备技能。

3. Vuforia主要由三大部分组成:
1. Vuforia引擎

​ 这个引擎是一个静态链接库,作为客户端封装进最终的App中,用来进行最主要的识别功能,支持iOS、Android和UWP,并且根据不同的平台开放出了不同的SDK,可以根据需要从Android Studio、Xcode、Visual Studio以及Unity中任选一种作为开发工具。本系列是以Unity为开发工具,因为Unity本来就是个游戏引擎,对3D模型的导入以及控制非常方便,非常适合开发AR程序;

2. 一系列工具。

​ Vuforia提供了一系列的工具,用来创建对象、管理对象数据库以及管理程序licenses。Target Manager是一个网页程序,开发者在里面创建和管理对象数据库,并且可以生成一系列的识别图像,用在AR设备以及云端上。Licenses Manager用来创建和管理程序licenses,因为每一个AR程序都有一个唯一的licenses。Vuforia Object Scanner是Vuforia近段时间新出的工具,用来进行十分黑科技的功能–实物扫描,但是很遗憾目前只支持某些Android设备。

3. 云识别服务。

​ 当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。

4. 主要支持类型

​ 4.1 Image Targets(图像目标)

​ 4.2 Cylinder Targets(圆柱体目标)

​ 识别形状类似于圆柱形的图片,可以将这些图片贴到一些圆柱形物体上比如瓶子、杯子等等,进行识别。

​ 4.3 Multi Targets(多目标)

​ 多对象识别,可以同时识别多张Image Targets,并且可以把它们和几何立体物体结合起来,比如一个纸盒子,或者任意形状的平面。

​ 4.4 Model Targets(模型目标)

​ 通俗点说就是3D物体的识别,也就是形状的识别。这个技术相对于传统的印刷媒体、产品包装的Image Targets识别来说,它能够更详细直观地展示产品的功能和设计。展示的内容可以准确地被附加到物体上,例如汽车、家电以及工业设备和机械设备。这个技术有望取代传统的用户手册和技术服务指导。

​ 4.5 VuMark

​ 这是Vuforia自己研发的一种新型条形码,并且被称为下一代条形码,你能够自己随意设计这种条形码的样式,并且在其中融入相关的数据信息。

​ 4.6 Cloud Rec(云识别)

​ 当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。

​ 4.7 Ground Plane

​ 随着ARKit和ARCore的发布,这个功能大家应该比较能够理解,下一个版本的Vuforia也将具有类似功能。使用Vuforia,你也可以将增强显示的内容放置到一些平面上,例如地板、桌面以及地面等,不管是在室内还是室外均可。

​ 4.8 User Defined Targets(用户自定义目标)

​ 用户从画面选择元素作为自定义目标,进行扫描与追踪

​ 4.9 Virtual Buttons(虚拟按钮)

​ 虚拟按钮是图像上的目标,用户可以在现实世界中触摸,以触发交互动作。

5. 三种不同类型Database的比较

​ Vuforia提供了三种类型的Database,分别是Device、VuMark和Cloud。这三种类型都各有自己的优势,在开发产品时需要根据需求来选择不同的Database:

5.1 Device Database:

​ 包含了安装在设备本地的图片以及3D模型对象的数据库,可以开发Image Target(图片识别)、Multi Targets(多对象识别)、Cylinder Targets(圆柱图像识别)以及Object Target(3D模型识别)。当你的产品需要最快速的图像识别,而且图片对象小于1000张,并且数据库中的对象不会经常更新,那么Device Database就是最好的选择。如果需要开发识别真实3D物体识别的产品,那就只能选择Device类型的。

5.2 Cloud Database:

​ 包含了存储于网络云服务器上的对象的数据库,需要通过网络进行获取。Cloud类型的数据库可以包含数量百万级别的对象,因此当识别对象超过1000个,而且对象需要经常进行更新时,Cloud Database是最好的选择。需要注意的是,Cloud Database只支持单一的图像识别,并不支持Multi target和Cylinder Target。因为是通过网络识别,因此采用Cloud进行识别的话需要根据网络情况花费一定时间。

5.3 VuMark:

​ 这是Vuforia自家研发的条形码,被誉为下一代条形码。和目前市面上通用的条形码不一样的是,VuMark的外观可以完全自主定制,只要符合VuMark的相关规范就行,而且VuMark中还能包含诸如字符串之类的数据信息,非常适合于企业级产品的开发。

5.4 下面这张表是关于Device和Cloud类型的对比:

6. 工程配置参考链接

​ 配置相关: https://www.cnblogs.com/mrmocha/p/9737448.html

​ 教程相关: https://www.jianshu.com/p/a3640e8837b5

EasyAR

1. 官网链接 :
https://www.easyar.cn/
2. 简介

​ EasyAR Sense Unity Plugin是一个建立在EasyAR Sense C# API之上的非常薄的封装,用于在Unity中暴露EasyAR Sense的功能。建议阅读 [EasyAR Sense 文档](https://help.easyar.cn/EasyAR Sense/v4_4/) 来理解EasyAR Sense是如何工作的。

​ 插件的发布包内包含了EasyAR Sense的库文件,因此在使用插件的时候不需要再使用独立的EasyAR Sense。

​ 插件中的EasyAR Sense库文件总是与同版本的EasyAR Sense的文件相同。如果你在尝试让插件运行在不同版本的EasyAR Sense上,必须保证csapi与库文件版本一致。

3. 插件使用说明

​ https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/GettingStarted/PluginIntroduction.html

4. 平台支持
4.1 unity 兼容性

​ EasyAR Sense Unity Plugin需要使用 Unity 2019.4 或更高版本。

Unity > 2019.4 的兼容性

通常来说, EasyAR Sense不依赖很多变化的Unity API,所以如果Unity发布了新版本,EasyAR Sense Unity Plugin一般都可以正常使用。

Unity 2020.2 或更高版本 删除了iOS设备的OpenGLES支持,在这些版本中,视频录制功能将无法在iOS设备上使用。

Unity < 2019.4 的兼容性

​ · 为了提供更好的插件包体验以及支持最新的Unity XR工作流,我们在持续迁移我们的资产文件和脚本到 Unity 2019.4。这会逐渐打破对老版本Unity的兼容性。如果你由于某些原因仍就在使用老版本的Unity,可以尝试从 tgz 包中解压文件,放在工程的 Assets 目录,然后解决使用过程中出现的错误。对于这种用法我们不会提供官方支持,但有一些建议可以参考:

Unity 2019.3: 看上去插件可以在这个版本的Unity上正常工作,因为Unity 2019.3 和 2019.4的差异有限。这个兼容性并不是在设计中的,新的版本可能无法正常工作。

Unity 2019.2: 看上去插件可以在这个版本的Unity上正常工作,你可能需要手动修改package manifest,以添加tarball到工程中。这个兼容性并不是在设计中的,新的版本可能无法正常工作。在Windows上,由于Unity对路径长度限制的不当处理,插件的样例可能无法正常导入,你可以通过文件系统直接复制样例文件到 Assets 文件夹中。

Unity 2019.1: 这个版本的Unity Package Manager UI看起来并不能很好的支持tgz文件。你可以尝试embed插件包,如果这样也不能使用,打破包的封装,将文件直接解压到 Assets 文件夹中。

Unity 2018.4: 这个版本的Unity Package Manager UI不支持sample。并且由于插件使用 Unity 2019.4打包,一些重要文件的 meta文件无法正常工作。你需要打破package封装,将文件直接解压到 Assets 文件夹中。在重新构建meta文件后,可能可以让大部分功能正常工作,但这并未经过测试。

Unity 2017 或 Unity 5: 在这些版本中不存在Unity Package Manager。并且一些兼容这些版本的代码路径已经被删除。你可能需要花更大的力气才能使插件在这些版本中正常使用。

4.2 关于 Android arm64-v8a

​ Unity使用的mono脚本后台不支持Android arm64-v8a。如果需要使用应开启IL2CPP。

4.3 关于 iOS armv7

​ EasyAR Sense 从3.0版本开始终止了对iOS armv7的支持。在库文件中存在空的代码层以确保 XCode 工程始终可以构建,但如果编译时只选择了armv7运行后功能将无法使用。

4.4 .NET API 兼容性

​ EasyAR Sense Unity Plugin兼容 .NET Standard 2.0 API

4.5 Graphics API

​ 从EasyAR Sense 3.0开始,EasyAR Sense Unity Plugin 直接使用Unity的渲染管线,所有Unity中可以使用的图形API都可以天然被支持。

特例:由于EasyAR Sense的内部实现,录屏功能将只能在某些特定条件下工作,即在Android上Graphics API是OpenGLES2或OpenGLES3的情况以及在iOS上Graphics API是OpenGLES2的情况。

4.6 Scriptable Render Pipeline

​ EasyAR Sense Unity Plugin 支持 Universal Render Pipeline (URP) 7.0.0 或更新版本。

​ EasyAR Sense Unity Plugin 不支持 High Definition Render Pipeline (HDRP)。

4.7 Unity AR Foundation 兼容性

​ EasyAR Sense Unity Plugin 支持 AR Foundation 4.0.8 或更新版本。

4.8 华为 AR Engine 兼容性

​ EasyAR Sense Unity Plugin 支持官方的 Huawei AR Engine Unity SDK 2.11.0,其发布文件是 arenginesdk-tool-2.11.0.2.zip

​ 华为目前不再维护 AR Engine 的 Unity SDK,因此我们并不确定是否更新版本的 AR Engine 可以使用。同时,由于 Huawei AR Engine Unity SDK 使用了一些废弃的 Unity API,它不能在 Unity 2020.1 或更新版本上使用。

​ EasyAR Sense Unity Plugin 不支持没有官方Unity SDK的华为 AR Engine。

5. 使用教程

​ https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/Guides/Guides.html

6. aip参考手册

​ https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/ApiReference/ApiReference.html

3. 功能演示 (官网图片)

稀疏空间地图

xishu

稠密空间地图

运动跟踪

表面跟踪

3D物体跟踪

平面图像跟踪

录屏

sdk对比

支持功能 ARFoundation ARCore ARKit vuforia EasyAR
依赖项 ARCore/ARKit Android 7 ip6以上 部分依赖系统
费用 免费 免费 免费 收费/免费带水印 收费/免费带水印
垂直平面检测 ?
水平平面检测
特征点检测 -
光照估计 - √ + Color Temperature - -
射线测试(Hit Testing,对特征点与平面的射线碰撞测试)
图像跟踪
3D物体检测与跟踪 -
环境光探头(Environment Probes) - - -
世界地图(World maps) - -
人脸跟踪(识别、姿态、网格和形状混合) √(iPhoneX 及更高型号A12仿生芯片) - -
云锚点(Cloud Anchors) - -
远程调试(Editor Remoting) 开发中 √-Instant Preview √ -ARKit Remote
模拟器(Editor Simulation) - -
LWRP支持(支持使用ShaderGraph) 开发中 开发中
摄像机图像API -
人体动作捕捉(Motion capture) - √(iPhoneX 及更高型号) - -
人形遮挡(People occlusion) - √(iPhoneX 及更高型号) -
多人脸检测 - √(iPhoneX 及更高型号) - -
多人协作(Collaborative session) - √(iPhoneX 及更高型号) - -
多图像识别 √(iPhoneX 及更高型号)
VuMark(Vuforia自己研发的一种新型条形码) - - - -
虚拟按钮 - - - -
空间地图 - - - -

unity插件

录制脸部动画与制作摄像头运镜

教程地址: https://learn.u3d.cn/tutorial/how-to-use-face-capture#

运行效果

https://zyb-shizi-app-1253445850.cos.ap-beijing.myqcloud.com/pinyin/md_res/ar/QQ20211231-161740-HD.mp4

扩展阅读

AR的一些基本知识: https://zhuanlan.zhihu.com/p/29217512

参考链接:

  1. https://www.zhihu.com/column/c_1300416491410337792
  2. https://www.jianshu.com/p/d21af1bc387c
  3. https://www.jianshu.com/p/3337bca01a93?from=singlemessage

Unity-AR 简介

现有Unity AR Sdk

  1. ARKit : 苹果推出的AR开发平台

  2. ARCore : Google 推出的增强现实 SDK

  3. ARFoundation : ARFoundation是ARKit XR插件和ARCore XR插件 的集合

  4. vuforia : 高通推出的针对移动设备扩增实境应用的软件开发工具包

  5. EasyAR : 国内 上海视辰信息 增强现实(AR)互动营销技术和解决方案

ARFoundation

1. 简介

​ 2017年,Apple公司与Google公司相继推出了各自的AR开发SDK工具包ARKit和ARCore,分别对应iOS平台与Android平台AR开发。ARKit和ARCore推出后,极大的促进了AR在移动端的普及发展,将AR从实验室带入到普通消费场景中。由于当前的移动手机操作系统主要由iOS与Android两大系统统治,ARKit和ARCore分别服务于各自己的系统平台,这意味着软件产商要开发一套移动AR应用就必须使用ARKit开发一个iOS版本、使用ARCore开发一个Android版本,这无疑增加了开发时间与成本。
  ARCore提供了Android、Android NDK、Unity、Unreal开发包,ARKit官方只提供了Xcode开发包,这也提高了利用其他工具进行开发的开发者学习成本。在这种情况下,Unity构建了一个AR开发平台,这就是ARFoundation,这个平台架构于ARKit和ARCore之上,其目的就是利用Unity的跨平台能力构建一种与平台无关的AR开发环境,换句话说,ARFoundation对ARKit与ARCore进行了再次封装,并按照用户的发布平台自动选择合适的底层SDK版本。

因此,ARFoundation是ARKit XR插件(com.unity.xr.arkit)和ARCore XR插件(com.unity.xr.arcore)的集合,虽然最终都使用ARKit SDK和ARCore SDK,但因为Unity再次封装的缘故,与专业平台(如ARKit插件和ARCore SDK for Unity)相比,C#调用的API略有不同。
  ARFoundation的目标并不局限于ARKit与ARCore,它的目标是建成一个统一、开放的AR开发平台,因此,ARFoundation极有可能在下步发展中纳入其他AR SDK,进一步丰富AR开发环境。在进一步的发展中,ARFoundation不仅支持移动端AR设备,还会支持穿戴式AR设备开发。
  从上面的描述我们也可以看出,ARFoundation它并不提供AR的底层开发API,这些与平台相关的API均由第三方如ARKit与ARCore提供,因此ARFoundation对某特定第三方功能的实现要比原生的晚(ARFoundation将某第三方SDK的特定功能集成需要时间)。

2. ARFoundation与ARCore、ARKit的关系

ARFoundation提供了一个独立于平台的脚本API和MonoBehaviour,因此,开发者可以通过ARFoundation使用ARCore和ARKit共有的核心功能构建同时适用于iOS和Android两个平台的AR应用程序。换句话说,这可以让开发者只需开发一次应用,就可以部署到两个平台的设备上,不必做任何改动。
  如前所述,ARFoundation实现实现某底层SDK的功能会比原生的晚,因此,如果我们要开发ARFoundation尚不支持的功能,可以单独使用对应的原生SDK。目前,如果我们只面向ARCore进行开发并希望获取完整的功能集,Google为Unity开发提供了ARCore SDK for Unity;如果只面向ARKit进行开发并希望获取完整的功能集,Unity提供了适用于Unity开发的ARKit插件(Apple并未提供Unity的ARKit SDK开发插件,在ARFoundation发展起来以后,Unity肯定不会再继续维护ARKit插件)。
  ARFoundation与ARCore、ARKit的关系如下图所示:
20190611172200952

3. AR Foundation历史事件

​ 2018年10月Unity发布AR Foundation 1.0版本,支持平面追踪、特征点云检测、参考点/锚点、设备追踪、光照估计、射线碰撞。

​ 2019年5月,AR Foundation 2.1 支持图像追踪、物体追踪、面部追踪、环境探针。

​ 2019年6月,AR Foundation 3.0 支持 ARKit 3.0,新增动作捕捉、人物遮挡、多人协作等功能。

​ 2019年9月[MOU1] ,AR Foundation 支持 Magic Leap 以及 HoloLens 1 和 2 。

​ 2019年11月,SenseAR正式集成进了Unity中国增强版2018.4.11C版本中。

4. 专业术语

​ 设备跟踪:跟踪设备在物理空间中的位置和方向。

​ 平面检测:检测水平和垂直表面。

​ 点云:世界坐标空间中的点的集合。

​ 锚点:设备跟踪的任意位置和方向。

​ 光线估算:估算物理空间中的平均色温和亮度。

​ 环境探针:一种用于生成表示物理环境特定区域的立方体贴图的方法。视频链接: https://live.csdn.net/v/embed/163218

​ 人脸跟踪:检测和跟踪人脸。

​ 2D图像跟踪:检测和跟踪2D图像。

​ 3D对象跟踪:检测3D对象。

​ 网格划分:生成与物理空间相对应的三角形网格划分。

​ 身体追踪:在物理空间中识别出的人类的2D和3D表示。

​ 多人协作:在共享的AR体验中跟踪其他设备的位置和方向。

​ 人体分割和遮挡:将距离现实世界中的对象的距离应用于渲染的3D内容,从而实现物理对象与虚拟对象的逼真的融合。https://www.bilibili.com/video/av455309216/

​ 射线广播:查询物理环境中检测到的平面和特征点。

​ 直通视频:优化了将移动摄像机图像渲染到触摸屏上作为AR内容的背景。

​ 会话管理:启用或禁用AR功能时自动对平台级配置进行操作。

​ 遮挡:在真实场景中的位置实现虚拟物体遮挡 视频资源: https://v.qq.com/x/page/g3104nljtqb.html

5.ARKit 设备支持情况
5.1 ARKit版本历史

​ 2017年9月 ARKit 1.0:支持环境光照估测、用户设置锚点、追踪状态更改、AR会话中断和恢复的事件通知等。

​ 2018年3月 ARKit 1.5: 新增垂直平面识别、图像识别、图像分辨率提升50%等。

​ 2018年9月 ARKit 2.0:新增多个玩家联机、图像跟踪、3D对象识别、usdz格式文件和测距仪APP等。

​ 2019年9月 ARKit 3.0:新增人体轮廓抠图、人体四肢识别、原型化和制作AR内容的Reality Composer工具软件等。

​ 2020年3月 ARKit 3.5:新增场景几何体、即时增强现实、定位跟踪配置等。

​ 2020年9月 ARKit 4.0:新增深度API、定位锚、增加面部跟踪支持的设备。

5.2 ARKit对芯片的要求和系统版本

​ **ARKit 4.0:**运行iOS 14,配置了A12芯片的设备

​ **ARKit 3.5:**运行iPadOS 13.4,配置了激光雷达扫描仪的第四代iPad Pro

​ **ARKit 3.0:**运行iOS 13,人体抠图和人体识别需要A12芯片

​ **ARKit 2.0:**运行iOS 12,芯片要求A9以上

​ **ARKit 1.5:**运行iOS 11.3,芯片要求A9以上

​ **ARKit 1.0:**运行 iOS 11,芯片要求A9以上

​ 芯片数据:https://www.apple.com.cn/ipad/compare/

5.3 ARKit支持iPad

​ ARKit 1和ARKit 2需要设备是A9、A10、A11芯片,ARKit 3的人体抠图和人体识别需要A12芯片。

1、12.9英寸iPad Pro

​ 第三代 A12X

​ 第二代 A10X

​ 第一代 A9X

2、11英寸iPad Pro

​ A12X

3、9.7英寸iPad Pro

​ 只销售了3个月,Apple官网未显示该款产品。

4、iPad Air

​ 第三代 10.5英寸 A12

​ 第二代 9.7英寸 A8X 不支持ARKit

​ 第一代 9.7英寸 A7 不支持ARKit

5、9.7英寸 iPad

​ 第六代 A10

​ 第五代 A9

6、7.9英寸 iPad mini

​ 第五代 A12

​ 第四代 A8 不支持ARKit

​ 第三代 A7 不支持ARKit

​ 第二代 A7 不支持ARKit

5.4 ARKit对摄像头类型的要求

ARWorldTrackingConfiguration

​ 世界跟踪配置(6DOF),只能使用后置摄像头,需要iOS 11以上。图像识别和垂直平面识别,需要iOS 11.3以上。

ARFaceTrackingConfiguration

​ 人脸跟踪配置,只能使用前置的TrueDepth摄像头,需要iOS 11以上。

AROrientationTrackingConfiguration

​ 方向跟踪配置(3DOF),只能使用后置摄像头,需要iOS 11以上。

ARImageTrackingConfiguration

​ 图像跟踪配置,只能使用后置摄像头,需要iOS 12以上。

ARImageTrackingConfiguration与ARWorldTrackingConfiguration的区别如下:

​ 1、ARImageTrackingConfiguration当图像快速移动时,也能跟踪上,而ARWorldTrackingConfiguration当图像缓慢的移动,才能跟踪上。

​ 2、ARWorldTrackingConfiguration依赖IMU(惯性测量单元),当周围环境发生运动时,无法正常工作。比如用户在交通工具上,AR显示的虚拟物体会飘走。

​ 3、当使用ARImageTrackingConfiguration时,无法使用ARWorldTrackingConfiguration,也就无法使用ARWorldTrackingConfiguration的水平面识别。

ARObjectScanningConfiguration

​ 对象扫描配置,只能使用后置摄像头,需要iOS 12以上。

ARBodyTrackingConfiguration

​ 人体跟踪配置,只能使用后置摄像头,需要iOS 13以上和A12芯片。

配置要求https://developer.apple.com/documentation/arkit/arconfiguration

6. ARCore设备支持列表
6.1 Android支持使用ARCore设备列表

ARCore 要求:

​ 运行在搭载 Google Play 应用商店的设备上

​ Android 7.0 或更高版本 (如下所示,个别型号需要更高的版本)

​ 若你的应用为AR可选应用, 请修改 minSdkVersion 声明: ‘minSdkVersion14` (API Level 14, Ice Cream Sandwich, version 4.0.1 - 4.0.2)

​ 若你的应用为AR必备应用, 请修改 minSdkVersion 声明: minSdkVersion24(API Level 24, Nougat, version 7.0)

Android(中国)

​ 在中国,设备不搭载 Google 应用商店。 您可以从以下应用商店中选择其一来安装 ARCore:

​ Xiaomi app store (小米应用商店)
​ Huawei Apps Gallery (华为应用商店)
​ OPPO APP Market (OPPO 软件商店)
​ Samsung Galaxy Apps (三星应用市场)
​ V-Appstore (vivo应用商店)

​ 在中国区域,ARCore 支持以下设备:

​ 谷歌官方查看支持ARCore设备地址:https://developers.google.cn/ar/devices arCoreSup

7. 检查设备支持AR功能

​ 配置相关 : https://zhuanlan.zhihu.com/p/330235815

​ 返回状态:

namespace UnityEngine.XR.ARFoundation
{
    /// <summary>
    /// Represents the current state of the AR system.
    /// </summary>
    public enum ARSessionState
    {
        /// <summary>
        /// The AR system has not been initialized. Availability is unknown.
        /// <see cref="ARSession.CheckAvailability"/>.
        /// </summary>		AR系统尚未初始化,可用性未知。
        None,

        /// <summary>
        /// AR is not supported on the current device.
        /// </summary>		当前设备不支持AR。
        Unsupported,

        /// <summary>
        /// The system is checking for the availability of AR.
        /// <see cref="ARSession.CheckAvailability"/>.
        /// </summary>		系统正在检查当前设备上AR的可用性。
        CheckingAvailability,

        /// <summary>
        /// AR is supported, but requires an additional install.
        /// <see cref="ARSession.Install"/>.
        /// </summary>		当前设备支持AR,但是AR支持需要安装其他软件。
        NeedsInstall,		

        /// <summary>
        /// AR software is being installed. <see cref="ARSession.Install"/>.
        /// </summary>		正在安装AR软件。
        Installing,

        /// <summary>
        /// AR is supported and ready.
        /// </summary>		AR已支持并准备就绪。
        Ready,

        /// <summary>
        /// An AR session is initializing (i.e., starting up). This usually means AR is working
        /// but has not yet gathered enough information about the environment.
        /// </summary>		AR会话正在初始化(即正在启动)。这通常意味着AR正在运行,但尚未收集到足够的有关环境的信,
        SessionInitializing,

        /// <summary>
        /// An AR session is running and is tracking (i.e., the device is able to determine its
        /// position and orientation in the world).
        /// </summary>		AR会话正在运行并且正在跟踪(也就是说,设备能够确定其在世界上的位置和方向)。
        SessionTracking
    }
}

远程调试

​ 三方插件: https://zhuanlan.zhihu.com/p/335236675

vuforia

1. 官网链接 :
https://developer.vuforia.com/
2. 简介

​ 目前世界上主流的AR SDK提供厂商,国外的主要是Vuforia、Metaio,国内的主要是EasyAR。其中Metaio在2015年5月已被Apple重金收购,之后就没有再对外公开过SDK,经过两年的封闭开发,Apple已经打造出了强大的ARKit,能够基于庞大的iOS和iPad设备生产出各种惊艳的AR产品。Vuforia也在2015年11月被PTC公司重金收购,但是后续一直在更新并提供SDK,因此在ARKit普及之前,Vuforia一直是开发者最青睐的AR SDK,众多的功能以及高质量的识别技术,良好的跨平台性和兼容性,兼容目前主流的PC,Android,IOS平台.使得Vuforia早已深入人心,是学习AR应用开发的必备技能。

3. Vuforia主要由三大部分组成:
1. Vuforia引擎

​ 这个引擎是一个静态链接库,作为客户端封装进最终的App中,用来进行最主要的识别功能,支持iOS、Android和UWP,并且根据不同的平台开放出了不同的SDK,可以根据需要从Android Studio、Xcode、Visual Studio以及Unity中任选一种作为开发工具。本系列是以Unity为开发工具,因为Unity本来就是个游戏引擎,对3D模型的导入以及控制非常方便,非常适合开发AR程序;

2. 一系列工具。

​ Vuforia提供了一系列的工具,用来创建对象、管理对象数据库以及管理程序licenses。Target Manager是一个网页程序,开发者在里面创建和管理对象数据库,并且可以生成一系列的识别图像,用在AR设备以及云端上。Licenses Manager用来创建和管理程序licenses,因为每一个AR程序都有一个唯一的licenses。Vuforia Object Scanner是Vuforia近段时间新出的工具,用来进行十分黑科技的功能–实物扫描,但是很遗憾目前只支持某些Android设备。

3. 云识别服务。

​ 当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。

4. 主要支持类型

​ 4.1 Image Targets(图像目标)

​ 4.2 Cylinder Targets(圆柱体目标)

​ 识别形状类似于圆柱形的图片,可以将这些图片贴到一些圆柱形物体上比如瓶子、杯子等等,进行识别。

​ 4.3 Multi Targets(多目标)

​ 多对象识别,可以同时识别多张Image Targets,并且可以把它们和几何立体物体结合起来,比如一个纸盒子,或者任意形状的平面。

​ 4.4 Model Targets(模型目标)

​ 通俗点说就是3D物体的识别,也就是形状的识别。这个技术相对于传统的印刷媒体、产品包装的Image Targets识别来说,它能够更详细直观地展示产品的功能和设计。展示的内容可以准确地被附加到物体上,例如汽车、家电以及工业设备和机械设备。这个技术有望取代传统的用户手册和技术服务指导。

​ 4.5 VuMark

​ 这是Vuforia自己研发的一种新型条形码,并且被称为下一代条形码,你能够自己随意设计这种条形码的样式,并且在其中融入相关的数据信息。

​ 4.6 Cloud Rec(云识别)

​ 当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。

​ 4.7 Ground Plane

​ 随着ARKit和ARCore的发布,这个功能大家应该比较能够理解,下一个版本的Vuforia也将具有类似功能。使用Vuforia,你也可以将增强显示的内容放置到一些平面上,例如地板、桌面以及地面等,不管是在室内还是室外均可。

​ 4.8 User Defined Targets(用户自定义目标)

​ 用户从画面选择元素作为自定义目标,进行扫描与追踪

​ 4.9 Virtual Buttons(虚拟按钮)

​ 虚拟按钮是图像上的目标,用户可以在现实世界中触摸,以触发交互动作。

5. 三种不同类型Database的比较

​ Vuforia提供了三种类型的Database,分别是Device、VuMark和Cloud。这三种类型都各有自己的优势,在开发产品时需要根据需求来选择不同的Database:

5.1 Device Database:

​ 包含了安装在设备本地的图片以及3D模型对象的数据库,可以开发Image Target(图片识别)、Multi Targets(多对象识别)、Cylinder Targets(圆柱图像识别)以及Object Target(3D模型识别)。当你的产品需要最快速的图像识别,而且图片对象小于1000张,并且数据库中的对象不会经常更新,那么Device Database就是最好的选择。如果需要开发识别真实3D物体识别的产品,那就只能选择Device类型的。

5.2 Cloud Database:

​ 包含了存储于网络云服务器上的对象的数据库,需要通过网络进行获取。Cloud类型的数据库可以包含数量百万级别的对象,因此当识别对象超过1000个,而且对象需要经常进行更新时,Cloud Database是最好的选择。需要注意的是,Cloud Database只支持单一的图像识别,并不支持Multi target和Cylinder Target。因为是通过网络识别,因此采用Cloud进行识别的话需要根据网络情况花费一定时间。

5.3 VuMark:

​ 这是Vuforia自家研发的条形码,被誉为下一代条形码。和目前市面上通用的条形码不一样的是,VuMark的外观可以完全自主定制,只要符合VuMark的相关规范就行,而且VuMark中还能包含诸如字符串之类的数据信息,非常适合于企业级产品的开发。

5.4 下面这张表是关于Device和Cloud类型的对比:

6. 工程配置参考链接

​ 配置相关: https://www.cnblogs.com/mrmocha/p/9737448.html

​ 教程相关: https://www.jianshu.com/p/a3640e8837b5

EasyAR

1. 官网链接 :
https://www.easyar.cn/
2. 简介

​ EasyAR Sense Unity Plugin是一个建立在EasyAR Sense C# API之上的非常薄的封装,用于在Unity中暴露EasyAR Sense的功能。建议阅读 [EasyAR Sense 文档](https://help.easyar.cn/EasyAR Sense/v4_4/) 来理解EasyAR Sense是如何工作的。

​ 插件的发布包内包含了EasyAR Sense的库文件,因此在使用插件的时候不需要再使用独立的EasyAR Sense。

​ 插件中的EasyAR Sense库文件总是与同版本的EasyAR Sense的文件相同。如果你在尝试让插件运行在不同版本的EasyAR Sense上,必须保证csapi与库文件版本一致。

3. 插件使用说明

​ https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/GettingStarted/PluginIntroduction.html

4. 平台支持
4.1 unity 兼容性

​ EasyAR Sense Unity Plugin需要使用 Unity 2019.4 或更高版本。

Unity > 2019.4 的兼容性

通常来说, EasyAR Sense不依赖很多变化的Unity API,所以如果Unity发布了新版本,EasyAR Sense Unity Plugin一般都可以正常使用。

Unity 2020.2 或更高版本 删除了iOS设备的OpenGLES支持,在这些版本中,视频录制功能将无法在iOS设备上使用。

Unity < 2019.4 的兼容性

​ · 为了提供更好的插件包体验以及支持最新的Unity XR工作流,我们在持续迁移我们的资产文件和脚本到 Unity 2019.4。这会逐渐打破对老版本Unity的兼容性。如果你由于某些原因仍就在使用老版本的Unity,可以尝试从 tgz 包中解压文件,放在工程的 Assets 目录,然后解决使用过程中出现的错误。对于这种用法我们不会提供官方支持,但有一些建议可以参考:

Unity 2019.3: 看上去插件可以在这个版本的Unity上正常工作,因为Unity 2019.3 和 2019.4的差异有限。这个兼容性并不是在设计中的,新的版本可能无法正常工作。

Unity 2019.2: 看上去插件可以在这个版本的Unity上正常工作,你可能需要手动修改package manifest,以添加tarball到工程中。这个兼容性并不是在设计中的,新的版本可能无法正常工作。在Windows上,由于Unity对路径长度限制的不当处理,插件的样例可能无法正常导入,你可以通过文件系统直接复制样例文件到 Assets 文件夹中。

Unity 2019.1: 这个版本的Unity Package Manager UI看起来并不能很好的支持tgz文件。你可以尝试embed插件包,如果这样也不能使用,打破包的封装,将文件直接解压到 Assets 文件夹中。

Unity 2018.4: 这个版本的Unity Package Manager UI不支持sample。并且由于插件使用 Unity 2019.4打包,一些重要文件的 meta文件无法正常工作。你需要打破package封装,将文件直接解压到 Assets 文件夹中。在重新构建meta文件后,可能可以让大部分功能正常工作,但这并未经过测试。

Unity 2017 或 Unity 5: 在这些版本中不存在Unity Package Manager。并且一些兼容这些版本的代码路径已经被删除。你可能需要花更大的力气才能使插件在这些版本中正常使用。

4.2 关于 Android arm64-v8a

​ Unity使用的mono脚本后台不支持Android arm64-v8a。如果需要使用应开启IL2CPP。

4.3 关于 iOS armv7

​ EasyAR Sense 从3.0版本开始终止了对iOS armv7的支持。在库文件中存在空的代码层以确保 XCode 工程始终可以构建,但如果编译时只选择了armv7运行后功能将无法使用。

4.4 .NET API 兼容性

​ EasyAR Sense Unity Plugin兼容 .NET Standard 2.0 API

4.5 Graphics API

​ 从EasyAR Sense 3.0开始,EasyAR Sense Unity Plugin 直接使用Unity的渲染管线,所有Unity中可以使用的图形API都可以天然被支持。

特例:由于EasyAR Sense的内部实现,录屏功能将只能在某些特定条件下工作,即在Android上Graphics API是OpenGLES2或OpenGLES3的情况以及在iOS上Graphics API是OpenGLES2的情况。

4.6 Scriptable Render Pipeline

​ EasyAR Sense Unity Plugin 支持 Universal Render Pipeline (URP) 7.0.0 或更新版本。

​ EasyAR Sense Unity Plugin 不支持 High Definition Render Pipeline (HDRP)。

4.7 Unity AR Foundation 兼容性

​ EasyAR Sense Unity Plugin 支持 AR Foundation 4.0.8 或更新版本。

4.8 华为 AR Engine 兼容性

​ EasyAR Sense Unity Plugin 支持官方的 Huawei AR Engine Unity SDK 2.11.0,其发布文件是 arenginesdk-tool-2.11.0.2.zip

​ 华为目前不再维护 AR Engine 的 Unity SDK,因此我们并不确定是否更新版本的 AR Engine 可以使用。同时,由于 Huawei AR Engine Unity SDK 使用了一些废弃的 Unity API,它不能在 Unity 2020.1 或更新版本上使用。

​ EasyAR Sense Unity Plugin 不支持没有官方Unity SDK的华为 AR Engine。

5. 使用教程

​ https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/Guides/Guides.html

6. aip参考手册

​ https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/ApiReference/ApiReference.html

3. 功能演示 (官网图片)

稀疏空间地图

xishu

稠密空间地图

运动跟踪

表面跟踪

3D物体跟踪

平面图像跟踪

录屏

sdk对比

支持功能 ARFoundation ARCore ARKit vuforia EasyAR
依赖项 ARCore/ARKit Android 7 ip6以上 部分依赖系统
费用 免费 免费 免费 收费/免费带水印 收费/免费带水印
垂直平面检测 ?
水平平面检测
特征点检测 -
光照估计 - √ + Color Temperature - -
射线测试(Hit Testing,对特征点与平面的射线碰撞测试)
图像跟踪
3D物体检测与跟踪 -
环境光探头(Environment Probes) - - -
世界地图(World maps) - -
人脸跟踪(识别、姿态、网格和形状混合) √(iPhoneX 及更高型号A12仿生芯片) - -
云锚点(Cloud Anchors) - -
远程调试(Editor Remoting) 开发中 √-Instant Preview √ -ARKit Remote
模拟器(Editor Simulation) - -
LWRP支持(支持使用ShaderGraph) 开发中 开发中
摄像机图像API -
人体动作捕捉(Motion capture) - √(iPhoneX 及更高型号) - -
人形遮挡(People occlusion) - √(iPhoneX 及更高型号) -
多人脸检测 - √(iPhoneX 及更高型号) - -
多人协作(Collaborative session) - √(iPhoneX 及更高型号) - -
多图像识别 √(iPhoneX 及更高型号)
VuMark(Vuforia自己研发的一种新型条形码) - - - -
虚拟按钮 - - - -
空间地图 - - - -

unity插件

录制脸部动画与制作摄像头运镜

教程地址: https://learn.u3d.cn/tutorial/how-to-use-face-capture#

运行效果

https://zyb-shizi-app-1253445850.cos.ap-beijing.myqcloud.com/pinyin/md_res/ar/QQ20211231-161740-HD.mp4

扩展阅读

AR的一些基本知识: https://zhuanlan.zhihu.com/p/29217512

参考链接:

  1. https://www.zhihu.com/column/c_1300416491410337792
  2. https://www.jianshu.com/p/d21af1bc387c
  3. https://www.jianshu.com/p/3337bca01a93?from=singlemessage
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45504161/article/details/122460223

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include&lt;stdio.h&gt;#include&lt;string.h&gt;#include&lt;stdlib.h&gt;#include&lt;malloc.h&gt;#include&lt;iostream&gt;#include&lt;stack&gt;#include&lt;queue&gt;using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签