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

是否可以将ARKit平面定位到屏幕中心?

ARKit是苹果公司推出的增强现实开发框架,用于在iOS设备上创建沉浸式增强现实体验。ARKit通过使用设备的摄像头和传感器来跟踪设备的位置和方向,并将虚拟内容与现实世界进行交互。

在ARKit中,平面定位是指识别和跟踪现实世界中的水平平面,例如地面、桌面等。通过将ARKit平面定位到屏幕中心,可以实现将虚拟物体或效果放置在屏幕中心的平面上。

要将ARKit平面定位到屏幕中心,可以通过以下步骤实现:

  1. 使用ARKit框架初始化AR会话,并启动设备的摄像头。
  2. 在AR会话中启用平面检测功能,以便ARKit可以识别和跟踪水平平面。
  3. 在检测到平面后,使用ARKit提供的平面锚点(ARPlaneAnchor)来获取平面的位置和方向信息。
  4. 将平面锚点的位置和方向与屏幕中心的位置进行比较,并计算出平移和旋转变换,以将平面定位到屏幕中心。
  5. 将虚拟物体或效果放置在屏幕中心的平面上,以实现所需的增强现实体验。

需要注意的是,平面定位到屏幕中心可能需要根据具体的应用场景和需求进行调整和优化。此外,ARKit还提供了其他功能和特性,如面部识别、光照估计、物体追踪等,可以根据具体需求进行扩展和应用。

腾讯云提供了一系列与增强现实相关的产品和服务,如腾讯云AR开放平台、腾讯云AR SDK等,可以帮助开发者快速构建和部署增强现实应用。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多相关信息和产品介绍。

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

相关·内容

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

为了实现前者,ARKit假设您的手机是在真实3D空间中移动的相机,因此在任何点丢弃一些3D虚拟对象锚定真实3D空间中的该点。对于后者,ARKit会检测水平平面,如表格,以便您可以在其上放置对象。...在下一节中,我们解释如何检测平面,以及如何相应地定位焦点平方。 在ARKit中检测平面 ARKit可以检测新平面,更新现有平面或删除它们。...我们希望焦点方块保持在屏幕中心,但是投影在最近的检测平面上。下面的代码演示了这一点: sceneView.hitTest通过将此2D点投影最近的平面下方,搜索与屏幕视图中的2D点对应的真实平面。...到目前为止,我们正在绘制检测到的表面,假设虚拟笔位于屏幕中心。现在为了有趣的部分 - 检测用户的手指并使用它而不是屏幕中心。...它通常是在点击识别器中编写的代码的反转: 最后,我们self.lastFingerWorldPos在绘图时使用而不是屏幕中心,我们就完成了。

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

    而对于后者,ARKit检测到水平面,比如桌子,这样你就可以在上面放置物体。 那么,ARKit是如何做到这一点的呢?这是通过一种叫做视觉惯性测量(VIO)的技术完成的。...在下一节中,我们解释如何检测飞机,以及如何相应地定位焦点广场。在下一节中,我们解释如何检测平面,以及如何相应地定位焦点。 检测平面 ARKit可以探测到新的平面,更新现有的平面,或者移除它们。...我们希望焦点方块放在屏幕中心,但投射在最近探测到的平面上。...2D点投射到最近的平面上,来寻找与屏幕视图中的2D点相对应的真实的平面。...到目前为止,我们正在绘制被探测的表面,假设虚拟笔位于屏幕中心。现在,有趣的部分——可以检测用户的手指并使用它而不是屏幕中心

    1.8K10

    ARKit示例 - 第2部分:平面检测+可视化

    ARKit可以检测水平平面(我怀疑未来ARKit检测更复杂的3D几何,但我们可能不得不等待深度感应相机,iPhone8可能......)。...对于平面检测,一旦您在3D中有许多特征点,您就可以尝试平面拟合到这些点,并在比例,方向和位置方面找到最佳匹配。ARKit不断分析3D特征点,并在代码中报告它找回给我们的所有平面。...类型,从中我们可以得到飞机的范围和中心信息。...提取结果 下面是我走过房子的一部分,从上面的视频中检测到的飞机的一些屏幕截图: 这是我厨房里的一个小岛,ARKit很好地找到了范围并正确定位了飞机以匹配凸起的表面 image.png 这是一个看着地板的镜头...image.png 下面是与上面相同的场景,但几秒钟后,ARKit所有上述平面合并到一个平面上。

    2.9K20

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

    首先,让我们创建一个空字典,以便我们可以保持对ARKit检测到的平面的引用。...ARPlaneAnchor为我们提供了检测到的曲面的中心和范围(宽度和高度)值。我们使用范围值来创建平面几何体并使用中心值来定位节点。 我们平面不透明度设置为30%,因此它不会完全遮挡地板。...由于我们之前已将检测到的平面保存在字典中,因此我们可以使用锚点的唯一标识符并检索我们的平面并更新其值。 运行应用程序: ? image 了解ARKit如何不断更新飞机? 我们不再需要看地面了。...将以下变量添加到类的顶部: var dominoes: [SCNNode] = [] 最简单形式的命中测试是确定用户触摸的屏幕的2D位置是否与现实世界中的任何虚拟对象或在我们的情况下与平面相交。...我们多米诺骨牌节点添加到我们的多米诺骨牌阵列中供以后使用。 现在运行应用程序。手机移动一下,以便ARKit可以检测到地板并用手指在屏幕上绘制: ?

    2.3K30

    苹果 AR 的人机界面设计规范

    物理限制考虑在内:一定要记住,用户可能会在非AR最佳体验的环境里使用你们的app。例如,他们可能在一个没有多大的移动空间,或者没有足够大的平整的平面的地方打开你们的app。...放置虚拟物体 提示用户定位表面,以及放置物体的时机:当进入了“表面定位模式”,可以用视觉标识来传达。例如,在屏幕中间放一个梯形框,可以帮助用户了解到此时他们需要找一个水平面。...避免物体对齐检测出的表面边缘:在AR中,表面的边缘是近似的,进一步分析用户环境之后,可能会发生改变。...要考虑是否有必要让用户缩放物体:通常来说,没有固定尺寸的玩具或者是游戏角色,用户可能希望可以看到它放大或是缩小的状态,提供缩放功能也显得比较合理。...比如说光线不够好,平面上的反光太强,平面没有足够的细节,或摄像头移动得太快。如果你的app可以检测到这些问题,或者当表面检测太慢时,可以用户解决办法。

    1.6K00

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

    帮助人们放置物体 告诉人们何时定位表面和放置对象。您可以使用系统提供的指导视图来帮助人们找到要放置对象的水平或垂直平面。...ARKit检测到表面后,您的应用程序可以显示自定义视觉指示器,以显示何时可以放置对象。通过指示器与检测到的表面的平面对齐,可以帮助人们了解放置的对象在环境中的外观。 ?...合并平面分类信息来通知对象放置。例如,仅允许人们虚拟家具放在分类为“地板”的平面上,或要求分类为“桌子”的平面放置在虚拟游戏板上。...启用重新本地化后,ARKit会尝试使用新信息这些虚拟对象还原其原始的实际位置。 考虑使用系统提供的教练视图来帮助人们重新定位。...在重新定位期间,ARKit尝试将其先前状态与当前环境的新观测值进行协调。要启用这些观察,您可以使用辅导视图来帮助人们将设备恢复其先前的位置和方向。 考虑在重新定位期间隐藏先前放置的虚拟对象。

    4.3K20

    ARKit 1.0☀️ 四、是否支持ARKit、启动相机、开启检测平面

    是否支持ARKit 因部分设备支持ARKit,部分设备不支持,因此程序需判断该设备是否支持ARKit,在执行后续操作 1、Unity切换IOS平台,导入SDK,新建scene 2、新建Skode_Test...改为Depth Only 2、为Main Camera添加Unity AR Video Unity AR Video的Clear Material赋值为YUVMaterial,该脚本功能是摄像头拍摄的画面渲染出来...测试是使用ARKit remote App进行测试(ARKit remote App打包方法),观看是否能将手机拍到的画面渲染Unity屏幕 3、为Unity场景添加ARKitRemoteConnection...预制体 4、运行Unity,Unity可看到手机拍摄的画面,即启动了相机 开启检测平面 目的:添加组件,使检测到现实平面后,手机出现虚拟平面和点云 在启动相机基础上,进行如下操作: 1、为MainCamera...添加UnityARCameraManager脚本,MainCamera赋值给该脚本的Camera 该脚本中含有检测检测手机是否支持ARKit的功能,所以就不需要再做检测手机是否支持ARKit的这份工作

    7010

    图像检测-如何通过扫描图像来制造幻觉

    第一个AR项目 如果这是您的第一个ARKit项目,我强烈建议您阅读我们的ARKit简介,因为我们不会在这里介绍基础知识。...您可以下载Final Xcode项目,以帮助您与自己的进度进行比较。 设置 如果您运行该应用程序,Apple的太空飞船将出现在您的环境中。这是AR模板。...我们不需要初始化场景,因为我们刚刚删除了ship.scn,我们需要用空白屏幕启动应用程序。...diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0) 场景的默认定位非常糟糕,这就是我们修复定位的原因...然后,变量链接到节点。节点的默认定位与框重叠,所以让我们给它一个负间距。然后,将其添加到planeNode。

    2.4K20

    建立您的第一个AR体验

    () configuration.planeDetection = [.horizontal, .vertical] sceneView.session.run(configuration) 仅当显示它的视图显示在屏幕上时才运行会话...如果AR是您应用的辅助功能,请使用该属性确定是否提供isSupported基于AR的功能。 为检测到的平面放置3D内容 设置AR会话后,可以使用SceneKit在视图中放置虚拟内容。...启用平面检测后,ARKit会为每个检测到的平面添加和更新锚点。默认情况下,ARSCNView类为每个锚点添加一个SCNNode对象SceneKit场景。...您的视图的委托可以实现向场景添加内容renderer(_:didAdd:for:)方法。当您将内容添加为与锚对应的节点的子节点时,类会自动移动该内容,因为ARKit会细化其对平面位置的估计。...平面锚点geometry描述了一个凸多边形,紧密包围了ARKit当前估计属于同一平面的所有点(使用ARSCNPlaneGeometry时很容易可视化)。

    1.1K20

    ARKit示例 - 第3部分:添加几何和物理乐趣

    在上一篇文章中,我们使用ARKit来检测现实世界中的水平平面,然后这些平面可视化。在本文中,我们现在开始为我们的AR体验添加虚拟内容,并开始与检测到的平面进行交互。...本文结束时,我们将能够立方体放入世界,真实物理应用于立方体,以便它们相互作用并产生微型冲击波,使立方体飞得很快。...在这个应用程序中,当用户单击屏幕时,我们执行命中测试,这涉及获取2D屏幕坐标并通过2D屏幕点(在投影平面上具有3D位置)从相机原点发射Ray并进入现场。...然后我们还给每个ARKit检测到物理体的平面,以便立方体可以平面交互(有关更多确切的细节,请参阅github 仓库中的Plane.m类)。...,看看我们已编写的一些代码是否有用,添加了一些用于启用/禁用功能的UI控件。

    99010

    ARKit介绍

    如果您没有这些知识或任何3D渲染,如Metal,OpenGL或Unity,那么我建议您在使用ARKit之前查看其中一个,因为它将帮助您理解我呈现的代码(例如,矢量和矩阵等3D概念以及可以对它们执行的一般操作...增强测量 在第一次实现之后,我注意测量不准确,因为您不能保证节点A和节点B在同一表面中。在那种情况下,我需要平面检测功能。...垂直平面检测不是一个特征(但是),但可以用一行代码激活水平平面检测configuration.planeDetection = .horizontal然后ARKit将自动添加,更改或删除当前会话中的平面锚点...平面检测在行动中 平面检测在行动中 所以,我FocusSquare从Apple的演示中借用了这个课程。 最后,最后一个问题:如何节点放在最近的平面上?...我已经知道如何节点放置在摄像机所在的位置,但我如何获得距离最近的平面的距离。答案是:hitTest(_:types:)。

    2.3K20

    ARKit和CoreLocation:第一部分

    定义 SCNSphere:一个球体定义一个表面,其每个点与其中心等距离,该中心位于其局部坐标空间的原点。您可以使用其 radius 属性在所有三个维度中定义球体的大小。...仿射变换是一种保留点,直线和平面的线性映射方法。 ? 资源 旋转太空船 ? image.png 让我们试试转型吧!虽然这与它们用于位置节点的方式不同,但它们足够接近,您可以开始考虑实际应用的原则。...为此,使用SceneKit创建一个新的ARKit项目。当你运行它时,屏幕前应该有一个漂浮在你面前的屏幕截图。...` 导航 现在我们已经对ARKit的基础知识进行了一些处理,让我们继续进行导航和定位服务。如果我们希望被引导目的地,我们需要导航服务的一些帮助。 MapKit带有方便的转弯指示API。...使用CoreLocation目标和MKDirectionsRequest,我们可以获得一系列导航步骤,将我们引导定位置。

    2.3K20

    聚焦位置-选择您喜欢的位置放置虚拟物体

    为此,我们需要在屏幕上选择一个点。在本节中,我们形成并个性化焦点方块。我们将使用焦点方块跟随相机,直到我们对放置感到满意为止。我们讨论世界变换和命中测试,这是ARKit的两个重要概念。...我们希望它在场景中移动,以便我们可以选择一个位置来添加模型。 屏幕中心 让我们回到ViewController.swift并为屏幕中心声明另一个变量。...屏幕中心始终存在,因此它不是可选的。 var screenCenter: CGPoint! 在viewDidLoad中,屏幕中心设置为视图的中心。...我们知道屏幕中心是2D点,我们甚至将其定义为CGPoint。然而,为了在场景上定位节点,我们需要3D坐标。那么,我们如何某些东西从2D转换为3D呢?...但是这一次,我们将使用现有平面的范围,这意味着它将取决于平面的大小。原因是我们使用焦点方块告诉我们该点是否可以用作锚点,而不仅仅是用于查看目的。

    2.4K30

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

    现在我们已经完成了正确运行ARKit项目的所有基本设置,我们希望我们的设备能够坐在水平表面上。这是飞机检测。在本节中,我们学习如何激活平面检测。我们熟悉锚点以及如何使用它们将对象放置在锚点上。...从现在开始,我们更多地投入代码中。 下载 要学习本教程,您需要Xcode 10或更高版本,以及来自Configuration for ARKit的最终Xcode项目。...您可以下载本节的最终Xcode项目,以帮助您与自己的进度进行比较。 水平平面检测 首先,我们需要打开配置的平面检测属性并将其设置为水平,以检测平面(如地板或桌子)。...ARPlaneAnchor 这意味着如果锚是平面,则将其类型转换为平面锚。 平面节点 当我们运行应用程序时,我们可以在调试区域中看到找到水平表面时。但是在屏幕上看到它不是很好吗?...飞机位置 所以,就像我们为手表所做的步骤一样,我们需要定位它。平面节点放在检测到的曲面的中心

    2.9K30

    手机秒变投篮机,还能模拟投篮真实手感,腾讯微视技术「家底」到底有多厚?

    找到一个背景平面篮筐调制最佳投篮位置,对准篮筐,向上滑动篮球,投中篮筐即可得分。该游戏对场地适应性很强,即便在暗光环境下,对单一纹理的地板也能定位。 ? ‍...本质上说就是要在三维场景中找到一个有一定特征点的依附平面(比如有花纹的地板),确定其坐标位置,然后依附平面映射到二维屏幕上,再在平面上绘制想要展示的图形或者 3D 模型。...确定依附平面方面腾讯微视采用的是「水平面 AR 算法」,通常的做法是使用 SLAM 算法一边对三维场景进行扫描建图,一边定位平面位置。 定位完成后在水平面上放上 AR 模型。...纸板人算法负责对图画进行边缘检测,提取轮廓,将其变成 3D 物体,然后分析图案提出骨骼点(手肘、膝盖等),图案的各部分绑定对应骨骼点。...用户只要用手机扫描人民币背面,纸币上的景点图案就像被激活了一样,直接呈现屏幕上,妙趣横生,给不少用户提供了新的旅行打卡思路。 ? 这背后涉及的技术就是 Marker AR 算法。

    1K10

    苹果的增强现实框架:ARKit

    与UIKit中的hitTest不同,ARKit的HitTest以设备方向配合视图坐标,建立一条世界中的射线,所有在射 线上的ARAnchor, 会以由近远的方式返回。...(我自己试了一下,切换时确实有轻微的卡顿,切换后ARSession就停止摄像头采集了,但3D渲染会继续,只是丧失了空间定位与检测识别的能力。) 5 . ARKit是否支持前置摄像头? 答:不支持。...如何连接两个不同 ARKit 世界? 答:ARKit没有计划支持这些,比较 tricky 的做法是两个手机紧挨着启动ARKit。...AR相关 渲染 AR说到底还是一种游戏技术,AR提供了定位、检测平面的功能,这些功能并没有暴露出来供我们自定义,那么只能在渲染方面做出差异。...坐标系 ARKit和OpenGL一样,使用右手坐标系 [1504061887307_6694_1504061887404.jpg] 定位 模型加载到空间中,需要6个自由度(6DOF)的信息来指定模型的表现

    3.3K00

    ARKit 简介

    增强现实(AugmentedReality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。...那么,相比之下,苹果放出的ARKit会有什么新意呢? ARKit主要有三层核心技术技术: 第一层:快速稳定的世界定位 ,包括实时运算,运动定位,无需预设(软硬件)。 ?...ARKit实战 在开发ARKit之前,需要准备相应的软硬件环境: 软件环境:macOS10.13 、 Xcode 9 ,相关软件可以开发者官网下载。...这基本上也是学习AR最难的部分,好在ARKit帮助我们大大简化了这一过程。 4.除此之外,AR还可以与虚拟物体进行一些交互。 ?...而ARKit的核心就是ARSession,下面我们一步步实现一个简单的ARKit场景。

    2.5K60

    ARKit 的配置-在您的AR项目的幕后

    在本节中,我们看看如何在后面配置提供的ARKit模板。我们发现什么是世界跟踪和AR会话。同样,我们学习如何一些调试选项应用于场景中的指导。...文件大纲 在左侧的文档大纲中,您可以看到所有对象的显示方式。您可以选择一个图标直接导航该对象。 检查器 在右侧面板中,有与场景编辑器中不同的检查器。...AR场景视图 ARKit模板已经放入对象库中可用的ARSCNView视图类中。此视图反映了相机看到的内容并将其显示在屏幕上。...但是如果你切换到我的键盘,你可以真正看到键和它上面的字符之间的区别。 因此,如果您有一个统一的白色或黑色表,您将看不到太多或任何特征点。这应该可以指示平面是否适合放置模型。...在下一个教程中,您将学习如何检测现实世界中的平面。到时候那里见! 原文: https://designcode.io/arkit-configuration

    2.5K20

    裸眼 3D 是什么效果?

    视频中,作者利用 ARkit 的 faceid 功能,定位眼睛的位置,然后裸眼 3d 的相机位置替代人眼球位置。 除去 ARkit 的功能,这个效果的核心技术在其实现的“非对称的镜头”上。...当时觉得这个看起来不难,就尝试的实现了一下,传统相机的轴锁定(lookAt)在“盒子”的正中心。 传统相机效果: 虽然也有“立体感”,但那是平常我们常见的“全景”专题的 3d。...3d 相机机制 3d 相机的算法核心是投影矩阵: 在一个视锥体内的 3d 对象,通过投影矩阵渲染平面上。...其中,相机与视锥截面中心的连线垂直于视锥截面。...也就是说,alpha 图也可以画成这样: 这几张手机转动的都是 alpha 角,而不是只有当手机绕着垂直于屏幕的 z 轴旋转才触发 alpha 角。

    1.7K20
    领券