@IBOutlet var sceneView: ARSCNView!
@IBOutlet var sceneView2: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
// Show statistics such as fps and timing information
sceneView.showsStatistics = false
// Create a new scene
let scene = SCNScene(named: "art.scnassets/GameScene.scn")!
// Set the scene to the view
sceneView.scene = scene
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Create a session configuration
let configuration = ARWorldTrackingConfiguration()
let configuration2 = ARWorldTrackingConfiguration()
// Object Detection
configuration.detectionObjects = ARReferenceObject.referenceObjects(inGroupNamed: "CentroObjects", bundle: Bundle.main)!
// Object Detection
configuration2.detectionObjects = ARReferenceObject.referenceObjects(inGroupNamed: "SofaObjects", bundle: Bundle.main)!
// Run the view's session
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Pause the view's session
sceneView.session.pause()
}
// MARK: - ARSCNViewDelegate
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
let node2 = SCNNode()
if let objectAnchor = anchor as? ARObjectAnchor {
let plane = SCNPlane(width: CGFloat(objectAnchor.referenceObject.extent.x * 0.6), height: CGFloat(objectAnchor.referenceObject.extent.y * 0.5))
plane.cornerRadius = plane.width / 8
let spriteKitScene = SKScene(fileNamed: "ProductInfo_2")
plane.firstMaterial?.diffuse.contents = spriteKitScene
plane.firstMaterial?.isDoubleSided = true
plane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
let planeNode = SCNNode(geometry: plane)
planeNode.position = SCNVector3Make(objectAnchor.referenceObject.center.x, objectAnchor.referenceObject.center.y + 0.70, objectAnchor.referenceObject.center.z)
node.addChildNode(planeNode)
}
if let objectAnchor2 = anchor as? ARObjectAnchor {
let plane2 = SCNPlane(width: CGFloat(objectAnchor2.referenceObject.extent.x * 0.6), height: CGFloat(objectAnchor2.referenceObject.extent.y * 0.5))
plane2.cornerRadius = plane2.width / 8
let spriteKitScene2 = SKScene(fileNamed: "sofacama")
plane2.firstMaterial?.diffuse.contents = spriteKitScene2
plane2.firstMaterial?.isDoubleSided = true
plane2.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
let planeNode2 = SCNNode(geometry: plane2)
planeNode2.position = SCNVector3Make(objectAnchor2.referenceObject.center.x, objectAnchor2.referenceObject.center.y + 0.70, objectAnchor2.referenceObject.center.z)
node.addChildNode(<#T##child: SCNNode##SCNNode#>)
}
return node
}
func session(_ session: ARSession, didFailWithError error: Error) {
// Present an error message to the user
}
func sessionWasInterrupted(_ session: ARSession) {
// Inform the user that the session has been interrupted, for example, by presenting an overlay
}
func sessionInterruptionEnded(_ session: ARSession) {
// Reset tracking and/or remove existing anchors if consistent tracking is required
}