首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ARKit -如何沿识别的表面移动对象?

ARKit是苹果公司推出的增强现实(Augmented Reality,简称AR)开发框架,可用于在iOS设备上创建沉浸式的增强现实体验。ARKit提供了一系列功能和工具,使开发者能够在现实世界中将虚拟对象与真实环境进行交互。

要实现沿识别的表面移动对象,可以使用ARKit中的平面检测和跟踪功能。ARKit可以识别和跟踪水平表面,如地板、桌子等,开发者可以利用这些检测到的平面来放置虚拟对象,并使其随着平面的移动而移动。

以下是实现沿识别的表面移动对象的步骤:

  1. 启用平面检测:在ARKit中,可以通过启用平面检测功能来检测和跟踪水平表面。开发者可以使用ARWorldTrackingConfiguration配置对象的planeDetection属性来启用平面检测功能。
  2. 检测平面:一旦启用了平面检测功能,ARKit会自动检测和跟踪水平表面。开发者可以使用ARSCNViewDelegate协议中的renderer(_:didAdd:for:)方法来获取检测到的平面信息。
  3. 放置虚拟对象:当检测到平面后,开发者可以将虚拟对象放置在检测到的平面上。可以使用ARAnchor对象来表示虚拟对象的位置和方向,并将其添加到ARSession中。
  4. 跟随平面移动:一旦虚拟对象被放置在平面上,开发者可以通过更新虚拟对象的位置和方向来实现跟随平面移动。可以使用ARSCNViewDelegate协议中的renderer(_:didUpdate:for:)方法来获取平面的更新信息,并相应地更新虚拟对象的位置和方向。

推荐的腾讯云相关产品:腾讯云AR服务(https://cloud.tencent.com/product/ar

腾讯云AR服务是腾讯云提供的一项增强现实服务,为开发者提供了丰富的AR功能和工具,包括平面检测、虚拟对象放置、跟踪等。开发者可以使用腾讯云AR服务来实现沿识别的表面移动对象的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用ARKit开发AR游戏-基础篇:ARKit入门篇

arkit2.jpg arkit3.jpg arkit4.jpg 移动设备和SDK方案 由移动硬件相机驱动,提供一个“窗口”进入。可以看到现实世界与AR的对象。...对于每一帧,ARKit会将图像与来自设备的运动感应硬件的数据一起分析,以估计设备的现实位置和方向。ARKit以ARFrame对象的形式提供跟踪信息和成像参数。...ARKit SDK分析相机视图中的内容,并根据可识别的功能和估计的深度确定点数。碰撞结果按照与设备的距离进行排序。平面优先于feature point.         ...FeaturePoint:由ARKit自动识别的点是连续表面的一部分,但没有相应的锚点(anchor)。         ...使用真实世界大小          Unity中的1个单位表示一米,在放置对象和创作内容时需要考虑到这一点。 考虑对象交互 沿着放置的平面移动物体。

4.4K51

iOS ARKit教程:用裸露的手指在空中画画

为了实现前者,ARKit假设您的手机是在真实3D空间中移动的相机,因此在任何点丢弃一些3D虚拟对象将锚定到真实3D空间中的该点。对于后者,ARKit会检测水平平面,如表格,以便您可以在其上放置对象。...通过检测这些点相对于彼此从一帧移动到另一帧的程度,可以估计设备在3D空间中的位置。这就是为什么ARKit在面向无特征的白色墙壁时放置时或者当设备移动得非常快而导致图像模糊时无法正常工作的原因。...在下一节中,我们将解释如何检测平面,以及如何相应地定位焦点平方。 在ARKit中检测平面 ARKit可以检测新平面,更新现有平面或删除它们。...平面在X和Z方向上定义,其中Y是表面的法线,即,如果我们想让它看起来好像在平面上打印,我们应该始终将我们的绘图节点位置保持在平面的相同Y值内。 。 平面检测通过ARKit提供的回调函数完成。...一旦用户完成绘制并选择3D按钮,我们将根据用户手指的移动更改所有掉落对象的高度。 以下代码显示了PointNode表示点的类: 您将在上面的代码中注意到我们将几何体沿y轴平移了一半的高度。

2.2K30

Sensor Tower报告:ARKit应用下载量已超1300万,47%为游戏内容

近日,移动应用数据分析公司Sensor Tower发布了一份最新报告,报告显示:自2017年9月19日iOS 11发布以来,基于苹果ARKit创建的AR应用(下文简称为ARKit应用)的下载量已超1300...例如,2016年火爆全球的《Pokemon Go》,让很多移动用户开始接触并了解AR。...但由于Sensor Tower的分析对象是基于ARKit创建的应用,而《Pokemon Go》是后期增加ARKit的兼容,所以并未计入统计。...虽然目前AR仍处在早期阶段,但随着ARKit自身的不断改进,AR将会在更多类别的发展中展现出更大的潜力。 例如,ARKit在今年1月公布的开发者测试版中,增加了一个有趣的功能,即对垂直检测支持。...借助该功能,ARKit可对垂直表面(如墙壁)进行检测,并将虚拟对象放置在垂直表面上。 但苹果并不是唯一致力于推进AR内容发展的企业,谷歌也在通过ARCore提供AR内容的开发支持。

74780

苹果的增强现实框架:ARKit

此外,ARKit还存在一些问题: ARKit 是基于惯性-视觉来做空间定位的,需要平稳缓慢的移动+转向手机,才能构建更加准确的世界,这对用户来说是一种考验,需要积极提示。...(这个问题是很多参会者关心的问题,但 ARKit 团队似乎不是很 care ,说到底还是因为前置摄像头的场景中,用户很少会移动,画面中一般大部分都是人脸,这样 ARKit 的定位与检测能力无法很好使用。...ARKit合适支持A8?性能如何?...如何追踪实际的物体? 答:可以在已识别的物体位置上,添加一个node, 这样就能在之后的处理中一直保持这个物体的追踪。...: [1504061906573_9664_1504061906653.jpg] 分别是沿三个坐标轴的平移与旋转。

3.3K00

建立您的第一个AR体验

ARWorldTrackingConfiguration提供高精度的运动跟踪,并支持您将虚拟内容与真实世界的表面相关联的功能。...启用平面检测后,ARKit会为每个检测到的平面添加和更新锚点。默认情况下,ARSCNView类为每个锚点添加一个SCNNode对象到SceneKit场景。...当您将内容添加为与锚对应的节点的子节点时,类会自动移动该内容,因为ARKit会细化其对平面位置的估计。...为了显示每个平面的当前估计形状,此示例应用程序还实现了renderer(_:didUpdate:for:)方法,更新ARSCNPlaneGeometry和SCNPlane对象以反映来自ARKit的最新信息...class ARWorldTrackingConfiguration 使用后置摄像头的配置,跟踪设备的方向和位置,并检测真实世界的表面,以及已知的图像或对象

1.1K20

ARKit和CoreLocation:第一部分

在第二部分将讨论计算两个位置,以及如何利用位置数据,并翻译成在ARKit场景的位置之间的轴承。 介绍 ? image.png 提到“增强现实”,跳入大多数人头脑的第一件事是PokemonGO。...定义 视觉惯性测距(VIO):ARKit分析手机摄像头和运动数据,以便跟踪周围的世界。计算机视觉记录了环境中的显着特征,无论iPhone的移动如何,都能够保持对现实世界中位置的了解。...ARSession:在ARKit中,ARSession协调创建增强现实体验所需的逻辑和数据。这包括摄像机和运动数据以及在周围移动时跟踪世界所需的计算。...运行会话配置时,ARKit会根据设备的位置和方向创建场景坐标系; ARAnchor您创建的任何对象或AR会话检测到的对象都是相对于该坐标系定位的。 ?...它还会自动移动SceneKit相机以匹配iPhone的实际移动。 ?

2.2K20

最新iOS设计规范九|10大系统能力(System Capabilities)

为了避免破坏您创建的错觉,请确保您的应用每秒更新场景60次,以使对象看起来不会跳跃或闪烁。 考虑具有反射表面的虚拟对象如何显示环境。ARKit中的反射是基于相机捕获的环境的近似值。...人们可能会在没有太多移动空间或没有大而平坦的表面的地方打开您的应用程序。预先与人们清楚地传达您的应用程序的要求和期望,以帮助他们了解他们的物理环境如何影响他们的AR体验。 注意人们的舒适感。...(还记得pokemon go悲剧吗) 使用辅导来帮助人们入门 在人们享受您的应用程序中的AR体验之前,他们需要以允许ARKit评估周围环境并检测表面的方式移动设备。...ARKit检测到表面后,您的应用程序可以显示自定义视觉指示器,以显示何时可以放置对象。通过将指示器与检测到的表面的平面对齐,可以帮助人们了解放置的对象在环境中的外观。 ?...努力实现与应用程序AR环境的物理性质一致的虚拟对象移动。人们不一定希望物体在粗糙或不平坦的表面上平稳移动,但他们确实希望物体在运动过程中保持可见。

4.2K20

iOS版 使用ARKit和Swift创建交互式Domino游戏

在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。 这就是我们要做的: ?...ARKit不断分析场景,如果发现检测到的表面现在变大或变小,它将renderer:didUpdatenode:forAnchor:使用更新的值调用其另一个委托方法。...image 了解ARKit如何不断更新飞机? 我们不再需要看地面了。在renderer:didUpdatenode:forAnchor:,设置planeNode.opacity =0.0。...将手机移动一下,以便ARKit可以检测到地板并用手指在屏幕上绘制: ? 3.png 好吧,热门测试工作正常,但现在我们遇到了一个新问题:这么多的多米诺骨牌!...沿Y轴旋转节点。 在我们运行我们的应用程序之前,让我们快速为多米诺骨牌添加一些颜色。

2.3K30

iOS ARKit教程:赤手在空中绘画

通过检测这些点在一个帧之间移动的距离,我们可以估算出这个设备在3D空间中的位置。这就是为什么当设备被放置在一个毫无特色的白色墙壁上或者当设备移动得非常快导致图像模糊的时候,ARKit不能正常工作。...在下一节中,我们将解释如何检测飞机,以及如何相应地定位焦点广场。在下一节中,我们将解释如何检测平面,以及如何相应地定位焦点。 检测平面 ARKit可以探测到新的平面,更新现有的平面,或者移除它们。...平面是在X和Z方向上定义的,Y是表面的法线。如果我们想让它看起来就像在平面上打印一样,我们应该始终保持我们的绘图节点的位置在相同的Y值上。 平面探测是通过ARKit提供的回调函数完成的。...我们如何跟踪Apple Vision库的对象? Apple Vision库允许开发人员跟踪视频流中的对象。...开发人员为他们要跟踪的对象在初始图像帧内提供一个矩形的坐标,然后在视频帧中提供矩形,并且该库返回该对象的新位置。 我们如何开始使用Apple ARKit

1.8K10

ARKit和CoreLocation

现在我们需要弄清楚如何获得两个坐标之间的方位(角度)。寻找轴承设置我们以创建旋转变换以使我们的节点朝向正确的方向。...球形三角形通过半导体定律解决 如果您有两个不同的纬度 - 地球上两个不同点的经度值,那么在Haversine公式的帮助下,您可以轻松计算大圆距离(球体表面上两点之间的最短距离)。...可移动式 image.png sin =对边 / 斜边 cos = 邻边 / 斜边 tan = 对边 / 邻边 atan2: 具有两个参数的反正切或反正切函数。...给定起点,初始方位和距离,这将计算沿(最短距离)大圆弧行进的目标点和最终方位。...旋转矩阵 为了使我们的对象指向正确的方向,我们需要实现旋转变换。

1.4K20

谷歌增强现实技术ARCore

这弥补了AR在Android市场上的空缺,让无数Android用户激动不已,要知道Android拥有超过20亿活跃设备,如果说ARKit是苹果AR的起点,那么说ARCore掀起了移动AR市场的狂潮,ARCore...环境感知:虚拟物体一般都是放置于平坦平面上的,用ARCore可以检测物体的水平表面,建立环境认知感,以保证虚拟的对象可以准确放置,然后让您看到放置在这些表面上的AR物体。...光线预测:ARCore根据环境的光强度,使开发人员可以与周围环境相匹配的方式点亮虚拟对象。此外,最近的一个实验发现,虚拟阴影在真实环境光照下的调整功能也是如此,这样就可以使AR物体的外观更为逼真。...ARCore与ARKit对比有如下的相同点和异同点: 相同点 ARKit在iOS中的工作原理与ARCore上述的原理大致相同。...随着设备的移动,应用会自动侦测到水平表面,并绘制出棱形网格。点击网格即可在平面上放置 Android 机器人即可完成移动

2.1K60

谷歌增强现实技术ARCore

这弥补了AR在Android市场上的空缺,让无数Android用户激动不已,要知道Android拥有超过20亿活跃设备,如果说ARKit是苹果AR的起点,那么说ARCore掀起了移动AR市场的狂潮,ARCore...环境感知:虚拟物体一般都是放置于平坦平面上的,用ARCore可以检测物体的水平表面,建立环境认知感,以保证虚拟的对象可以准确放置,然后让您看到放置在这些表面上的AR物体。...光线预测:ARCore根据环境的光强度,使开发人员可以与周围环境相匹配的方式点亮虚拟对象。此外,最近的一个实验发现,虚拟阴影在真实环境光照下的调整功能也是如此,这样就可以使AR物体的外观更为逼真。...ARCore与ARKit对比有如下的相同点和异同点: 相同点 ARKit在iOS中的工作原理与ARCore上述的原理大致相同。...随着设备的移动,应用会自动侦测到水平表面,并绘制出棱形网格。点击网格即可在平面上放置 Android 机器人即可完成移动

1.5K101

移动AR市场风头太猛,谷歌ARCore能够狙击苹果ARkit吗?

最近说到AR,总是会第一时间联想到苹果的ARKit平台,现在一直在移动AR上有所举动的谷歌终于坐不住了,他们在29日发布了可以和ARKit一决高低的AR平台——基于Android平台的ARCore预览版...和ARkit同台竞争的ARCore 根据谷歌的描述来看,ARCore有三个基本特点: 运动追踪:可以基于移动设备的摄像头以及内置的传感器,来识别出设备在移动时的位置和方向,从而让虚拟对象保持相对准确的位置...环境理解:通过手机摄像头来检测水平表面。 光线预测:ARCore能够根据环境中的光线变化,使得虚拟对象的周边阴影发生变化,从而让其看起来更加逼真。...同时,谷歌ARCore支持使用Java/OpenGL、Unity和Unreal开发虚拟角色,还支持从Tilt Brush 和Google上个月推出的VR建模工具Blocks中,直接导出ARCore对象。...抢占移动AR市场 谷歌是时候反击了 在苹果推出ARkit之前,谷歌在移动AR方面有更多的布局动作,他们在去年联合华硕、联想,推出了支持Project Tango的AR手机。

1.1K00

ARKit 简介-使用设备的相机将虚拟对象添加到现实世界中 看视频

尽管ARKit仅在2017年于2017年发布,但它很快受到欢迎,其可能性无穷无尽。一些人声称这是“下一次大转变”或“改变游戏规则”。 在本课程中,您将了解到ARKit,您将学习如何制作自己的游乐场。...它允许用户与自己的周围环境交互数字对象或角色,以创建独特的体验。 什么是ARKitARKit是Apple的框架,用于处理为iOS设备构建增强现实应用和游戏的处理。...场景理解 了解场景意味着ARKit会分析摄像机视图所呈现的环境,然后调整场景或提供相关信息。这使得能够检测物理世界中的所有表面,例如地板或平坦表面。然后,它将允许我们在其上放置虚拟对象。...而且,光估计可以被集成以点亮模拟物理世界中的光源的虚拟对象。...我希望你很高兴能继续学习这门课程,学习如何自己创作。 原文: https://designcode.io/arkit-intro

3.6K30

ARKit 教学:如何搭配SceneKit来建立一个简单的ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件

是时候让你开始沉浸在本篇教学内,并让你了解如何一步一步建构出ARKit App,且透过你手上的装置与AR世界互动。...本篇教学的想法主要是学习AR与利用API来建置一个APP,藉由教学的步骤,你将会一步步了解ARKit在实体装置上是如何与神奇的3D物件来互动的。 在开始前,请了解本篇教学仅是以基础功能应用为主。...根据Apple官方说明,对特征点的定义: 此点由ARKit自动从一个连续的表面中自动辨识,但不会有另一相对的依靠点。...它其实是依真实世界的实物表面上侦测特征点,所以,我们回到如何实现增加立方体呢,在我们开始前,在ViewController类别的代码最下方建立一个extension。...image 总结 恭喜你,和我们走了这么久完成本篇教学,ARKit还有还有许多功能需要我们继续挑战,我们只是学了一些表面功夫。

1.8K20

平面检测-搜索真实世界的表面

现在我们已经完成了正确运行ARKit项目的所有基本设置,我们希望我们的设备能够坐在水平表面上。这是飞机检测。在本节中,我们将学习如何激活平面检测。我们将熟悉锚点以及如何使用它们将对象放置在锚点上。...下载 要学习本教程,您需要Xcode 10或更高版本,以及来自Configuration for ARKit的最终Xcode项目。您可以下载本节的最终Xcode项目,以帮助您与自己的进度进行比较。...import SceneKit import ARKit 延期 这个文件将作为ViewController类的扩展,这里的代码将成为该类的一部分。...您会看到在移动设备时,表面的大小会相应更新。 删除锚点 有时会发生错误。场景可以检测同一表面的多个锚点。我们可以通过添加didRemove方法来解决这个问题。...您在本教程中学到的内容不仅可以让您了解如何模拟真实曲面,还可以模拟现实生活中的事件。例如,您可以将物理应用于水平表面以使虚拟对象掉落,在其上驾驶汽车或在场景上为角色设置动画。

2.9K30

ARKit示例 - 第4部分:现实主义 - 照明和PBR

首先,如果您的虚拟场景没有灯光,那么就像在现实世界中所有内容都是黑色一样,没有光线反射物体表面。...光线有一个变化的方向,所以当你在一个物体周围走动时,它总是看起来就像你的视线中的光线(就像你手持火炬一样),这种情况通常并非如此,大多数场景都有静态照明,因此当您四处移动时,您的模型看起来会不自然。...iOS版10基于物理的渲染器,并没有得到很大的期待结果...medium.com 我不会在本文中尝试解释此过程的所有细节,因为有许多优秀的资源,但基本概念是当您对对象进行纹理处理时,您提供的信息包括:...粗糙度  - 描述材料的粗糙程度,较粗糙的表面显示较暗的反射,更光滑的材料显示更明亮的镜面反射。 金属度  - 相当于材料的光泽程度。...最后一部分是从ARKit获取光估计值并将其应用于此环境图像的强度。ARKit返回值1000以表示中性光照,因此更小,更暗,更亮。

1.2K30
领券