iOS - 上手AR

我正在参加「启航计划」

前言

跟着 Apple Vision Pro 的发布,势必掀起新一波的Ar潮,简略了解一下来个小Demo

开始

要在iOS中创立一个的AR物体,你能够运用 ARKitSceneKit 来实现

首先,保证你的项目已经导入了 ARKit 和 SceneKit 结构。你能够在 Xcode 中的项目设置中增加 ARKit.framework 和 SceneKit.framework 到 “Frameworks, Libraries, and Embedded Content” 部分

iOS - 上手AR

然后,在你的程序文件中,导入 ARKit 和 SceneKit

import UIKit
import ARKit

接下来,创立一个 ARSCNView,并将其增加到你的视图层次结构中:

// 创立 ARSCNView 实例
sceneView = ARSCNView(frame: view.bounds)
view.addSubview(sceneView)
sceneView.delegate = self
// 创立 SCNScene 实例,并设置为 sceneView 的场景
let scene = SCNScene()
sceneView.scene = scene

然后,在视图控制器的生命周期办法中,装备 ARSession 并启动 AR 会话:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // 装备 AR 会话并启动
    let configuration = ARWorldTrackingConfiguration()
    sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    // 暂停 AR 会话
    sceneView.session.pause()
}

现在,已经设置好 ARKit 和 AR 会话已经开始运行。接下来,咱们将创立3D 模型:

func createBallNode() {
    // 创立球体几何体
    let ballGeometry = SCNSphere(radius: 0.1)
    let ballMaterial = SCNMaterial()
    ballMaterial.diffuse.contents = UIImage(named: "cxkj.webp") // 运用纹理图片
    ballGeometry.materials = [ballMaterial]
    // 在屏幕范围内生成随机方位坐标
    let randomX = Float.random(in: -1.0...1.0) // 在屏幕宽度范围内生成随机 X 坐标
    let randomY = Float.random(in: -1.0...1.0) // 在屏幕高度范围内生成随机 Y 坐标
    let randomZ = Float.random(in: -3.0...0.0) // 在屏幕深度范围内生成随机 Z 坐标
    ballNode = SCNNode(geometry: ballGeometry)
    ballNode.position = SCNVector3(randomX, randomY, randomZ)
    // 将球体节点增加到场景的根节点上
    sceneView.scene.rootNode.addChildNode(ballNode)
}

最终咱们通过点击事情将3D模型增加到场中

@objc func handleTap(_ gesture: UITapGestureRecognizer) {
    if gesture.state == .ended {
        createBallNode() // 创立球体节点
    }
}

作用