Merhabalar arkadaşlar, bu yazımızda Swift ARKit ile oluşturduğumuz Node’u nasıl çevireceğimizden bahsedeceğiz. Bu örneğimizi daha önce oluşturduğumuz ev projesi üzerinden yapacağız. O yazıya da buradan ulaşabilirsiniz.
Daha önceki projelerde yaptığımız gibi evi oluşturan node’u ilk olarak sahnemize ekliyoruz. Ardından bu evin Euler Açısını değiştirmemiz gerekiyor. Euler açısı hakkında daha fazla bilgiye buradan ulaşabilirsiniz. Tabi bu açıya derece cinsinden bir değer veremiyoruz. Bu yüzden dereceyi radyana çevirmemiz gerekiyor. Bunun için Int’e bir değişken yazıyoruz. Ardından bu değişken ile Node’un açısını değiştirebiliyoruz.
// // ViewController.swift // arkit-rotation // // Created by Omer Sezer on 5.07.2021. // import UIKit import ARKit class ViewController: UIViewController { @IBOutlet weak var sceneView: ARSCNView! let configuration = ARWorldTrackingConfiguration() override func viewDidLoad() { super.viewDidLoad() setUI() } func setUI() { // MARK: sceneView sceneView.debugOptions = [.showFeaturePoints, .showWorldOrigin] sceneView.session.run(configuration) sceneView.autoenablesDefaultLighting = true setHomeNode() } func setHomeNode() { let nodeRoof = SCNNode(geometry: SCNPyramid(width: 0.1, height: 0.1, length: 0.1)) nodeRoof.geometry?.firstMaterial?.diffuse.contents = UIColor.red nodeRoof.eulerAngles = SCNVector3(0, 0, 90.degreesToRadians) let nodeHome = SCNNode(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)) nodeHome.geometry?.firstMaterial?.diffuse.contents = UIColor.blue let nodeDoor = SCNNode(geometry: SCNPlane(width: 0.03, height: 0.06)) nodeDoor.geometry?.firstMaterial?.diffuse.contents = UIColor.green nodeRoof.position = SCNVector3(-0.1, 0.1, -0.7) nodeHome.position = SCNVector3(0, -0.05, 0) nodeDoor.position = SCNVector3(0, -0.02, 0.05) sceneView.scene.rootNode.addChildNode(nodeRoof) nodeRoof.addChildNode(nodeHome) nodeHome.addChildNode(nodeDoor) } } extension Int { var degreesToRadians: Double { return Double(self) * .pi / 180} }
Aslında bu işlem bu kadar kolay. Projeye buradan ulaşabilirsiniz. Sorularınız olursa mail veya yorum atarak ulaşabilirsiniz. İyi çalışmalar.
Bir yanıt yazın