ARKit: ARAnchor

ARAnchor, uygulamanıza eklediğiniz AR objelerini sabit tutabilmek için bilmeniz gereken kütüphanedir.

Rana Taki
TurkishKit
3 min readNov 23, 2020

--

Merhaba TurkishKit okuyucuları! 🖖 Bugün sizlerle birlikte ARKit kütüphanesindeki ARAnchor özelliğini inceleyeceğiz. Hazırsanız başlayalım!

Soyut bir kavram olduğundan ilk başta ARAnchor’un ne olduğunu ve neden kullanıldığını kavramak zor olabilir. O nedenle, görünmez bir obje olarak düşünebilirsiniz. ARAnchor, dış dünyaya kod ile eklediğiniz görünmez bir objedir ve sonradan bu objenin yerine kodla yarattığınız başka bir obje koyabilirsiniz.

🌍 World Tracking’i geliştirir: Bir obje olması nedeniyle koordinatları da sabittir. ARAnchor, uygulamanızla dış dünyaya eklediğiniz objeleri dış dünyanın koordinatlarına göre ekler. Böylece, uygulamanızın aynı zamanda dış dünyayı daha iyi algılamasına neden olur, bir sonraki eklediğiniz objeler daha sabit ve iyi yerlerde belirir.

Not: Eğer uygulamanızda anchor kullanmazsanız kodlayarak gerçek dünyaya yerleştirdiğiniz objeler telefonunuz hareket ettikçe sürüklenecektir. Ondan anchor kullanmayı unutmayın! 😉

ARAnchor sınıfının bir çok çeşidi bulunur. Aşağıdaki çeşitleri kullandığınızda ARAnchor otomatik olarak uygulamanızda oluşacaktır.

ARPlaneAnchor: planeDetection özelliği açıksa uygulamanıza ARPlaneAnchor ekleyebiliyor olacaksınızdır. Adında olduğu gibi yatay yüzeyleri algılamakta kullanılan bir anchor tipidir. Bu özelliği yüzey algılama makalesinde kullandık.

ARImageAnchor: Dış dünyadaki resimleri algılamak için kullanılır. imageDetection özelliği açık olmalıdır ki algılanan her resim bir ARImageAnchor olarak uygulamaya geçsin. ARKit aynı anda 4 resim algılayabilir.

🏄‍♀️ ARBodyAnchor: ARBodyTrackingConfiguration() ile birlikte kullanarak insan vücutlarının hareketini algılayabilirsiniz.

ARFaceAnchor: True Depth kamerası ile insan yüzünün mimiklerini ve koordinatlarını algılamak için kullanılır. Telefonunuzda True Depth kamerası veya A12+ çipi varsa ARKit, aynı anda 3 tane yüz algılayabilmektedir.

Bu özelliği Face Tracking makalemizde kullanmıştık:

ARObjectAnchor: Gerçek hayatta bir obje için oluşturulan bir anchor. 6 derecelik hata payı ile gerçek hayattaki objeleri uygulamanızın sanal ortamına eklemek istiyorsanız mükemmel bir özelliktir. Bu özelliği kullanırken ARReferenceObject ve detectionObjects özelliklerini tanımlamayı veya ayarlamayı unutmayın!

Bunlar, ARAnchor sınıfının en temel anchor çeşitleri ancak kodlamaya başladığınızda göreceksiniz ki aslında uygulamanıza bir çok çeşit anchor ekleyebiliyorsunuz.

Anchor eklemek çok basit bir iş değildir. Uygulamanızın fonksiyonuna göre o anchoru nasıl eklediğiniz de önemlidir. Aşağıdaki komutlar, ARAnchor’u uygulamanıza eklerken kullanabileceğiniz bazı yöntemleri içerir.

Hit-Testing: Ekrana bastığınızda, bastığınız noktadan görünmez bir ışın çıkar. Bu ışın, koordinat düzleminizde bulunan herhangi bir düzlemle çakışır. İki unsurun çakıştığı noktada bir ARAnchor (ya da obje) oluşur. Bu, ARHitTestResult sınıfıyla yapılır ancak iOS 14'te o sınıf kullanılmaz. Onun yerine RayCasting sınıfını kullanmanız gerekir.

Ray Casting: Ray Casting’de ışın ve düzlemin çakıştığı noktada bir ARAnchor oluşturur. Hit testing’den farkı, uygulama çalıştığı süre boyunca ve dış ortamı daha iyi algıladıkça ARAnchor’ın pozisyonunu düzeltir.

Görebildiğiniz üzere, ışınların görünmez düzlemle kesiştiği noktada objeler oluşmaya başlayacaktır.

Feature Points: ARKit’in otomatik olarak algıladığı dış dünya noktaları. Bunlar uygulamanızda sarı noktalar olarak belirir ve belirdikleri yerlere ARAnchor konulabileceği anlamına gelir.

Sarı noktalar feature point’leri belirlemektedir.

ARCamera transform: ARCamera sınıfı kolaylıkla bir ARAnchor pozisyonu oluşturabilir. iPhone’unuzun kamerası ile “simd_float4x4” koordinatlarını kullanarak uygulamanıza ARAnchor ekleyebilirsiniz.

ARAnchor’u kodunuza şu şekilde ekleyebilirsiniz:

Bir ARKit makalemizin daha sonuna geldik. 🥳 ARAnchor sınıfını derinden inceleyerek uygulamanızda dikkat etmeniz gereken detaylara değindik. Bir sonraki makalede görüşmek üzere! İyi kodlamalar. 🖖

Bizi daha yakından takip etmek istiyorsanız, sosyal medya hesaplarımıza aşağıdan ulaşabilirsiniz!

Twitter | Instagram | Facebook

--

--