我正在参加「启航计划」
前言
跟着 Apple Vision Pro 的发布,势必掀起新一波的Ar潮,简略了解一下来个小Demo
开始
要在iOS中创立一个的AR物体,你能够运用 ARKit 和 SceneKit 来实现
首先,保证你的项目已经导入了 ARKit 和 SceneKit 结构。你能够在 Xcode 中的项目设置中增加 ARKit.framework 和 SceneKit.framework 到 “Frameworks, Libraries, and Embedded Content” 部分
然后,在你的程序文件中,导入 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() // 创立球体节点
}
}