Unity-AR 简介

2023-11-20

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity-AR 简介 的相关文章

  • Unity Shader入门精要第七章 基础纹理之遮罩纹理

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 实践 参考 前言 遮罩纹理 mask texture 是本章要介绍的最后一种纹理 它非常有用 在很多商业游戏中 都可以见到它的身影 那么什么是遮罩呢 简单来讲 遮罩允许我们
  • Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入 滑出 点击 抬起 长按 长按停止 1 先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System Collections using System Collections Generic u
  • Unity学习笔记(一)—— 基础知识

    一 基础知识 1 开发团队组成 2 unity特点 图形界面 所见即所得 入门简单 支持C 比OC C 更友好 js 国内外资源丰富 因为使用的人多 跨平台性好 PC端 移动端等 对VR AR的支持最完善 3 成功案例 游戏 炉石传说 神庙
  • unity后台加密时间锁

    前言 在做一些项目的时候 有些不良甲方在给完项目后会有不给尾款的情况 之前都是加一些水印啥的 感觉不是很方便 第一不美观 第二如果甲方给完尾款后还得重新打包去水印 然后又做过一个本地的时间锁 等到时间 程序直接退出 但是感觉还是不方便 有时
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • unity 性能查看工具Profiler

    文章目录 前言 profiler工具介绍 菜单栏 帧视图 模块视图 模块详细信息 通过profiler分析优化游戏性能 最后 前言 每次进行游戏优化的时候都用这个工具查看内存泄漏啊 代码优化啊之类的东西 真的好用 但是之前也就是自己摸索一下
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • Unity旋转以及万向锁问题

    我之前研读了一些关于unity旋转相关的博客 一直想抽个时间写个总结 但是由于实习太忙一直没有写 趁着今天请了假晚上有时间把这段时间一些学习心得写出来 Unity inspector面板中的Rotation 在unity中 想必大家最先接触
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • 【原神游戏开发日志1】缘起

    原神游戏开发日志1 缘起 版权声明 本文为 优梦创客 原创文章 您可以自由转载 但必须加入完整的版权声明 文章内容不得删减 修改 演绎 相关学习资源见文末 大家好 最近看到原神在TGA上频频获奖 作为一个14年经验的游戏开发行业的老兵 我就
  • mixamo根动画导入UE5问题:滑铲

    最近想做一个跑酷游戏 从mixamo下载滑铲动作后 出了很多动画的问题 花了两周时间 终于是把所有的问题基本上都解决了 常见问题 1 动画序列 人物不移动 2 动画序列 人物移动朝向错误 3 蒙太奇 人物移动后会被拉回 4 蒙太奇 动画移动
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • U3D游戏开发中摇杆的制作(NGUI版)

    在PC端模拟摇杆 实现控制摇杆让玩家或者物体移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine public clas
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发常见操作系列之敌人系统的开发一(U3D)

    在开发游戏的过程中 我们常常会出现一些敌人攻击我们玩家 并且实现掉血以及死亡的现象 敌人还会源源不断地生成 这是怎么制作的呢 接下来为大家提供方法 其中使用了NGUI 后续会更新其它方法 敬请期待 使用HUDText实现扣血时显示文本 直接

随机推荐

  • Git上克隆代码并运行

    新手使用git 开启创建者模式 在本地需要放置的文件夹处右键选择 Git Bash Here 1 克隆项目 git clone xxxxx git 复制的url 2 在下拉代码的前端文件夹安装依赖 npm install 需要已经安装nod
  • 【H5】 svg画扇形饼图

    H5 svg画扇形饼图 效果图如下 封装代码如下 代码内有详细注解哦
  • Android 获取网络速度

    一 效果图 一 通过wifimanager来获取WiFi的当前速度状态 WifiManager wm WifiManager NetworkSignalDetectionActivity this getApplicationContext
  • 第二次用烤箱做了面包

    可松做成了法棍 味道还不错 img http dl iteye com upload attachment 314370 296dbfa1 491e 3df9 93c9 77d709a25b38 jpg img
  • get和post区别

    1 GET请求在URL中传送的参数是有长度限制的 而POST没有 2 GET相对于POST来说不安全 因为参数直接暴露在URL上 所以不能用来传递敏感信息 而POST数据不会显示在URL中 是放在Request body中 3 对参数的数据
  • 有关 sscanf 和 sprintf 的用法

    sscanf 的用法 用法 int sscanf const char str const char format 功能 从字符串读取格式化输入 返回值 如果成功 该函数返回成功匹配和赋值的个数 如果到达文件末尾或发生读错误 则返回 EOF
  • C语言单向循环链表的建立

    1 头文件 include
  • 【数学建模】线性规划模型基本原理与案例分享

    1 1 线性规划问题 在人们的生产实践中 经常会遇到如何利用现有资源来安排生产 以取得最大经济效益的问题 此类问题构成了运筹学的一个重要分支 数学规划 而线性规划 Linear Programming 简记LP 则是数学规划的一个重要分支
  • 国产CPU对比

    关于国产CPU 龙芯 飞腾 鲲鹏 海光 申威 兆芯 CPU 是计算机系统的核心和大脑 n CPU 即中央处理器是计算机的运算和控制核心 其功能主要是解释计算机指令以及处理计算机软件中的数据 CISC实际上是以增加处理器本身复杂度作为代价 去
  • Jenkins系列:3、wsl/ubuntu安装Jenkins及Jenkins构建可交叉编译的go程序

    Jenkins系列 3 wsl ubuntu安装Jenkins及Jenkins构建可交叉编译的go程序 文章目录 Jenkins系列 3 wsl ubuntu安装Jenkins及Jenkins构建可交叉编译的go程序 1 前言 2 wsl
  • 数组去重合并

    let arrA id 1 name name1 id 2 name name2 let arrB id 1 name name3 id 3 name name4 function concatArr arrA arrB 只需要拿到A
  • ANDROID版本号和版本名称的重要性介绍

    转载请注明出处http blog csdn net y150481863 article details 41249159 来自 http blog csdn net y150481863 当我们在刚开始学习ANDROID的时候 可能不会过
  • DVWA安装配置教程

    原文传送门 http www cnblogs com yaochc p 5049832 html DVWA 安装教程 1 直接下载WampServer 免去了需要安装apache php mysql的服务器软件的痛苦 一体集成 相当于安装了
  • CSRF漏洞详细说明

    CSRF漏洞详细说明 通常情况下 有三种方法被广泛用来防御CSRF攻击 验证token 验证HTTP请求的Referer 还有验证XMLHttpRequests里的自定义header 鉴于种种原因 这三种方法都不是那么完美 各有利弊 二 C
  • H.265/HEVC编码结构

    H 265 HEVC编码结构 为了增强各种应用下操作的灵活性以及数据损失的鲁棒性 H 265 HEVC在编解码的设计上添加了多种新的语法结构 相较于以往的视频编码标准 如H 264 AVC 这种新的语法架构使得H 265 HEVC在压缩效率
  • linux虚拟机可以ping通,但是无法socket连接

    场景 两台windows各开一台Linux虚拟机 通过路由器组网 分配桥接地址 出现电脑之间ping不通 socket不通怎么办 答案 1 关掉windows防火墙 任何阻止联网的行为统统取消 2 关掉linux防火墙 对 etc seli
  • 狂飙!GPT-4最新20+个应用案例集锦,附视频

    编者按 自OpenAI于3月15日重磅推出GPT 4 一石激起千层浪 全球开发者 创业者们迅速尝试了各种形形色色的场景应用 来体验它的极限 游戏 编程 客户关系 营销 财务 家庭生活 饮食 文学艺术创作等等不一而足 笔者从中筛选了23款基于
  • HandlerAdapter

    HandleAdapter HandlerAdapter的功能实际就是执行我们的具体的Controller Servlet或者HttpRequestHandler中的方法 类结构如下 1 SimpleServletHandlerAdapte
  • 【实战】将多个不规则多级表头的工作表合并为一个规范的一维表数据结果表...

    最近在项目里 有个临时的小需求 需要将一些行列交叉结构的表格进行汇总合并 转换成规范的一维表数据结构进行后续的分析使用 从一开始想到的使用VBA拼接字符串方式 完成PowerQuery的M语言查询字符串 然后转换成使用插件方式来实现相同功能
  • Unity-AR 简介

    Unity AR 简介 现有Unity AR Sdk ARKit 苹果推出的AR开发平台 ARCore Google 推出的增强现实 SDK ARFoundation ARFoundation是ARKit XR插件和ARCore XR插件