我正在嘗試ARKit,並使用this tutorial設置了ARSCNView
。用ARKit顯示dae文件並跟蹤場景中的錨點
然後設置跟蹤水平3D平面與this tutorial.
第二部分我創建單個視圖應用程序然後所約束的ARSCNView
沖洗到根視圖具有出口到我ViewController
。
這裏是在ViewController
代碼:
import UIKit
import ARKit
class ViewController: UIViewController {
//MARK: Properties
@IBOutlet weak var arScene: ARSCNView!
//MARK: ARKit variables
var realityConfiguration: ARWorldTrackingSessionConfiguration?
//MARK: Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.prepare()
}
//MARK: Actions
//MARK: Overrides
}
extension ViewController {
func prepare() {
//Check to see if active reality is supported
guard ARSessionConfiguration.isSupported else {
//Custom alert function that just quickly displays a UIAlertController
AppDelegate.alert(title: "Not Supported", message: "Active Reality is not supported on this device")
return
}
//Set up the ARSessionConfiguration
self.realityConfiguration = ARWorldTrackingSessionConfiguration()
//Set up the ARSCNView
guard let config = self.realityConfiguration else {
return
}
//Run the ARSCNView and set its delegate
self.arScene.session.run(config)
self.arScene.delegate = self
}
}
extension ViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
return nil
}
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let planAnchor = anchor as? ARPlaneAnchor else {
return
}
let plane = SCNPlane(width: CGFloat(planAnchor.extent.x), height: CGFloat(planAnchor.extent.z))
let planeNode = SCNNode(geometry: plane)
planeNode.position = SCNVector3Make(planAnchor.center.x, 0, planAnchor.center.z)
planeNode.transform = SCNMatrix4MakeRotation(-Float.pi/2, 1, 0, 0)
node.addChildNode(planeNode)
}
func renderer(_ renderer: SCNSceneRenderer, willUpdate node: SCNNode, for anchor: ARAnchor) {
print("Will updated Node on Anchor: \(anchor.identifier)")
}
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
print("Did updated Node on Anchor: \(anchor.identifier)")
}
func renderer(_ renderer: SCNSceneRenderer, didRemove node: SCNNode, for anchor: ARAnchor) {
print("Removed Node on Anchor: \(anchor.identifier)")
}
}
我下載的Xcode 9測試版,隨後蘋果教程,實現了我的手機(iPhone 6)沒有爲ARWorldTrackingSessionConfiguration
對象所需的A9芯片。
大約在我鏈接的第一篇教程中,Apple說你仍然可以在沒有A9芯片的情況下創建AR體驗。但是,他們沒有進一步詳細說明。有沒有其他人發現了一個出發點,並願意提供使用.dae文件和
- 選擇一個錨點,以顯示它
- 跟蹤錨點上
- 實際顯示的代碼示例。 dae文件
您可以使用增強現實模板創建新的iOS應用程序,並從內容技術彈出式菜單中選擇SceneKit或SpriteKit。 –