使用SpriteKit将二维图像放置在3D空间中。
概述
要将SpriteKit内容放在AR场景中,您首先需要运行AR会话(请参阅Building a Basic AR Experience)。
SpriteKit本身是用于创建2D视觉内容,但AR涉及到现实世界的3D空间。可以使用ARSKView类通过提供2D精灵(Sprites、SKNode对象)来创建良好的AR体验,并对应到真实世界的3D位置(ARAnchor对象)。当用户移动设备时,视图会自动旋转并缩放与锚点相对应的SpriteKit节点,使其看起来像是跟踪摄像机所看到的真实世界。
例如,你可以将2D图像放置并显示的像浮动在3D空间中:
// 在相机前创建一个离相机0.2米的变换式。
var translation = matrix_identity_float4x4 translation.columns.3.z = -0.2let transform = simd_mul(view.session.currentFrame.camera.transform, translation)
// 在会话中添加一个新的锚点。
let anchor = ARAnchor(transform: transform)
view.session.add(anchor: anchor)
// 提供一个标签节点来表示锚点。
func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? { return SKLabelNode(text: "👾")}
上述的[view(_:nodeFor:)]方法返回一个SKLabelNode对象,来显示文本标签。像大多数SpriteKit节点一样,这个类创建一个2D视觉效果,所以ARSKView 类以广告牌风格呈现节点:精灵围绕其z轴缩放并旋转,使其看起来遵循其锚点的3D位置,但始终面向相机。
apple文档地址:
Providing 2D Virtual Content with SpriteKit