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

智能推荐

从零开始搭建Hadoop_创建一个hadoop项目-程序员宅基地

文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目

心脏滴血漏洞HeartBleed CVE-2014-0160深入代码层面的分析_heartbleed代码分析-程序员宅基地

文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析

java读取ofd文档内容_ofd电子文档内容分析工具(分析文档、签章和证书)-程序员宅基地

文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat

基于FPGA的数据采集系统(一)_基于fpga的信息采集-程序员宅基地

文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集

微服务 spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL-程序员宅基地

文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception

邻接矩阵-建立图-程序员宅基地

文章浏览阅读358次。1.介绍图的相关概念  图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为:  G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图

随便推点

MDT2012部署系列之11 WDS安装与配置-程序员宅基地

文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc

python--xlrd/xlwt/xlutils_xlutils模块可以读xlsx吗-程序员宅基地

文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题_unresolved attribute reference 'find_element_by_id-程序员宅基地

文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver

DOM对象转换成jQuery对象转换与子页面获取父页面DOM对象-程序员宅基地

文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象

什么是算法?-程序员宅基地

文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法

【网络安全】网络安全的标准和规范_网络安全标准规范-程序员宅基地

文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范