线上地址
https://itunes.apple.com/cn/app/weare/id1304227680?mt=8
开源地址
https://github.com/SherlockQi/HeavenMemoirs
技术点
AR初始化
在新建项目时可以直接创建 AR 项目, xcode 会创造一个 AR 项目的模板.
也可以创建普通的项目,在需要实现 AR 功能的控制器中实现如下代码进行初始化.
import ARKit
let sceneView = ARSCNView()
override func viewDidLoad() {
super.viewDidLoad()
sceneView.frame = view.bounds
view.addSubview(sceneView)
sceneView.delegate = self
sceneView.showsStatistics = true
// 创建一个场景,系统默认是没有的
let scene = SCNScene()
sceneView.scene = scene
//不允许用户操作摄像机
sceneView.allowsCameraControl = false
//抗锯齿
sceneView.antialiasingMode = .multisampling4X
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let configuration = ARWorldTrackingConfiguration()
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
sceneView.session.pause()
}
添加节点
//我使用的是 SCNPlane 来充当相框,也可以使用"厚度"很小的 SCNBox
let photo = SCNPlane(width: 1, height: 1)
//photo.cornerRadius = 0.01
let image = UIImage(named: "0")
//纹路可以使图片,也可以是颜色
photo.firstMaterial?.diffuse.contents = image
//photo.firstMaterial?.diffuse.contents = UIColor.red
let photoNode = SCNNode(geometry: photo)
//节点的位置
let vector3 = SCNVector3Make(-1, -1, -1)
photoNode.position = vector3
sceneView.scene.rootNode.addChildNode(photoNode)
let text = SCNText(string: "文字", extrusionDepth: 0.1)
text.fo