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

如何使用Scenekit(ARKit) iOS 11以编程方式在相机上创建给定宽度和高度的正方形或矩形覆盖(平面)?

Scenekit是苹果公司提供的一个用于构建3D场景的框架,而ARKit是苹果公司提供的用于增强现实应用开发的框架。在iOS 11及以上版本中,可以使用Scenekit和ARKit来编程方式在相机上创建给定宽度和高度的正方形或矩形覆盖(平面)。

下面是一个使用Scenekit和ARKit在相机上创建正方形或矩形覆盖的示例代码:

  1. 导入Scenekit和ARKit框架:
代码语言:txt
复制
import SceneKit
import ARKit
  1. 创建一个ARSCNView实例,并设置其代理:
代码语言:txt
复制
let sceneView = ARSCNView()
sceneView.delegate = self
  1. 实现ARSCNViewDelegate协议中的renderer(_:didAdd:for:)方法,该方法在相机捕捉到新的平面时被调用:
代码语言:txt
复制
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
    // 判断anchor是否为ARPlaneAnchor
    guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
    
    // 创建一个SCNPlane对象,设置其宽度和高度
    let width = CGFloat(planeAnchor.extent.x)
    let height = CGFloat(planeAnchor.extent.z)
    let plane = SCNPlane(width: width, height: height)
    
    // 创建一个SCNNode对象,并将plane设置为其几何体
    let planeNode = SCNNode(geometry: plane)
    
    // 设置planeNode的位置为平面的位置
    planeNode.position = SCNVector3(planeAnchor.center.x, 0, planeAnchor.center.z)
    
    // 将planeNode添加到场景中
    node.addChildNode(planeNode)
}
  1. 在ViewController中,将sceneView添加到视图中,并启动AR会话:
代码语言:txt
复制
override func viewDidLoad() {
    super.viewDidLoad()
    
    // 设置sceneView的frame,并将其添加到视图中
    sceneView.frame = view.bounds
    view.addSubview(sceneView)
    
    // 创建一个ARWorldTrackingConfiguration对象,并将其设置为sceneView的session的configuration
    let configuration = ARWorldTrackingConfiguration()
    sceneView.session.run(configuration)
}

通过以上代码,当相机捕捉到新的平面时,会在相机上创建一个给定宽度和高度的正方形或矩形覆盖(平面)。

这是一个简单的示例,你可以根据自己的需求进行进一步的定制和优化。如果想要了解更多关于Scenekit和ARKit的信息,可以参考腾讯云的AR/VR产品ARKit介绍页面:ARKit介绍

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

相关·内容

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

ARKit教程插图:在iOS ARKit应用程序中与虚拟对象交互 在这篇文章中,我们将使用iOS ARKit创建一个有趣的ARKit示例项目。用户将手指放在桌子上,好像他们握笔,点击缩略图并开始绘图。...因此,要开始使用,您需要在iPhone 6s或更高版本以及新的Xcode Beta上下载iOS 11 Beta。...首先,我们应该确定我们将使用哪种引擎。ARKit可以与Sprite SceneKit或Metal一起使用。...在下一节中,我们将解释如何检测平面,以及如何相应地定位焦点平方。 在ARKit中检测平面 ARKit可以检测新平面,更新现有平面或删除它们。...为了以方便的方式处理平面,我们将创建一个虚拟的SceneKit节点,该节点保存平面位置信息和对焦点方块的引用。

2.2K30

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

iOS中的ARKit入门 在撰写本文的时候,ARKit是iOS 11的一部分,目前仍处于测试阶段。因此,要想开始,你需要在iPhone 6s及以上版本下载iOS 11测试版,以及新的Xcode测试版。...首先,我们应该确定使用哪种引擎。ARKit可以与Sprite SceneKit或Metal配合使用。在Apple ARKit的例子中,我们使用的是iOS SceneKit,由Apple提供的3D引擎。...为了方便地处理平面,我们将创建一个虚拟场景节点,该节点包含平面位置信息和对焦点正方形的引用。平面是在X和Z方向上定义的,Y是表面的法线。...检测用户的指尖 苹果在iOS 11中引入的一个很酷的库是Vision Framework。它以相当方便和有效的方式提供了一些计算机视觉技术。特别是,我们将使用对象跟踪技术。...要开始使用Apple ARKit,请在iPhone 6或更高版本上下载iOS 11,并从New> Project> Augmented Reality App创建一个新的ARKit项目。

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

    增强现实的目的是能够在特定点将虚拟内容插入到现实世界中,并在您在现实世界中移动时拥有虚拟内容轨道。使用ARKit,其基本过程包括从iOS设备相机读取视频帧,为每个帧处理图像并提取特征点。...SCNNode实例是ARKit创建的SceneKit节点,它有一些属性设置,如方向和位置,然后我们得到一个锚实例,这告诉我们使用有关已找到的特定锚的更多信息,例如大小和中心飞机 锚实例实际上是一个ARPlaneAnchor...渲染飞机 通过上述信息,我们现在可以在虚拟世界中绘制SceneKit 3D平面。为此,我们创建一个继承自SCNNode 的Plane类。...Plane类的更新方法中,我们然后更新平面的宽度和高度: - (void)update:(ARPlaneAnchor *)anchor { self.planeGeometry.width = anchor.extent.x...image.png 这是一架在楼梯旁边的小墙顶上提取的飞机。注意平面如何延伸超过实际曲面的边缘。

    2.9K20

    建立您的第一个AR体验

    创建运行AR会话的应用程序,并使用平面检测使用SceneKit放置3D内容。...下载 软件开发工具包 iOS 11.3+ Xcode 10.0+ Beta 概观 此示例应用程序运行ARKit世界跟踪会话,其内容显示在SceneKit视图中。...如果AR是您应用的辅助功能,请使用该属性确定是否提供isSupported基于AR的功能。 为检测到的平面放置3D内容 设置AR会话后,可以使用SceneKit在视图中放置虚拟内容。...启用平面检测后,ARKit会为每个检测到的平面添加和更新锚点。默认情况下,ARSCNView类为每个锚点添加一个SCNNode对象到SceneKit场景。...ARKit还在平面锚点中提供了更简单的extent和center估计,并且它们一起描述了矩形边界(使用SCNPlane易于可视化)。

    1.1K20

    ARKit介绍

    Apple在WWDC17上宣布了一个名为ARKit的新iOS框架。它是一个“允许您轻松为iPhone和iPad创建无与伦比的增强现实体验”的框架。...该框架随iOS 11一起发布(目前处于测试阶段),并且仅由Apple的A9或A10芯片驱动的iOS设备支持。这意味着它不适用于iPhone 5S或iPad Mini等旧设备。...此外,您无法在模拟器中使用它,因此您必须使用最新的测试版更新您的iPhone / iPad(iOS 11 SDK仅适用于Xcode 9)。...您甚至可以使用Metal,SceneKit和Unity和虚幻引擎等第三方工具渲染3D对象。ARKit以卓越的性能完成所有这一切,并且有很好的文档记录。 需要一些想法才能使用ARKit?...,所以我决定使用ARKit创建自己的测量应用程序。 我开始观看介绍ARKit:来自WWDC17的iOS增强现实视频。然后我阅读文档并使用演示应用程序(在增强现实中放置对象)。

    2.3K20

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

    在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。 这就是我们要做的: ?...接下来,需要Xcode 9(或更高版本)和运行iOS 11(或更高版本)的ARKit支持的设备。 现在让我们开始吧! 设置初始ARKit场景 打开Xcode并选择File> New Project。...ARPlaneAnchor为我们提供了检测到的曲面的中心和范围(宽度和高度)值。我们使用范围值来创建平面几何体并使用中心值来定位节点。 我们将平面不透明度设置为30%,因此它不会完全遮挡地板。...由于我们之前已将检测到的平面保存在字典中,因此我们可以使用锚点的唯一标识符并检索我们的平面并更新其值。 运行应用程序: ? image 了解ARKit如何不断更新飞机? 我们不再需要看地面了。...运动学:一种物理体,不受力或碰撞的影响,但在移动时会导致碰撞影响其他物体。 在我们的例子中,我们需要为地板使用静态主体,为多米诺骨牌使用动态主体。 物理形状决定了SceneKit如何处理碰撞。

    2.3K30

    ARKit by Example - 第1部分:AR立方体

    这篇第一篇文章将使用ARKit创建一个非常简单的hello world AR应用程序。最后,我们将能够在增强的世界中定位3D立方体,并使用我们的iOS设备移动它。...要在ARKit中呈现3D内容,我们将使用SceneKit:https://developer.apple.com/scenekit/这是一个在iOS设备上渲染3D图形的框架。...Youtube 要求 截至撰写本文时,您需要一台带有A9 / A10处理器的iOS设备来支持ARKit。这意味着iPhone 6S或更好,或iPad 2017或更好。...SceneKit 3D相机以匹配ARKit跟踪的3D位置,因此不需要额外的代码来连接ARKit移动事件以映射到SceneKit 3D渲染。...要向场景添加内容,首先要创建一些几何体,几何体可以是复杂的形状,或简单的形状,如球体,立方体,平面等。然后将几何体包裹在场景节点中并将其添加到场景中。然后SceneKit将遍历场景图并渲染内容。

    1.2K30

    ARKit浅析V1.0

    一、ARKit介绍 苹果公司在WWDC2017 上发布了ARKit,开发者可以使用这套框架在iPhone和iPad上创建属于自己的AR体验。...需要注意的是,ARKit虽说是iOS11提供的框架,但是并非升级到iOS11都能使用。必须要A9以及以上的处理器才能使用。...以下是ARKit 开发环境: 1.Xcode版本:Xcode9及以上 2.iOS系统:iOS11及以上 3.iOS设备:处理器A9及以上(6S机型及以上) 4.MacOS系统:10.12.4及以上(安装...从上图可以简单的看出ARKit的工作原理,ARKit框架提供相机能力,在手机上捕捉并构建现实世界。SceneKit提供模型能力,在手机的“现实世界”中添加虚拟物体。...3)上面使用的是简答的设置主场景的方式,还可以通过addChildNode的方式加载 ? 从上述代码中可以看到,使用ARKit显示一个3D的虚拟物体 其实很简单。

    1.8K50

    苹果的增强现实框架:ARKit

    同时ARKit也支持自定义用OpenGL或Metal实现渲染类,但要自己管理与ARSession之间的通信,同时要遵循iOS GPU命令不能在后台调用的规则。...与UIKit中的hitTest不同,ARKit的HitTest以设备方向配合视图坐标,建立一条世界中的射线,所有在射 线上的ARAnchor, 会以由近到远的方式返回。...理论上 ARKit 在双目摄像头上的表现应该优于单目,这里需要具体测试,如何来平衡用户体验。 .scn文件还是知识一个简单的3维模型编辑器,支持的文件格式少,对模型、光照的编辑方式不太友好。...后两者都是成熟的游戏引擎,能够提供完整的游戏功能,但没有我们没有使用,主要因为: 上手较慢,iOS11 9月中旬就要发布了,时间紧促。 接入Unity3D会给安装包造成很大压力,成本大约10M。...欧拉角 把空间旋转分解成绕三个局部坐标轴的平面旋转,分别是pitch(俯仰角,绕x轴),yaw(偏航角,绕y轴),roll(翻滚角,绕z轴),然后以一定顺序做旋转(sceneKit中是 roll ->

    3.4K00

    ARKit和CoreLocation:第一部分

    ARKit结合了设备运动跟踪,摄像机场景捕捉,高级场景处理和显示便利性,简化了构建AR体验的任务。 在iOS 11中,Apple已经将ARKit的强大功能释放到了iOS开发社区。...ARSession:在ARKit中,ARSession协调创建增强现实体验所需的逻辑和数据。这包括摄像机和运动数据以及在周围移动时跟踪世界所需的计算。...ARKit将图像数据与运动跟踪数据结合起来,以计算iPhone的位置。 [ARAncho - R ****:一种ARAnchor是在保持了不管相机(理论上)的运动或位置的真实世界的位置。...运行会话配置时,ARKit会根据设备的位置和方向创建场景坐标系; ARAnchor您创建的任何对象或AR会话检测到的对象都是相对于该坐标系定位的。 ?...虽然这与它们用于位置节点的方式不同,但它们足够接近,您可以开始考虑实际应用的原则。为此,使用SceneKit创建一个新的ARKit项目。当你运行它时,屏幕前应该有一个漂浮在你面前的屏幕截图。

    2.3K20

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

    Apple终于在iOS11将增强现实带进来,也因为iOS11,未来将会有数不清的iPhones和iPads就会搭载AR功能,这将会让ARKit成为世界最大的平台,是的,如果你对建置增强现实的Apps有兴趣...本篇教学的想法主要是学习AR与利用API来建置一个APP,藉由教学的步骤,你将会一步步了解ARKit在实体装置上是如何与神奇的3D物件来互动的。 在开始前,请了解本篇教学仅是以基础功能应用为主。...允许相机使用权限 在我们要执行我们的App之前,我们需要告知我们使用者,我们得使用相机来进行增强现实的应用,这是一个从iOS10就开始的必要询问告知动作,也因此,请打开info.plist 。...接着,我们要来建立一个场景,这是一个应用SceneKit的场景功能来显示在视图上,过来加入我们的boxNode做为场景的初始根点位,然而初始根点位在一个场景中,是SceneKit用来定义与真实世界的坐标系统的方式...根据Apple官方说明,对特征点的定义: 此点由ARKit自动从一个连续的表面中自动辨识,但不会有另一相对的依靠点。

    1.8K20

    ARKit

    集成iOS设备相机和动作功能,在您的应用或游戏中产生增强现实体验。...SDK iOS 11.0+ 概观 一个增强现实(AR)描述了用户体验,从设备的摄像头的方式,使这些元素似乎居住在现实世界中添加2D或3D元素到实时取景。...ARKit结合了设备运动跟踪,摄像机场景捕捉,高级场景处理和显示便利性,简化了构建AR体验的任务。您可以使用这些技术使用iOS设备的后置摄像头或前置摄像头创建多种AR体验。...建立您的第一个AR体验 创建运行AR会话的应用程序,并使用平面检测使用SceneKit放置3D内容。 了解ARKit中的世界跟踪 发现支持概念,功能和最佳实践,以构建出色的AR体验。...快速拍摄:为增强现实创造游戏 了解Apple如何为WWDC18构建精选演示,并获得使用ARKit,SceneKit和Swift制作自己的多人游戏的技巧。

    2.2K20

    ARKit:增强现实技术在美团到餐业务的实践

    Apple 公司在 2017 年 6 月正式推出了 ARKit,iOS 开发者可以在这个平台上使用简单便捷的 API 来开发 AR 应用程序。...图1 实现效果图 项目实现 iOS 平台的 AR 应用通常由 ARKit 和渲染引擎两部分构成: ?...商家坐标 商家坐标的确定,包含水平坐标和垂直坐标两部分: 水平坐标 商家的水平位置只是一组经纬度值,那么如何将它对应到 ARKit 当中呢?我们通过下图来说明: ?...我们可以直接通过创建 ARSCNView 来使用 SceneKit。...本文介绍了 ARKit 的一些使用细节,总结了在开发过程中遇到的问题以及解决方案,希望可以给其他开发者带来一点参考价值。 作者简介 曹宇,美团 iOS 开发工程师。

    2.1K20

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

    聚光灯  - 聚光灯就像全方位一样,但是除了方向和位置之外,聚光灯的强度会以锥形形状下降,就像桌面上的聚光灯一样。...文章,请查看这篇文章: 惊人的基于物理渲染使用新的IOS 10 SceneKit 如何简单地使用新推出的iOS版10基于物理的渲染器,并没有得到很大的期待结果...medium.com 我不会在本文中尝试解释此过程的所有细节...它映射到材质的漫反射组件,它是材质纹理,在光照或阴影信息中没有任何烘焙。 粗糙度  - 描述材料的粗糙程度,较粗糙的表面显示较暗的反射,更光滑的材料显示更明亮的镜面反射。...,考虑将几何体周围的图像作为背景投影,然后SceneKit使用此背景来确定几何体是如何被照亮的。...最后一部分是从ARKit获取光估计值并将其应用于此环境图像的强度。ARKit返回值1000以表示中性光照,因此更小,更暗,更亮。

    1.2K30

    ARKit 初探

    今年7月Apple推出了AR工具ARKit,着实闪着了大家的眼睛。从目前的评测可以知道 ARKit已经非常成熟,完全可以进行商用了。 在iOS中,增强现实由ARKit和渲染两部分组成。...ARKit主要负责AR计算,它将ARCamera捕获的视频帧当作背景,使用视觉惯性测距(VIO)来精确跟踪周围的世界,进行坐标转换,场景搭建及平面的捕获;然后,通过 SceneKit(3D)/SpritKit...因此 ARKit 在追踪方面非常强大。 什么是平面检测 ARKit 的平面检测用于检测出现实世界的水平面,也就是在 3D 空间中,Y值为0的一个区域。...ARKit 会追踪以下几个信息: 追踪设备的位置以及旋转,这两个信息均是相对于设备起始时的信息。 追踪物理距离(以“米”为单位),例如 ARKit 检测到一个平面,我们希望知道这个平面有多大。...一般我们无需去创建一个ARCamera,因为在初始化 AR 时,它就帮我们将ARCamera创建好了。另外,我们一般也不直接使用 ARCamera 的 API,默认都是设置好的。

    2.4K20

    SwiftShot:为增强现实创建游戏

    SwiftShot:为增强现实创建游戏 了解Apple如何为WWDC18构建精选演示,并获得使用ARKit,SceneKit和Swift制作自己的多人游戏的技巧。...概观 SwiftShot是一款针对2到6名玩家的AR游戏,在WWDC18主题演讲中有所体现。使用此示例代码项目在您自己的设备上体验它,查看它是如何工作的,并构建您自己的自定义版本的游戏。 ?...如果您正在托管,该应用程序会要求您找到一个平面(如桌子)来放置游戏板:拖动,旋转和捏合以定位和调整板的大小,然后在准备好玩时点击,并出现游戏板。...入门 需要Xcode 10.0,iOS 12.0和带有A9或更高版本处理器的iOS设备。iOS模拟器不支持ARKit。 为AR设计游戏玩法 SwiftShot将增强现实作为吸引游戏玩法的媒介。...多人游戏AR游戏将玩家聚集在同一个空间,为他们提供令人兴奋的新方式,让他们一起玩乐。使用AR观看作为旁观者的游戏提供了不同的视角和新的体验。 保持游戏简短,但通过变化增加乐趣。

    1.7K30

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

    尽管ARKit仅在2017年于2017年发布,但它很快受到欢迎,其可能性无穷无尽。一些人声称这是“下一次大转变”或“改变游戏规则”。 在本课程中,您将了解到ARKit,您将学习如何制作自己的游乐场。...增强现实 增强现实定义了通过设备的摄像头将虚拟元素(无论是2D还是3D)集成到现实世界环境中的用户体验。它允许用户与自己的周围环境交互数字对象或角色,以创建独特的体验。 什么是ARKit?...在购买之前,先亲自预览它如何适合您的房间,这是我必须说的优势。它可以节省一次时间和麻烦。 因此,在新装修的地下室,它看起来很空。这个空间需要沙发!所以让我们来搜索一个。...渲染 ARKit使用技术处理3D模型并在场景中呈现它们,例如: 金属 SceneKit 第三方工具,如Unity或虚幻引擎 先决条件 为了体验增强现实,ARKit需要最低限度的A-9处理器硬件和iOS...使用Swift作为Language和SceneKit作为内容技术。最后点击下一步。然后,选择要保存项目的文件夹。至于我,它在我的桌面上。单击“ 创建”。恭喜!你创建了第一个AR应用!

    3.7K30

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

    现在我们已经完成了正确运行ARKit项目的所有基本设置,我们希望我们的设备能够坐在水平表面上。这是飞机检测。在本节中,我们将学习如何激活平面检测。我们将熟悉锚点以及如何使用它们将对象放置在锚点上。...下载 要学习本教程,您需要Xcode 10或更高版本,以及来自Configuration for ARKit的最终Xcode项目。您可以下载本节的最终Xcode项目,以帮助您与自己的进度进行比较。...水平平面检测 首先,我们需要打开配置的平面检测属性并将其设置为水平,以检测平面(如地板或桌子)。...请改为使用以下框架替换它。 import SceneKit import ARKit 延期 这个文件将作为ViewController类的扩展,这里的代码将成为该类的一部分。...公式和图表 重构控制流程 在我们继续之前,我想重构if else语句。有一种更好的方式来编写它。我想从这种方式开始,使其更容易理解。另一种选择是使用guard语句。

    2.9K30

    SceneKit 场景编辑器-为您的AR体验构建3D舞台

    下载 要学习本教程,您需要Xcode 10或更高版本,以及从简介到ARKit的最终Xcode项目。您可以下载本节的最终Xcode项目,以帮助您与自己的进度进行比较。...您可以在Apple网站上找到它们。它们以毫米为单位。首先使用仪表更容易,然后将其缩小。所以,我将它们转换为米。我们将宽度设置为3.33,高度设置为3.86,长度设置为1.14。...平面几何 转到对象库,选择一个平面并将其放在场景中。 平面尺寸 在属性检查器,分配一个宽度为3和高度为3.5。该圆角半径为0.4。 相对位置 现在,我们希望将屏幕放在表壳的正中间。...如果你旋转我们到目前为止的模型,盒子和飞机之间有一个小空间,那很好。我们不是试图在这里复制完美的手表,而只是学习如何使用基本形状组装物体。 平面颜色 让屏幕变黑,就像手表处于非活动状态一样。...结论 现在,我们只使用基本几何图形制作了一个简单的3D对象,并应用材质使其看起来更真实。我们学会了如何定位,旋转和缩放它。使用SceneKit场景编辑器可以避免很多代码,就像故事板一样。

    5.6K20
    领券