Press ESC to close

ARKit ile Ev Oluşturma

Merhaba arkadaşlar, bu yazımızda ARKit ile nasıl ev objesi oluşturulur ve ekranda gösterilir bundan bahsedeceğiz. Öncelikle ekrana nasıl node koyulur tabi bunu bilmemiz lazım. Bunu daha önce yazmış olduğum yazılardan bulabilirsiniz.

İlk olarak her zamanki gibi ekrana bir scene view koyup, bunu tüm kenarlara sıfırlıyoruz. Bu şekilde tüm ekrana kaplıyor.

Ardından kodu yazmaya başlayabiliriz. Burada basit bir ev tasarımı yapacağız. Bir kutu koyup, bu kutunun üst tarafına çatı olması için bir silindir ve ardından kapı gibi gözükmesi için bir düzlem koyacağız. Bunların hepsini bir önceki yazıda bulabilirsiniz. Bu node’ları oluşturduktan sonra birbiriyle bağlamamız gerekiyor yani birbiriyle hangi pozisyonlarda olacağını belirtmeliyiz. Aşağıda kod parçasını attım. Kodu inceleyerek aslında anlayabilirsiniz.

//
//  ViewController.swift
//  arkit-home
//
//  Created by Omer Sezer on 4.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
        
        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)
    }
}

Yukarıdaki projenin ekran çıktısı aşağıdaki gibidir. Siz bu evi büyütüp pencere vs de ekleyebilirsiniz.

Projeye buradan ulaşabilirsiniz. Aklınıza takılan sorular olursa mail veya yorum atarak ulaşabilirsiniz. İyi çalışmalar.

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir