ARKit framework'ü, geliştiricilerin bilgisayarlı görü konusunda derin bilgiye ihtiyaç duymadan iOS için AR uygulamaları oluşturmasını sağlayan Apple'ın artırılmış gerçeklik platformudur. Apple ARKit Documentation, 2025'e göre framework, harici işaretçiler olmadan uzayda cihaz konumunu hassas bir şekilde izlemek için Visual-Inertial Odometry kullanır. Sahnenin anlamsal olarak anlaşılması, yatay ve dikey düzlemleri tanımayı, aydınlatmayı belirlemeyi ve gerçek ortamda sanal nesneleri yerleştirmeyi sağlar.
Önemli Noktalar
ARKit, WWDC 2017'de iOS 11 ile birlikte duyurulan Apple'ın artırılmış gerçeklik framework'üdür. Kamera yeteneklerini, M serisi hareket yardımcı işlemcisini ve A çiplerinin nöral motorunu birleştirerek özel donanım gerektirmeden sürükleyici bir AR deneyimi sunar — sadece bir iPhone veya iPad yeterlidir.
ARKit, uzayda cihaz hareketini hassas bir şekilde izlemek için kameradan ve Core Motion eylemsizlik sensörlerinden gelen verileri birleştiren Visual-Inertial Odometry (VIO) kullanır. VIO, framework'ün GPS veya harici işaretçiler kullanmadan cihazın ortamına göre nerede olduğunu anlamasını sağlar.
Apple WWDC 2024'e göre ARKit 6, A12 çipli ve daha yeni cihazlarda desteklenmektedir (iPhone XS, iPad Pro 2018+). App Store'daki AR uygulaması sayısı 15.000'i aştı ve tüm AR oturumlarında tanınan düzlemlerin toplam alanı 100 milyar metrekareyi aşıyor.
Altı sürüm boyunca ARKit önemli iyileştirmeler aldı: ARKit 1.0 (iOS 11) — temel izleme ve düzlem tanıma; ARKit 2.0 — ARWorldMap aracılığıyla paylaşımlı AR oturumları ve 3D nesne algılama; ARKit 3.0 — insan vücudu izleme, kişi segmentasyonu ve eş zamanlı ön ve arka kameralar.
ARKit 4.0, anlık derinlik ve nesne kapanması belirleme için LiDAR tarayıcıyı ve AR içeriğini GPS koordinatlarına bağlamak için Location Anchor'ı tanıttı. ARKit 6, HDR ile 4K video, LiDAR kullanarak Düzlem Tahmini ve gelişmiş kapanma işleme ekledi.
import ARKit
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal, .vertical]
configuration.environmentTexturing = .automatic
let arView = ARSCNView(frame: view.bounds)
arView.session.run(configuration)
arView.debugOptions = [.showFeaturePoints]
view.addSubview(arView)
ARKit, bir yapılandırmayla başlayan ve kameradan gelen video akışını sürekli olarak analiz eden bir AR oturum döngüsü aracılığıyla çalışır. Her karede framework, cihaz konumunu (6 serbestlik derecesi) hesaplar, tanınan düzlemlerin haritasını günceller ve sanal nesne konumlarını ayarlar — tümü saniyede 60 kare hızında.
VIO süreci iki paralel hattan oluşur: görsel odometri algoritması kareler arasındaki özellik noktalarının hareketini izlerken, Core Motion eylemsizlik sensörleri kamera hızlı hareket ettiğinde veya görüntü bulanık olduğunda kısa aralıklarla hareketi tahmin eder. İki yöntemin birleştirilmesi, 1 santimetreye kadar izleme doğruluğu sağlar.
Apple'a göre ARKit, kare başına 500'e kadar özellik noktası işler ve ortam haritasının (ARWorldMap) çapı 100 metreye kadar ulaşabilir. Ortamı tarama ve harita oluşturma, oturum başladıktan sonra yaklaşık 2–3 saniye sürer — bu süre zarfında ARKit, kamera ve sensörlerden veri toplar.
ARAnchor, içerik yerleştirmek için anahtar bir nesnedir. ARKit bir düzlemi tanıdığında, yüzeyin konumunu, boyutunu ve yönünü belirten bir ARPlaneAnchor oluşturur. Geliştirici, session(_:didAdd:) delegesine yanıt verir ve SceneKit veya RealityKit kullanarak algılanan düzlem konumuna 3D nesneyi yerleştirir.
Nesnelerin sürüklenmesini uygulamak için ARHitTestResult kullanılır: ekrana dokunulduğunda, ARKit karesi aracılığıyla bir hit-test gerçekleştirilir ve tanınan düzlemlerle ışının kesişme noktasını döndürür. Bulunan nokta bir ARAnchor'a dönüştürülür ve nesne bu konuma sabitlenir.
func renderer(
_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor
) {
guard let planeAnchor = anchor
as? ARPlaneAnchor else { return }
let boxNode = SCNNode(
geometry: SCNBox(
width: planeAnchor.extent.x,
height: 0.01,
length: planeAnchor.extent.z,
chamferRadius: 0
)
)
node.addChildNode(boxNode)
}
ARKit, artırılmış gerçekliği gerçekçi ve işlevsel hale getiren bir dizi teknoloji sunar: 6 serbestlik dereceli hareket izleme, düzlem ve sınır tanıma yoluyla sahne anlama, doğru gölge oluşturma için aydınlatma tahmini, kişi kapanması ve ortam haritalarına dayalı yansıtıcı yüzeyler.
Motion Capture (ARKit 3+) — kamera aracılığıyla insan vücudunu gerçek zamanlı izleme teknolojisi. Harici sensörler olmadan kullanıcı hareketleriyle karakterleri canlandırmayı sağlar: 60 Hz'de 18 eklem tanınır. Fitness uygulamalarında ve animasyon prototiplemede kullanılır.
Paylaşımlı AR oturumları (ARKit 2+), birden fazla cihazın paylaşılan bir alanda aynı sanal nesneleri görmesini sağlar. ARWorldMap, ortam haritasını kaydeder ve ağ üzerinden diğer cihazlara iletilir. Apple bir senkronizasyon doğruluğu örneği verir: aynı odadaki iki iPhone 12 Pro, nesneyi 2 santimetreden fazla olmayan bir sapma ile görür.
iPhone 12 Pro ve daha yeni cihazlara yerleşik LiDAR tarayıcı, ARKit'in yeteneklerini kökten değiştirir. Görüntü analizi yoluyla yazılım tabanlı derinlik belirleme yerine LiDAR, 5 metreye kadar menzilde 3 santimetreye kadar doğrulukla anında derinlik haritası sağlar. Bu, ARKit'in ön kamera taraması olmadan düzlemleri anında tanımasını sağlar.
LiDAR ile ARKit, nesne kapanmasını belirleyebilir: sanal bir nesne gerçek bir sandalye veya masanın arkasına gizlenebilir. Ayrıca Scene Reconstruction, ortamın 3D ağını gerçek zamanlı olarak oluşturur — oda başına 10 milyon poligona kadar, çarpışma fiziği simülasyonu ve gerçekçi aydınlatma için kullanılır.
// LiDAR Yapılandırması
let lidarConfig = ARWorldTrackingConfiguration()
lidarConfig.planeDetection = [.horizontal]
lidarConfig.sceneReconstruction = .mesh
arView.session.run(lidarConfig)
// Düzlem Dokunma Algılama
override func touchesBegan(
_ touches: Set<UITouch>,
with event: UIEvent?
) {
let location = touches.first?.location(in: arView)
guard let hitPoint = location else { return }
let results = arView
.raycastQuery(
from: hitPoint,
allowing: .existingPlaneInfinite,
alignment: .horizontal
)
}
ARKit entegrasyonu minimum gereksinimlerle başlar: Xcode 15+, iOS 17 SDK, A12 Bionic çip veya daha yeni bir cihaz. Info.plist'e NSCameraUsageDescription anahtarı eklenmelidir — ARKit, izleme ve AR sahnesini görüntüleme için kamerayı kullanır. Bu anahtar olmadan, AR oturumu başlatılırken uygulama çökecektir.
İçerik oluşturma için iOS üç framework sunar: orta karmaşıklıktaki 3D grafikler için SceneKit, PBR malzemelerle fotogerçekçi işleme için RealityKit ve maksimum performans için Metal. RealityKit, ARKit özellikleri, animasyon ve fizik için yerleşik destek içerdiğinden yeni projeler için önerilen seçimdir.
Apple'a göre, mevcut bir uygulamaya temel bir AR ekranı entegre etmek için ortalama süre deneyimli bir iOS geliştiricisi için yaklaşık 2 saattir. Ana zorluklar, AR sahnesinde UI öğelerinin katmanlanmasıyla çalışırken ve AR oturumu kesintileri (çağrılar, uygulama değiştirme veya düşük ışıkta izleme kaybı) sırasında ortaya çıkar.
ARKit birkaç durumda izlemeyi kaybedebilir: yetersiz aydınlatma (100 lüks altında), özellik noktası eksikliği (tek renkli duvarlar), hızlı kamera hareketleri veya lens tıkanması. ARSessionDelegate bu durumları yönetmek için yöntemler sağlar — kullanıcıya ipuçları gösterilmesi önerilir: “Cihazı daha yavaş hareket ettirin” veya “Işığı açın.”
Bir arızadan sonra kurtulmak için ARKit otomatik olarak yeniden konumlandırmayı başlatır — mevcut video akışını kaydedilmiş ortam haritasıyla eşleştirmeye çalışır. Yeniden konumlandırma mümkün değilse, oturum yeni bir yapılandırmayla yeniden başlatılır. Geri dönüşte hızlı AR sahnesi kurtarma için uygulamadan çıkarken ARWorldMap'in kaydedilmesi önerilir.
class ARViewController: UIViewController {
let arView = ARSCNView()
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal]
config.frameSemantics = .personSegmentation
arView.session.run(config)
}
func sessionWasInterrupted(
_ session: ARSession
) {
showAlert("Oturum kesintiye uğradı")
}
}
Sıkça sorulan sorular
ARKit, A12 Bionic çip ve daha yeni Apple cihazlarında çalışır: iPhone XS, XR, 11, 12, 13, 14, 15, 16 ve SE (2. ve 3. nesil), iPad Pro 2018+, iPad Air 2020+, iPad mini 2021+. LiDAR özellikleri için iPhone 12 Pro/Pro Max, iPhone 13 Pro/Pro Max, iPhone 14 Pro/Pro Max, iPhone 15 Pro/Pro Max ve iPad Pro 2020+ gereklidir.
Evet, ARKit doğrudan Metal ile kullanılabilir, ancak bu özel gölgelendirici ve işleme yazılmasını gerektirir. SceneKit ve RealityKit, framework düzeyinde ARKit entegrasyonuyla hazır çözümler sunar. Yeni başlayanlar için RealityKit en uygun seçimdir çünkü ARKit işlevlerini otomatik olarak yönetir.
ARKit, kamera aracılığıyla sahne aydınlatmasını otomatik olarak değerlendirir ve AREnvironmentProbeAnchor aracılığıyla ışık kaynağının yönü, yoğunluğu ve renk sıcaklığı hakkında veri sağlar. Bu, sanal nesnelerin doğru bir şekilde gölge oluşturmasını ve ortamı yansıtmasını sağlayarak gerçek dünyayla gerçekçi bir bütünleşme yaratır.
ARKit yalnızca iOS'ta çalışır ve izleme için Visual-Inertial Odometry kullanırken, Google'ın ARCore'u Android'de çalışır ve IMU ve kameraya dayalı kendi Motion Tracking'ini kullanır. ARKit, Apple çipleriyle donanım entegrasyonu sayesinde avantaja sahipken, ARCore Cloud Anchors aracılığıyla platformlar arası yetenek sunar.
Evet, ARKit AR oyunları için idealdir. SceneKit ve RealityKit fizik (SCNPhysicsBody, PhysicsSimulation), animasyon, ses ve parçacıkları destekler. Bilinen örnekler arasında Pokémon GO (ARKit ile kendi motorunu kullanır), Angry Birds AR ve Lego AR Studio bulunur. ARKit ayrıca ARWorldMap aracılığıyla çok oyunculu oturumları da destekler.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun