ARSKView

A view for displaying AR experiences that augment the camera view with 2D SpriteKit content.

显示使用2D SpriteKit内容增强相机视图的AR体验的视图。


Overview

Use the ARSKView class to create augmented reality experiences that position 2D elements in 3D space within a device camera view of the real world. When you run the view's provided ARSession object:

The view automatically renders the live video feed from the device camera as the scene background.

When you implement ARSKViewDelegate methods to associate SpriteKit content with real-world positions, the view automatically scales and rotates those SpriteKit nodes so that they appear to track the real world seen by the camera.

概述

使用ARSKView类创建增强现实体验,将2D元素定位在真实世界的设备相机视图内的3D空间中。 当你运行视图提供的ARSession对象时:

1.该视图自动将设备摄像机的实时视频馈送呈现为场景背景。

当您使用ARSKViewDelegate方法将SpriteKit内容与实际位置关联时,视图会自动缩放和旋转这些SpriteKit节点,以便它们看起来跟踪摄像机看到的真实世界。


                         First Steps


Providing 2D Virtual Content with SpriteKit
Use SpriteKit to place two-dimensional images in 3D space in your AR experience.
使用SpriteKit在AR体验中将二维图像放置在3D空间中。

Overview

SpriteKit is inherently for 2D visual content, but augmented reality involves real-world 3D spaces. Use the ARSKView class to create AR experiences by providing 2D sprites (SKNodeobjects) that correspond to real-world 3D positions (ARAnchor objects). When the user moves the device, the view automatically rotates and scales the SpriteKit nodes corresponding to anchors so that they appear to track the real world seen by the camera. 

For example, you can place 2D images that appear to float in 3D space:

概述

SpriteKit固有地用于2D视觉内容,但增强现实涉及真实世界的3D空间。 使用ARSKView类通过提供对应于真实世界3D位置(ARAnchor对象)的2D精灵(SKNode对象)来创建AR体验。 当用户移动设备时,视图会自动旋转并缩放与锚点相对应的SpriteKit节点,以便它们看起来跟踪摄像机看到的真实世界。

例如,您可以放置出现在3D空间中的2D图像:


The view:nodeForAnchor: method above returns an SKLabelNode object, which displays a text label. Like most SpriteKit nodes, this class creates a 2D visual representation, so the ARSKView class presents the node in a billboard style: The sprite scales and rotates (around its z-axis) so that it appears to follow the 3D position of its anchor, but always faces toward the camera.

上面的view:nodeForAnchor:方法返回一个SKLabelNode对象,该对象显示一个文本标签。 和大多数SpriteKit节点一样,这个类创建了一个2D视觉表示,所以ARSKView类以一种广告牌风格呈现节点:sprite缩放并旋转(围绕其z轴),使其看起来跟随其锚点的3D位置, 但始终朝向相机。

session
The AR session that manages motion tracking and camera image processing for the view's contents.
ARSession管理视图内容的运动跟踪和摄像头图像处理。

Discussion

A view creates its own session object; use this property to access and configure the view's session.

讨论

视图创建自己的Session对象; 使用此属性来访问和配置视图的Session。


                            Responding to AR Updates


delegate
An object you provide to mediate synchronization of the view's AR scene information with SpriteKit content.
您提供的一个对象,用于调解视图的AR场景信息与SpriteKit内容的同步。

ARSKViewDelegate
Methods you can implement to mediate the automatic synchronization of SpriteKit content with an AR session.
您可以实现的方法来调解SpriteKit内容与ARSession的自动同步。

Overview

Implement this protocol to provide SpriteKit content corresponding to ARAnchor objects tracked by the view's AR session, or to manage the view's automatic updating of such content.

This protocol extends the ARSessionObserver protocol, so your session delegate can also implement those methods to respond to changes in session status.

概述

实现此协议以提供与由视图的ARSession跟踪的ARAnchor对象相对应的SpriteKit内容,或管理视图对此类内容的自动更新。

这个协议扩展了ARSessionObserver协议,所以你的会话委托也可以实现这些方法来响应会话状态的变化。

Handling Content Updates

view:nodeForAnchor:
Asks the delegate to provide a SpriteKit node corresponding to a newly added anchor.
要求代理提供与新添加的锚对应的SpriteKit节点。

Parameters

view
The ARSKView object rendering the scene.
渲染场景的ARSKView对象。

anchor
The anchor for which a node is requested.
请求节点的锚点。

Return Value

A new SpriteKit node, which ARKit will add to the scene and update to follow its corresponding AR anchor.

返回值

一个新的SpriteKit节点,ARKit将添加到场景并更新以跟随其相应的AR锚点。

Discussion

Depending on the session configuration, ARKit may automatically add anchors to a session, such as the origin of the world coordinate system and detected planes. ARKit also calls this method to provide visual content for any ARAnchor objects you manually add using the session's addAnchor: method.

You can implement this method to provide a new SKNode object (or instance of any system or custom SKNode subclass) you plan to use as a visual representation of the anchor. 

Note that ARKit controls the node's position, rotation, and scale to simulate a billboarded 3D effect even for 2D sprites. If you provide a SKTransformLayer node, ARKit applies a 3D transformation.

Alternatively, if you do not implement this method, ARKit creates an empty node, and you can implement the view:didAddNode:forAnchor: method instead to provide visual content by adding children to that node.

讨论

根据Session配置的不同,ARKit可能会自动将锚点添加到Session中,例如世界坐标系的原点和检测到的平面。 ARKit还调用此方法为使用会话的addAnchor:方法手动添加的任何ARAnchor对象提供可视内容。

您可以实现此方法以提供计划用作锚的可视表示的新SKNode对象(或任何系统或自定义SKNode子类的实例)。

请注意,ARKit控制节点的位置,旋转和缩放比例,以模拟即使是2D Sprite也使用billboarded 3D效果。 如果您提供SKTransformLayer节点,ARKit将应用3D转换。

或者,如果您未实现此方法,则ARKit将创建一个空节点,并且您可以实现视图:didAddNode:forAnchor:方法,以通过将子节点添加到该节点来提供可视内容。

view:didAddNode:forAnchor:
Tells the delegate that a SpriteKit node corresponding to a new AR anchor has been added to the scene.
告诉委托人已将与新的AR锚点对应的SpriteKit节点添加到场景中。

Parameters

view
The ARSKView object rendering the scene.
渲染场景的ARSKView对象。

node
The newly added SpriteKit node.
新添加的SpriteKit节点。

anchor
The AR anchor corresponding to the node.
AR节点对应的AR节点。

Discussion

Depending on the session configuration, ARKit may automatically add anchors to a session. The view calls this method once for each new anchor. ARKit also calls this method to provide visual content for any ARAnchor objects you manually add using the session's addAnchor: method.

You can provide visual content for the anchor by adding child nodes.

Alternatively, you can implement the view:nodeForAnchor: method to create your own node (or instance of an SKNode subclass) for an anchor.

讨论

根据Session配置的不同,ARKit可能会自动将锚点添加到Session中。 该视图为每个新的锚点调用一次该方法。 ARKit还调用此方法为使用会话的addAnchor:方法手动添加的任何ARAnchor对象提供可视内容。

您可以通过添加子节点来为定位点提供可视内容。

或者,您可以实现view:nodeForAnchor:方法为锚点创建自己的节点(或SKNode子类的实例)。

view:willUpdateNode:forAnchor:
Tells the delegate that a SpriteKit node's properties will be updated to match the current state of its corresponding anchor.
告诉委托人SpriteKit节点的属性将被更新以匹配其相应锚的当前状态。

Parameters

view
The ARSKView object rendering the scene.
渲染场景的ARSKView对象。

node
The updated SpriteKit node.
更新的SpriteKit节点

anchor
The AR anchor corresponding to the node.
AR节点对应的AR节点。

Discussion

Depending on the session configuration, ARKit may automatically update anchors in a session. The view calls this method once for each updated anchor.

讨论

根据Session配置的不同,ARKit可能会自动更新Session中的锚点。 该视图为每个更新的锚点调用一次该方法。

view:didUpdateNode:forAnchor:
Tells the delegate that a SpriteKit node's properties have been updated to match the current state of its corresponding anchor.
告诉委托人,SpriteKit节点的属性已经更新以匹配其相应锚的当前状态。

Parameters

view
The ARSKView object rendering the scene.
渲染场景的ARSKView对象。

node
The updated SpriteKit node.
更新的SpriteKit节点

anchor
The AR anchor corresponding to the node.
AR节点对应的AR节点。

Discussion

Depending on the session configuration, ARKit may automatically update anchors in a session. The view calls this method once for each updated anchor.

讨论

根据Session配置的不同,ARKit可能会自动更新Session中的锚点。 该视图为每个更新的锚点调用一次该方法。

view:didRemoveNode:forAnchor:
Tells the delegate that the SpriteKit node corresponding to an AR anchor has been removed from the scene.
告诉委托人,与AR锚对应的SpriteKit节点已从场景中移除。

Parameters

view
The ARSKView object rendering the scene.
渲染场景的ARSKView对象。

node
The updated SpriteKit node.
更新的SpriteKit节点

anchor
The AR anchor corresponding to the node.
AR节点对应的AR节点。

Discussion

Depending on the session configuration, ARKit may automatically remove anchors from a session. The view calls this method once for each removed anchor.

讨论

根据Session配置的不同,ARKit可能会自动从Session中删除锚点。 该视图为每个已移除的锚点调用一次该方法。

Inherits From ARSessionObserverSKViewDelegate

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容