首页
学习
活动
专区
工具
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 SceneKitMetal一起使用。...在下一节中,我们将解释如何检测平面,以及如何相应地定位焦点平方。 ARKit中检测平面 ARKit可以检测新平面,更新现有平面删除它们。...为了以方便方式处理平面,我们将创建一个虚拟SceneKit节点,该节点保存平面位置信息对焦点方块引用。

2.2K30

iOS ARKit教程:赤手空中绘画

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

1.8K10

建立您第一个AR体验

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

1K20

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

ARKit介绍

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

2.3K20

iOS使用ARKitSwift创建交互式Domino游戏

在下面的教程中,我将向您展示如何使用SwiftARKit制作有趣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,开发者可以使用这套框架在iPhoneiPad上创建属于自己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.7K50

苹果增强现实框架:ARKit

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

3.2K00

ARKitCoreLocation:第一部分

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

2.2K20

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

Apple终于iOS11将增强现实带进来,也因为iOS11,未来将会有数不清iPhonesiPads就会搭载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)描述了用户体验,从设备摄像头方式,使这些元素似乎居住在现实世界中添加2D3D元素到实时取景。...ARKit结合了设备运动跟踪,摄像机场景捕捉,高级场景处理显示便利性,简化了构建AR体验任务。您可以使用这些技术使用iOS设备后置摄像头前置摄像头创建多种AR体验。...建立您第一个AR体验 创建运行AR会话应用程序,并使用平面检测使用SceneKit放置3D内容。 了解ARKit世界跟踪 发现支持概念,功能最佳实践,构建出色AR体验。...快速拍摄:为增强现实创造游戏 了解Apple如何为WWDC18构建精选演示,并获得使用ARKitSceneKitSwift制作自己多人游戏技巧。

2.2K20

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

Apple 公司 2017 年 6 月正式推出了 ARKitiOS 开发者可以在这个平台上使用简单便捷 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.3K20

SwiftShot:为增强现实创建游戏

SwiftShot:为增强现实创建游戏 了解Apple如何为WWDC18构建精选演示,并获得使用ARKitSceneKitSwift制作自己多人游戏技巧。...概观 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作为LanguageSceneKit作为内容技术。最后点击下一步。然后,选择要保存项目的文件夹。至于我,它在我桌面上。单击“ 创建”。恭喜!你创建了第一个AR应用!

3.6K30

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

现在我们已经完成了正确运行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.5K20
领券