Artırılmış yüzleri kendi uygulamalarınızda nasıl kullanacağınızı öğrenin.
Ön koşullar
- Xcode 13.0 veya sonraki bir sürüm
- Cocoapods kullanıyorsanız Cocoapods 1.4.0 veya üzeri
- iOS 12.0 veya sonraki sürümleri çalıştıran ARKit uyumlu bir Apple cihaz (iOS 12.0 veya sonraki sürümlerin dağıtım hedefi gereklidir)
Örnek uygulamayı derleyip çalıştırma
Ayrıntılı adımlar için Hızlı Başlangıç sayfasını inceleyin.
- Örnek uygulama kodunu almak üzere GitHub'dan iOS için ARCore SDK'sını klonlayın veya indirin.
- Bir Terminal penceresi açın ve Xcode projesinin bulunduğu klasörden
pod install
komutunu çalıştırın. - Örnek uygulamayı Xcode 10.3 veya sonraki bir sürümde açın ve cihazı USB aracılığıyla geliştirme makinenize bağlayın. Derleme hatalarını önlemek için
.xcodeproj
dosyasından değil.xcworkspace
dosyasından derleme yaptığınızdan emin olun. - Cmd+R tuşlarına basın veya Run'i tıklayın. Genişletilmiş Yüzler ile çalışmak için simülatör değil, fiziksel bir cihaz kullanın.
- Kameranın örnek uygulamaya erişmesine izin vermek için "Tamam"a dokunun. Uygulama ön kamerayı açmalı ve kamera feed'inde hemen yüzünüzü izlemelidir. Alnınızın her iki tarafına da tilki kulaklarının resimlerini yerleştirmeli ve kendi burnunuzun üzerine bir tilki burnu yerleştirmelidir.
Uygulamanızda artırılmış yüz özelliğini uygulamaya genel bakış
*.scn
dosyasını Xcode'a aktar
Dokular ve 3D modeller gibi kendi öğelerinizi uygulamanızda algılanan yüze eklemek için *.scn
öğesini Xcode'a sürükleyin.
Genişletilmiş Yüzler oturumunu başlatma
Uygulamanızdan Augmented Faces API'yi kullanmak için bir artırılmış yüz oturumu başlatın. Bu oturum, 60 fps'de kamera görüntülerini çekmekten sorumludur ve yüz güncellemelerini eşzamansız olarak yetki verilmiş bir yönteme döndürür. Başlatma sırasında yakalama cihazının görüş alanını geçirin ve yetki verilmiş kullanıcıyı ayarladığınızdan emin olun.
// Session takes a float for field of view
let faceSession = try? GARAugmentedFaceSession(fieldOfView: cameraFieldOfView)
faceSession?.delegate = self
Oturuma kamera görüntülerini iletin
Oturumunuz başlatıldığına ve doğru şekilde yapılandırıldığına göre uygulamanız oturuma kamera görüntüleri göndermeye başlayabilir. Örnek uygulama, ön kameradan video kareleriyle bir AVCaptureSession
oluşturarak kamera görüntülerini alır.
Aşağıdaki kod örneğinde, AVFoundation
çıkışını yakalama yetkisi verme yönteminin bir uygulaması gösterilmektedir. Bu yöntem, yüz oturumunuza görüntü, bir zaman damgası ve tanıma rotasyonu iletir.
func captureOutput(_ output: AVCaptureOutput,
didOutput sampleBuffer: CMSampleBuffer,
from connection: AVCaptureConnection) {
faceSession.update(with: imageBuffer,
timestamp: frameTime,
recognitionRotation: rotationDegrees)
}
Resim işlendikten sonra Augmented Faces API, GARAugmentedFaceFrame
döndüren bir yetki verilmiş geri çağırma gönderir. Yüze efektler eklemenize yardımcı olan bir Genişletilmiş Yüz nesnesi içerir. Ayrıca, güncelleme yöntemine geçirdiğiniz resim arabelleğini ve zaman damgasını da içerir. Bu, yüz efektlerinin resimlerle senkronize edilmesinde yararlı olur. Bu nesne, 3D dünyayı ve 2D görünümleri, algılanan yüze ekli yüz efektlerinizi oluşturmayı kolaylaştıracak şekilde ayarlayabilmeniz için size bir görüntü dönüşümü ve projeksiyon matrisi de sağlar.
var face: GARAugmentedFace? { get }
var capturedImage: CVPixelBuffer { get }
var timestamp: TimeInterval { get }
Yüz örgü yönü
iOS için yüz ağının yönüne dikkat edin:
Yüze 2D doku uygulayın
Örnek uygulama, artırılmış yüzünüzü SCNGeometry
nesnesine dönüştürmek için bir sınıf sağlar. Bu geometriyi, SceneKit düğümüne kolayca eklemek için kullanabilirsiniz. Bunu, Artırılmış Yüzün Merkezi dönüşümüne yerleştireceksiniz.
let faceNode = SCNNode()
// Gets the most recent frame's face
let face = faceSession.currentFrame?.face
// This is instantiated once, not with every frame
let faceGeometryConverter = FaceMeshGeometryConverter()
// Converts Augmented Face to SCNGeometry object
let faceMesh = faceGeometryConverter.geometryFromFace(face)
// Assigns geometry to node and sets the pose
faceNode.geometry = faceMesh
faceNode.simdTransform = face.centerTransform
2D yüz dokusu UIImage
olarak yüklenir ve yüz ağının geometrisine eklenmiş bir malzemeye ayarlanır.
faceTextureMaterial = SCNMaterial()
faceTextureMaterial.diffuse.contents = UIImage(named:@"face.png")
faceMesh?.firstMaterial = faceTextureMaterial
Yüze 3D nesneler ekleyin
Yetki verilmiş geri aramadan alınan GARAugmentedFace
, 3 farklı bölge sağlar veya bir yüze içerik eklemek için kullanabileceğiniz dönüştürme işlemleridir. Bu dönüştürme işlemleri, dünya uzayında burna, alnın soluna ve alnın sağına gitmenizi sağlar. Burada, buruna bir küre takmak için burun dönüştürme işlemi kullanılmaktadır.
// Create node and add to scene
let node = SCNNode(geometry: SCNSphere(radius: .02))
sceneView.rootNode.addChild(node)
// Every frame updates the node's position
node.simdWorldTransform = session.currentFrame.face.transform(for: .nose)
Kendi öğelerinizi Xcode'a aktarın
Uygulamanızda algılanan yüze doku ve 3D modeller gibi öğeler eklemek için öncelikle öğeleri Xcode'a aktarın.
- Bir
*.dae
(3D model) dosyasını dışa aktarın. *.dae
dosyasını Xcode projesine sürükleyin.- Editor > Convert to SceneKit scene file format (.scn) adresine giderek dosyayı Xcode'da
.scn
biçimine dönüştürün.