Merhaba arkadaşlar, bu yazımızda ARKit ile nasıl gerçek dünyada kamera üzerinden cisimler gösterebiliriz bundan bahsedeceğim. Daha önceki yazımda ARKit ile nasıl basit bir proje oluşturulur bundan bahsetmiştim. O yazıya da buradan ulaşabilirsiniz.
İlk olarak ekranda bir cisim oluşturmak için Node oluşturmamız gerekiyor. Bu cismin gerçek dünyada nerede duracağını, rengini vs ayarlamamız gerekiyor. Aşağıdaki örnekte bir çok farklı şekilde cisim oluşturulmuştur. Siz de buradan kendi projeniz için gerekli olan şekilde cisim oluşturabilirsiniz.
// // ViewController.swift // scene-view // // Created by Omer Sezer on 3.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 let createdNode = createCustom() createdNode.position = SCNVector3(0, 0, -0.2) sceneView.scene.rootNode.addChildNode(createdNode) } func createBox() -> SCNNode { let node = SCNNode() node.geometry = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0.03) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createCapsule() -> SCNNode { let node = SCNNode() node.geometry = SCNCapsule(capRadius: 0.1, height: 0.3) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createCone() -> SCNNode { let node = SCNNode() node.geometry = SCNCone(topRadius: 0, bottomRadius: 0.3, height: 0.3) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createCylinder() -> SCNNode { let node = SCNNode() node.geometry = SCNCylinder(radius: 0.2, height: 0.1) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createSphere() -> SCNNode { let node = SCNNode() node.geometry = SCNSphere(radius: 0.1) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createTube() -> SCNNode { let node = SCNNode() node.geometry = SCNTube(innerRadius: 0.1, outerRadius: 0.3, height: 0.3) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createTorus() -> SCNNode { let node = SCNNode() node.geometry = SCNTorus(ringRadius: 0.3, pipeRadius: 0.1) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createPlane() -> SCNNode { let node = SCNNode() node.geometry = SCNPlane(width: 0.2, height: 0.2) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createPyramid() -> SCNNode { let node = SCNNode() node.geometry = SCNPyramid(width: 0.1, height: 0.1, length: 0.1) node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } func createCustom() -> SCNNode { let node = SCNNode() let path = UIBezierPath() path.move(to: CGPoint(x: 0, y: 0)) path.addLine(to: CGPoint(x: 0, y: 0.02)) path.addLine(to: CGPoint(x: 0.02, y: 0.03)) path.addLine(to: CGPoint(x: 0.04, y: 0.02)) path.addLine(to: CGPoint(x: 0.04, y: 0)) let shape = SCNShape(path: path, extrusionDepth: 0.02) node.geometry = shape node.geometry?.firstMaterial?.specular.contents = UIColor.orange node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue return node } }
Kutu
Daha detaylı bilgiye buradan ulaşabilirsiniz.
Kapsül
Detaylı bilgiye buradan ulaşabilirsiniz.
Koni
Daha detaylı bilgiye buradan ulaşabilirsiniz.
Silindir
Daha detaylı bilgiye ulaşabilirsiniz.
Küre
Daha detaylı bilgiye buradan ulaşabilirsiniz.
Tüp
Daha detaylı bilgiye buradan ulaşabilirsiniz.
Simit
Daha detaylı bilgiye buradan ulaşabilirsiniz.
Düzlem
Daha detaylı bilgiye buradan ulaşabilirsiniz.
Piramit
Daha detaylı bilgiye buradan ulaşabilirsiniz.
Özel
Bazen bu cisimlerin yanı sıra farklı özel cisimler de oluşturmak isteyebilirsiniz. Burada biraz hayal gücünüze ve çalışmalarınıza bağlı olarak değişir. Ben küçük bir ev cismi oluşturdum. Kodları yukarıda paylaştım oradan kontrol edebilirsiniz. Ekran görüntüsü ise aşağıdaki gibidir.
Sorularını olursa mail veya yorum atarak ulaşabilirsiniz. İyi çalışmalar.
Bir yanıt yazın