大多数浏览器和
Developer App 均支持流媒体播放。
-
ARKit 3 简介
ARKit 是适用于 iOS 的开创性增强现实 (AR) 平台,能够改变人们与周围世界之间联系的方式。探索 ARKit 3 的先进功能,以及它为 RealityKit 提供的创新基础。了解 ARKit 如何通过认识身体姿态和运动来进行运动捕捉和人物遮挡,从而实现更加逼真的 AR 体验。查看多面部跟踪、协同会话构建以及新手引导的辅导 UI 等新增功能。
资源
相关视频
WWDC20
WWDC19
-
下载
下午好 大家好 欢迎来到我们 介绍 ARKit 3 的会议 我的名字是 Andreas 我是 ARKit 团队的一名工程师 今天我很高兴 能在这里向大家介绍 ARKit 的第三个主要发布
当我们在 2017 年推出 ARKit 时 我们将 iOS 打造成世界上 最大的 AR 平台 将 AR 带到了数亿台 iOS 设备上 这对于你来说真的很重要 因为你可以通过 App 和你编写的游戏 来接触广泛的受众 我们的使命是 从一开始就让你编写的 第一个增强现实的 App 变得很简单 即使你是一个新的开发人员 但我们也希望为你提供 你需要的手头工具 来创建真正先进和复杂的体验 所以如果你今天看看 App Store 我们可以看到你做了一份了不起的工作 你构建了很棒的 App 和游戏 现在让我们来看看 其中的一些 将你的游戏理念带入到 AR 可以让它们更有 吸引力和物理效果 如愤怒的小鸟 你现在可以在 AR 中玩这个了 实际上在这些建筑周围工作 找到最佳 射击地点 然后必须 用自己的手弹射 射出那些愤怒的小鸟
对于大规模的用例 ARKit 也非常有效 iScape 是一种用于户外景观美化的工具 我们可以放置灌木和树木 并在你的花园或后院 观看你的下一个 花园改造项目在 AR 里开始运作 去年 通过 ARKit 2 我们 推出了 USDZ 一个新的 3D 文件 格式 用于交换为 AR 制作的格式
Wayfair 用它把 虚拟家具放在你的家里 但是利用 ARKit 先进的 场景理解功能 比如环境纹理 这些物品就真的会与你的 客厅完美融合 乐高正在用 ARKit 的 3D 目标检测功能
它可以找到你的物理乐高集 并在 AR 中增强 多亏 ARKit 的多用户支持 你甚至可以 和你的朋友们一起玩 所以这些只是你创建的 一些例子 ARKit 帮助你处理所有的 技术细节 为你做繁重的工作 使得现实感增强 以便你可以集中精神 创建它们周围美妙的体验 让我们快速回顾一下 ARKit 为你提供的 三大功能支柱
首先是追踪 追踪可以确定你的 设备相对于环境的位置 这样虚拟内容就可以准确定位 并在摄像机图像上 实时更新
这就产生了 虚拟内容实际上放置于 现实世界的假象
ARKit 还为你提供 不同的追踪技术 如道路世界追踪 人脸追踪或图像追踪 在追踪方面 我们有场景理解
通过场景理解 你可以识别场景中的表面 图像和 3D 对象 并将虚拟内容直接附加其上
场景理解还可以 了解环境中的光照 甚至纹理 以帮助你的内容看起来更加真实 最后是渲染 它让你的 3D 内容栩栩如生
我们一直支持不同的 渲染器 如 SceneKit SpriteKit 和 Metal 现在 今年的 RealityKit 也从一开始 就在考虑增强现实
因此今年随着 ARKit 的发布 它们正在实现巨大的飞跃 你的体验不仅 看起来更好 更自然 你还可以 为之前无法 实现的用例 创建全新的体验 感谢 ARKit 3 带来的 许多新功能
如人物遮挡 动作 捕捉 协作会话 同时使用前 后摄像头 追踪 多个人脸等等 我们要涉及很多内容 所以让我们直接进入 从人物遮挡开始 让我们看看这里的场景
因此为了创造一个 令人信服的 AR 体验 准确定位 虚拟内容以及 匹配真实世界中的灯光很重要
所以让我们把一个虚拟的 浓缩咖啡机放在这 把它放在桌子上
但是等一下 当人们进入 框架 就像在这个例子中一样 它很容易打破幻觉 因为你会期望 前面的人实际上 覆盖浓缩咖啡机
所以有了 ARKit 3 和 人物遮挡 你就可以解决这个问题
谢谢
所以让我们来看看这是如何完成的
默认情况下虚拟内容 呈现在相机图像的顶部 如你所见 对于纯桌面体验 这很好 但如果 框架中的任何人 在该对象前面 增强则看起来不再准确
所以 ARKit 3 现在为你做的是 由于机器学习 识别出框架中存在的人 创建一个单独的图层 只有包含这些 人的像素 我们称之为分割
然后我们就可以在其他层之上渲染该层 让我们来看看合成图像 现在看起来好多了 如果你凑近看 其实仍然不够正确
所以现在前面的人 堵住了浓缩咖啡机
但是这里如果拉近镜头 你可以看到后面的人 也被渲染到 虚拟对象的顶部 虽然她实际上站在桌子后面 因此在这种情况下 虚拟模型 应该挡住她 而不是反过来这种情况 现在 发生这种情况是因为 我们没有考虑到 人们与摄像机的距离
当 ARKit 3 使用高级的 机器学习来执行 额外的深度估算 步骤 用此估计 分割的人离 相机多远 我们现在可以更正渲染顺序 保证人在前面时进行渲染 如果他们实际上离相机更近的话 并且由于 Apple 神经网络引擎我们能够 在每个框架上进行实时操作 现在让我们来看看 合成图像 正如你所期待的那样 你看到人物 遮挡的虚拟内容 从而产生了令人信服的 AR 体验 这真的很棒 谢谢你们
因此人物遮挡可以让 虚拟内容呈现在人物后面
它也适用于场景中 的多个人 甚至 可以在人们只是 部分可见的情况下就像 在示例之前 桌子后面的女人实际上 看不到整个身体 但是它仍然有效
现在 这非常重要 因为它不仅使 你的体验看起来 比以前更真实 而且 对你来说也意味着你现在可以 创建以前不可能的体验 例如 考虑到一个 多人游戏 在这个游戏中 框架中有人和你的 虚拟内容
人物遮挡也 集成在 ARView 和 ARSCNView 中 而且由于深度估算 我们可以为你提供一个 关于相机监测到的 人物距离的相似值
因此人物遮挡将在 A12 处理器或者更高版本的设备上工作 所以让我们来看看如何 在 API 中打开它 我们在 ARConfiguration 上 有一个名为 FrameSemantics 的新性能
这将为你提供 当前框架中不同类型的语义信息
你还可以使用 ARConfiguration 上的其他方法 检查特定设备或配置上 是否有特定的语义可用
尤其对于人物遮挡来说 这有两种方法可用 一种方法是人物分割 这将帮助你只提供 摄像头图像上呈现的人物分割
如果你知道 人们总是站在最前面 而你的虚拟内容 总是在这些人后面 那么这是最好的选择 例如 绿屏用例 就是你现在不需要绿屏了 另一种选择是具有深度的人物分割 这将为你提供 这些人与相机距离的额外深度估计 如果人们可以在 内容之后或之前 与虚拟内容一起显示 那么这就是最佳选择 如果你使用 Metal 或者高级用例进行自己的渲染 你还可以使用 ARFrame 上的分段和估算的深度数据 直接访问像素缓冲区
现在 让我向你展示 如何在实时演示中实行人物遮挡
所以在 Xcode 中 我有一个 使用新的 RealityKit API 的示例项目
让我快速带你了解一下它的作用
因此在我们的 viewDidLoad 方法中 我们正在创建一个 AnchorEntity 用来查找水平面 并将这个锚实体添加到场景中 然后 我们检索一个 模型的 URL 使用 ModelEntity 的异步模式 加载 API 来载入它 我们将实体添加为 锚的子项 并且安装 手势 以便我可以在 平面上拖动对象
因此由于 RealityKit 它所做的是自动 设置世界追踪 配置 因为我们知道 我们需要使用世界追踪来进行平面估算 然后 一旦检测到 平面 内容将被自动放置
现在还没有使用人物遮挡
但是我已经停下来打开它了 这叫做 togglePeopleOcclusion 我想要执行的是一种方法 当用户点击屏幕时 它允许我打开和关闭人物遮挡
现在让我们继续实施吧 所以我要做的第一件事是 检查我的世界追踪 配置是否支持具有 深度框架语义的人物分割 建议你始终 这样做 因为如果代码 在没有 Apple 神经网络引擎的设备上运行 且不支持此框架语义
因此如果是这样的话 我们将向用户展示一条信息 即人物遮挡在该设备上不可用
让我们继续执行切换
我将在这里 对配置的 frameSemantics 属性 执行 switch 语句 如果框架语义中 包含 personSegmentationWithDepth 我们将删除它并告诉用户 人物遮挡已关闭 我只需执行另一个案例 如果你没有启用 人物分割 那么我们 将 frameSemantics 插入到 不同的语义属性中 并显示一条消息 我们现在开启人物遮挡 现在 我需要在会话中 重新运行更新的配置
因此让我从 ARView 中 检索会话 并使用 我刚才更新的配置调用运行
所以现在 我的 togglePeopleOcclusion 方法已经完成 我现在需要确保 用户点击屏幕时 它实际上是被调用的
我已经安装了一个轻点 手势识别器 在我的 onTap 方法中 我只调用 togglePeopleOcclusion 这就是我需要做的全部事情
现在 让我继续
构建代码并在我的设备上运行它
我们已经看到 平面被检测到 内容被放置 我可以移动它 由于我添加了手势 你可以看到 RealityKit 已经 增加了一个很好的接地阴影 现在 让我们来看看人物遮挡 现在 它仍然是关闭的 所以如果我用手 你会发现内容总是 放在最上面的 这是你从 ARKit 2 中所知道的行为 现在 让我打开它 再把我的手拿回来 现在你会看到 虚拟物体实际上被覆盖了
这就是 ARKit 3 里的人体遮挡
谢谢 那么 让我们来谈一谈 ARKit 3 的 另一个令人兴奋的功能 即动作捕捉
通过动作捕捉 你可以追踪人物的身体 然后可以实时 将其映射到虚拟角色 现在 这只能通过 外部设置和特殊装备来完成 现在有了 ARKit 3 它只 需要几行代码 就可以在 iPad 和 iPhone 上正常工作
现在 动作捕捉让你在 2D 和 3D 中追踪人体 它为你提供了 该人的骨架表现 例如 这可以驱动虚拟角色 这是通过在 Apple 神经网络引擎上运行的 高级机器学习算法实现的 因此它可以在 A12 或更高版本处理器的设备上使用
让我们先来看看 2D 人体检测 怎么打开呢
我们有一个名为 bodyDetection 的新框架语义选项 世界追踪配置 以及图像和方向追踪配置 也支持此功能 所以你只需将它添加到 你的框架语义中并在会话中调用运行
现在 让我们来看看 我们将要得到的数据 如果检测到某人 则每个 ARFrame 在 detectedBody 属性中 提供 ARBody2D 类型的对象 该对象包含 2D 骨架
骨架为你提供 标准化图像空间中的 所有关节标志 它们以数组的 平面层次结构返回 因为这是最有效率的处理方法
但是你将获得一个骨架定义
由于骨架定义 你拥有如何解释 骨架数据的所有信息 特别是 它包含有关关节层次结构的 信息 比如 实际上 手关节是肘关节的子关节
并且还为你提供关节 的名称 然后来方便访问 所以让我们来看看这个是什么样子的 这是我们在框架中检测到的人 这就是 ARKit 提供的 2D 骨架 如前所述 重要关节的命名是为了 便于你找到 你感兴趣的 特定关节的位置 比如头部和右手
所以这是 2D 现在 让我们来看看 3D 运动捕捉
3D 动作捕捉让你 在 3D 空间中追踪人体 并为你提供 三维骨架表示
它还为你提供比例估计 以便你确定 正在跟踪的人的大小
3D 骨架定位在世界坐标系中
让我们看看在 API 中如何使用这个
我们正在引入一种 名为 ARBodyTrackingConfiguration 的新配置
这可以让你使用 3D 身体 追踪 但它也提供了 我们之前看到的 2D 身体检测 因此在该配置中 框架语义是默认打开的
因此 该配置 还追踪设备的 位置和方向并 提供选定的世界追踪功能 如平面估算或图像检测 因此有了它 你就可以 在你的 AR App 中 使用身体追踪来做更多的事情
若要对其进行设置 你 只需创建身体追踪 配置并在会话中运行它
注意 我们还有 API 来 检查当前设备 是否支持该配置 所以 现在 当 ARKit 正在运行 并检测到一个人时 它将 添加一种新类型的锚 即 ARBodyAnchor
这将在调用锚 的会话中提供给你 就像你知道的 其他锚类型一样
和其他锚一样 它也有一个转换 为你提供被检测者 在世界坐标中的 位置和方向 此外 你将获得 比例系数和 3D 00:20:22.676 --> 00:20:23.826 A:middle 骨架的参考
让我们来看看它是怎么样的 你可以看到它比 2D 骨架更加详细
因此黄色关节是 将通过运动捕捉数据 传递给用户的关节
白色的是我们在骨骼中 额外提供的叶关节
这些没有被有效追踪 因此变换对于 被追踪的父项是静态的 但是 当然 你可以直接 访问每个关节并 检索它们的道路坐标
同样 我们有一个 很重要的标签 一个 按名称查询它们的 API 这样 你就可以很容易地找到 你感兴趣的特定关节 现在 我确信你可以 为这个新的 API 提出 很多很好的用例 但是我想 谈谈一个可能对于 你们很多人来说 都很有趣的特殊用例 它就是 动画 3D 角色
通过将 ARKit 和 RealityKit 结合使用 你可以驱动一个 基于三维骨架姿势的模型 这真的非常简单
你所需要的只是一个装配好的网格
你可以在我们的示例 App 中 找到一个这样的例子 你可以在会话主页上 下载 当然 你也可以 在自己选择的内容创建工具中 自由创建自己的 App 让我们看看在代码中实现这一点有多容易 它内置于 RealityKit API 中 我们将使用的 主要类是 BodyTrackedEntity 这是一个使用 RealityKit API 的代码示例 你要做的第一件事是 创建一个 AnchorEntity 的 类型主体 并将此锚添加到场景中
接下来 你将加载模型 在我们的例子中 它被称为机器人
为此 我们使用异步 加载 API 在完成处理器中 你将获得 BodyTrackedEntity 我们现在 只需将其添加为 bodyAnchor 的子项
因此只要 ARKit 现在将 AR 主体锚点添加到会话中
骨架的 3D 姿势就会 自动实时应用于 虚拟模型
这就是使用 ARKit 3 进行 动作捕捉的简单方法
谢谢 那么 现在让我们谈谈 同步的前后摄像头 ARKit 让你使用后置摄像头来 进行世界追踪 并且前面使用 2Depth 摄像头系统来进行人脸追踪 现在 你非常需要的一个 功能是能够 把前置和后置摄像头的 用户体验结合到一起 现在 有了 ARKit 3 你现在可以做这个了
因此有了这个新功能 你 可以同时使用两个摄像头 来构建 AR 体验 这就意味着 你现在可以构建两种新 类型的用例
首先 你可以创建世界追踪体验 因此 使用后置摄像头 还可以从前置摄像头 捕获的面部数据中受益
你可以创建面部追踪 体验 利用 全方位设备定位和 6 度自由度的位置 所有这些都支持 A12 设备和更高版本 让我们来看一个例子 在这里 我们使用 平面估算来进行世界追踪 但是我们也在平面顶部 放置了一个人脸网格 并通过前置摄像头 捕捉到的面部表情 实时更新它 所以让我们看看如何 在 API 中使用并存的前后摄像头 首先 让我们创建一个世界追踪配置 现在 我选择的配置 决定了屏幕上实际显示的 是哪个摄像头流 因此在这种情况下 是后置摄像头
现在我打开新的 userFaceTrackingEnabled 属性 并运行会话 这将导致我收到面部锚点 然后我可以使用 来自锚点的任何信息 如面部网格 地形 或者锚点自身的变换 现在 请注意 由于我们 在这处理世界坐标 用户面部传输将被 放置在摄像机后面 这意味着为了能看见面部 你需要 将其转换到 相机前面的某个位置 现在 让我们看看人脸追踪配置 你可以像往常一样 创建面部追踪配置 并将 worldTrackingEnabled 设置成 true 然后 在运行配置后 你可以 在每个帧中访问 例如 在更新帧的会话中 回调当前 相机位置的转换 然后你就可以把它用于 任何你想到的用例 这就是 ARKit 3 里面 同步的前后摄像头 我们认为你能够 使用这个新的 API 来做出许多出色的用例
谢谢 现在 让我把它交给 Thomas 他将会告诉你所有 关于协作会议的内容
谢谢 谢谢你 Andreas 大家下午好 我的名字是 Thomas 来自 ARKit 团队 让我们谈谈协作会议 在 ARKit 2 中 你可以创建 具有保存和加载世界地图 功能的多用户体验 你必须在一台设备上保存地图 并将其发送到另一台 设备 以便你的用户再次 获得相同的体验
这是一个单一的地图 一次性的 地图共享体验 在这 之后 大多数用户 将不会相同 不再共享相同的信息 好吧 通过在 ARKit 3 上的协作会话 我们现在 可以在整个网络上 持续共享你的映射信息
这可以使你创建临时的 多用户体验 你的 用户可以更轻松地访问同一会话
此外 我们还允许你 在所有设备上 分享或者我们实际共享 ARAnchors 所有这些锚点 都可以通过锚点的会话 ID 识别出来
注意 在这一点上 大多数 所有的坐标系都是 相互独立的 即使我们仍然在幕后 共享信息 让我给你展示一下这是如何运作的
所以在这个视频中 我们可以看到两个用户 注意颜色 一个用户将以绿色 显示功能点 另一个用户 将以红色显示功能点 当他们在环境中移动时 他们开始 映射环境并添加更多的特征点 此时 这是他们内部地图的 内部展示 他们不知道 彼此的地图 当他们四处移动时 会收集更多的特征点
当他们在场景中 收集到更多的特征点 你可以 看到内部地图 注意颜色和它们的 最终匹配点 然后这些 内部地图将合并到一起 只形成一个地图 这意味着 每个用户现在都 了解彼此 也了解场景理解 当他们四处移动时 会提供更多信息
他们又持续在 幕后共享信息
此外 ARKit 3 还为你提供了 类似 AR 的参与者锚点 使你可以了解其他用户 在你的环境中的实时位置 如果你想展示 一个图标或者其他代表该用户的东西 这会非常方便 如前所述 ARKit 3 也会在幕后共享 ARAnchors 这意味着如果你在 一台设备上共享或添加一个锚点 它将自动显示在另一台设备上
让我们看看它在代码中是如何工作的
正如 Andreas 之前提到的 ARKit 和 RealityKit 完全融为一体 如果你想启用 与 RealityKit 的协作会话 这将会非常简单 你首先需要设置你的 Multipeer Connectivity 会话 Multipeer Connectivity 框架是 一个 Apple 框架 允许你进行发现和 点对点连接 然后 你需要将这个 多点连接会话传递 给 AR 场景视图同步服务 最后 正如每个 ARKit 体验一样 你必须设置 你的 ARWorldTrackingConfiguration 将 isCollaborationEnabled 标志设置为 true 并在 会话中运行该配置 就是这样 接下来会发生什么
因此 ARKit 将 isCollaborationEnabled 标志 设置成 true 时 基本上将 并且在会话上运行该配置 基本上是将在 ARSessionDelegate 上创建 一个新方法 以便你传输该数据 在 RealityKit 用例中 我们将处理它 但是如果 你在另一个渲染器中使用 ARKit 那么我们将 你将必须通过网络发送该数据
此数据成为 AR 协作数据
ARKit 可以在任何时间点 创建 AR 协作数据包 然后你必须再次 转发给其他用户 这不仅限于两个用户 你可以在该会话中 拥有大量用户
在此过程中 ARKit 将 生成额外的 AR 协作数据 你必须 将这些数据转发到其他设备 并广播这些数据
让我们看看这在代码中是如何工作的
因此 在本例中 你首先需要设置你的多点连接 或者你也可以设置 任何框架 你选择的任何网络框架 并确保你的设备 共享相同的会话 当它们执行时 你需要 启用 ARWorldTrackingConfiguration 并将 isCollaborationEnabled 标志设置为 true
在这种情况下 你需要
此时 在代理下将为你提供一个新方法 你将在其中 接收一些协作数据 收到这些数据后 你需要确保将其在 网络上广播给同时 处于协作会话中的其他用户 在其他设备上 接收这些数据后 你需要 更新 URL 会话 以便它 了解这些新数据 就是这样的
此协作数据
自动交换所有 用户创建的 ARAnchors
每个锚点都可以 通过会话 ID 识别 这样你就可以 确保了解 锚点来自哪个设备或者哪个 AR 会话 如前所述 ARParticipantAnchor 实时地 展示参与者的 位置 这在你的某些用例中 非常方便
这就是你创建协作会话的方式 现在让我们来谈谈指导 当你创建一种体验 一种 AR 体验 指导非常重要 你真的想引导你的 用户 不管他们是新用户 还是返回到你的 AR 体验中的用户 这不是一个简单的过程 有时候 对于你来说 理解甚至指导用户获得新体验 是很难的
在整个过程中 你必须对某些追踪事件做出反应 有时追踪会受限 因为用户移动得 过于快速 到目前为止 我们一直在为你 提供 Human Interface Guideline 这允许你为用户引导体验 提供一些指导
今年 我们将它嵌入到 UI 视图中
我们将它称为 AR Coaching View 这是一个内置的叠加层 你可以直接嵌入到 AR App 中 它可以引导你的用户 获得非常好的追踪体验 它为你的 App 提供一个 连续的设计 便于你的用户能够非常熟悉它 实际上你可能之前已经看过这种设计 我们有 AR 快速查看和测量
这个新的 UI 叠加层 会根据不同的追踪事件 自动激活和停用 而且你可以调整某些指导的目标 让我们来看看其中的一些叠加层 所以在 AR Coaching View 中 我们 有多个叠加层 用户引导 UI 使 用户能够理解 你正在寻找的内容 在 本例中 是表面 大多数情况下 你的体验 需要表面来放置内容 因此如果在你的配置中 启用平面检测 则会 自动显示此叠加层
其次 我们有另外一个 叠加层 使用户能够理解 他们必须更多地移动 以收集其他功能 以便更好地进行追踪 最后 我们还有 另外一个叠加层 来帮助你的 用户在某些特定环境下 重新定位 以防你跟丢 例如 如果 App 进入后台 让我们来看一个例子
因此 在这个例子中 我们要求用户移动设备 来找到一个新的平面 一旦用户移动 并收集更多的 功能 那么内容就会 被放置 视图就会自动关闭 所以你不用做任何事情 一切都是自动处理 让我们来看看如何设置 同样这很容易 因为它是一个简单的 UI 视图 所以你必须将其设置为另一个 UI 视图的子视图 理想情况下 你将其设置为 AR 视图的子级 然后 你需要将此会话 连接到指导视图 以便指导视图知道要对 哪些事情做出反应 或者如果你正在使用 故事板 则需要将教指导 视图的会话提供程序 出口连接到 会话提供程序本身 或者 如果你想 对视图提供给你的某些事件做出反应 可以设置一组委托 最后 如果你想 禁用某些功能 还可以提供一组 特定的指导目标 让我们看看其中的一些委托
因此我们在 AR Coaching View 方面 有三种新方法 CoachingOverlayViewDelegate 其中两个可以对 激活和停用做出反应 因此你可以选择 在整个体验过程中 是否仍需要启用该功能 或者你认为 例如 如果该用户曾经 用过此功能 则不需要再了解此功能
此外 你可以自动设置 UI 视图 对某些重新定位中止 请求做出响应 指导视图实际上 会为你和你的用户提供一个 新的 UI 界面 在这里他们 可以重新定位并且 重新启动会话或者 重置追踪
因此这个新的视图 对于你的 App 来说非常方便 这样你可以确保获得 一致的设计并帮助你的用户 现在我们来谈谈面部追踪 在 ARKit 1 中 我们启用面部 追踪功能 可以来追踪一张脸
在 ARKit 2 中 我们能够 追踪多张脸 能够同时追踪三张脸
此外 你还可以 确保在此人离开框架 并再次返回时 识别出他 并再次为你提供相同的面部锚点 ID 因此多人面部追踪可以 同时追踪三张脸 并为你提供一个持久的 面部锚点 ID 这样你就 可以确保在整个会话中 识别出一个用户 如果你重新启动一个会话 那么这个 ID 就会消失 并出现一个新的会话
要实现这一点 其实非常简单 我们在 ARFaceTrackingConfiguration 方面 有两个新属性
第一个允许你 查询在该特定设备上的 一个会话中可以同时 追踪多少面孔 另一个允许你 设置你想要同时追踪的 追踪面数 这就是多面部追踪 让我们来讨论一种新的 追踪配置 我们 称它为 ARPositional TrackingConfiguration 所以这个新的追踪 配置只用于 追踪用例 比如你经常有这样 一个用例 它实际上不需要 渲染相机背景
嗯 这是针对该用例制作的
我们可以通过将 渲染速率保持在 60 赫兹 来降低捕获帧速率和 相机分辨率 从而实现低能耗
接下来 让我们谈谈 我们今年所做的 一些场景理解方面的改进
图像检测和图像 追踪已经存在了 一段时间 今年我们可以同时 检测多达 100 个图像 例如 我们还为你提供 检测打印 图像比例的功能
通常 当新的 App 要求用户使用图像 来放置内容并 相应地缩放内容时 图像 可能会以不同的大小或者 不同的纸张大小进行打印 通过这种自动比例 估算 你现在可以 检测物理尺寸并相应地调整比例 当你想要创建一个 新的 AR 参考图像时 我们还能够在 运行时查询你传递给 ARKit 的 图像的质量
我们还改进了 我们的目标检测算法
通过机器学习 我们可以 提高目标检测算法 为你提供更快的识别 以及 更强大的环境 在更多不同的环境中 通常 你必须扫描 环境中的特定对象 以便它在 另一个环境中完美工作 现在 这些都更灵活了
最后 场景理解的 另一个重要方面是 平面估算 通常 你需要平面 估算来放置内容 通过机器学习 我们实际上使它 更精确 我们使它 更强大 使它更快地 检测到平面 让我们来看一个例子 通过机器学习 我们不仅在检测到 这些特征时在地面上 扩展这些平面 而且实际上 流动的范围更广 但是我们也有 检测的能力 当我们现在找不到特征时 我们也有检测侧壁的能力 这些都是机器学习的功劳 正如你在这里看到的 正如可以在上一个视频中看到的 我们在平面上 有好多种分类 好吧 这又是通过机器学习来完成的 去年 我们推出了 五种不同的分类 墙壁 地板 天花板 桌子和座椅
今年 我们又推出了 额外两种 我们如今增加了 检测门和窗的能力
如前所述 平面分类真的非常重要 或者平面估算 对于在世界上放置内容 非常重要 这实际上是目标放置的理想选择 你总是将你的对象放在一个表面上
今年有了新的 光线投射 API 你甚至可以 更容易地将你的内容 放置地更加准确 更加灵活
它支持任何形式的表明对齐 所以你不必再局限于 垂直和水平方向了
而且 你可以随时追踪你的光线投射
这就意味着 当 ARKit 或者当 你移动你的设备时 ARKit 会检测到更多 关于环境的信息 它可以 准确地把你的物体 放到物理表面的上边 比如那些平面正在展开 让我们来看看如何在 ARKit 中启用它
听起来我们正在创建一个光线投射查询 一个光线投射查询有三个参数 第一个决定 你想要进行光线投射的位置 在此示例中 我们从屏幕中心 开始执行此操作的 然后你需要告诉它 你想要允许的内容 以便放置该内容或恢复转换 此外 你还需要告诉它 你想要哪种对齐方式 它可以是水平的 垂直的或者任何
然后你需要在你的 AR 会话中将该查询传递给 trackedRaycast 方法
这个方法有一个回调 它允许你对 新的转换做出反应 并使用 该光线投射给你结果 这样 你就可以相应地调整内容或者锚点 最后 当你完成这个光线投射 你就可以停下 这些是一些场景 这些是今年 我们在光线投射方面所做的改进
让我们继续我们 在视觉连贯性方面的增强 所以今年 我们有了这个新的 ARView 允许你 根据需要激活和停用 不同的渲染选项 它还可以根据你的设备功能 自动停用和激活 让我们看一下这个例子 你可能之前已经看过这个视频 看看飞行器是如何移动的 物体是如何在表面上 移动的 所有这些看起来 都很真实 当一切都消失 你
实际上甚至没有意识到 那些物体是虚拟的 让我们看一下 我们所做的一些视觉连贯性的增强 让我们再看看 这个视频的开头 让这些球在桌子上滚动时 暂停一下
这里你可以看到 景深效果 这是 RealityKit 的一个新功能
你的 AR 体验专为 大型和小型房间而设计 你 iOS 设备上的相机 总是根据环境调整焦距 而景深功能 允许调整对 虚拟内容的焦距 使其与你的物理内容完美匹配 从而使对象 在环境中完美融合 此外 当你快速 移动相机或物体 快速移动时 你可以看到 会出现模糊
好吧 大部分时间 你有一个常规渲染器 并没有运动模糊效果 那么你的虚拟内容就会很突出
它并没有真正融入环境 由于 VIO 相机 运动和参数感 我们可以合成运动模糊 我们可以将它应用于 可视对象 以便它在你的 环境中完美融合 这是 ARSCNView 和 ARView 上的一个变量 让我们再看一下这个例子 这里的一切看起来都很好
今年我们为增强视觉一致性而 提供的另外两个 API 是 HDR 环境纹理和相机颗粒
放置内容时 你真的希望该内容能够 反映现实世界
有了高动态范围 即使在明亮的 光线环境中 你也可以捕捉那些突出的或者更高的高光 使你的内容更有活力
今年使用 ARKit 我们 实际上可以请求这些 HDR 环境纹理 以便你的内容看起来更好
此外 我们还有一个相机颗粒 API 你可能会注意到 当你在一个光线很暗的环境中 有一个 AR 体验 与相机相比 其他内容看起来非常闪亮
每个相机都会产生一些颗粒 尤其在很暗的环境下 颗粒感看起来更重 使用这种新的相机颗粒 API 我们可以确保 在你的虚拟内容上 应用相同的颗粒图案 以便它 很好地融合而且不会非常突出
所以这些是今年
但是我们并没有就此止步 我认为很多人都想要 这样一个功能
当你开发一种 AR 体验时 你总有 或者经常为了原型 或者测试你的体验去 一个特定的地方
大多数时候 当你去那里的时候 你会回到你的 桌子 你开发你的体验 你想要再回来 今年使用 Reality Composer App 你现在可以记录 体验或者顺序
这意味着你可以去 你最喜欢的地方 在那里 你将通过捕捉环境 来获得体验 ARKit 将确保将 传感器数据和视频流一起 保存到电影文件 容器中 这样你就可以 随身携带并将其放入 Xcode 此时 Xcode 方案设置 像一个新的 附加功能或一个 允许你选择该文件的新字段
选择该文件 然后在连接到 Xcode 的 设备上按运行 然后 你可以在桌面上重播该体验 这是原型设计的理想选择 更适合使用 不同参数调整 AR 配置 并尝试 查看体验的外观 你甚至可以对某些追踪做出反应 这很棒 我想今年在 ARKit 3 中 你将会有很多不同的工具 你可以通过协作会话 多面部追踪 来增强你的多用户体验 你可以通过 RealityKit 的新的一致性效果 以及 ARWorldTrackingConfiguration 上的新视觉效果来增强 所有 AR App 的真实感
你可以通过新的运动捕捉
以及同时使用前置和后置摄像头来 启用新的用例
当然 在现有功能的基础上 还有很多改进 例如 使用目标 检测和机器学习 至少 最后但并非最不重要的是 我认为记录和重播 工作流程将使 你的设计和原型 体验设计比以前更好 所以我真的很期待 你能去网站上 下载我们的样品
我们还有几个实验室 一个在明天 一个在周四 我希望 你能来 跟我们说说 你有啥问题 或者只是单纯聊聊天
然后我们还有两个 深度会议 一个是关于 将人们带入到 AR 中 我们将更多的讨论 人物遮挡和运动捕捉 第二个是关于协作 AR 体验 我希望你能享受会议的剩下部分
祝你有美好的一天 再见 [掌声]
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。