iOS için Artırılmış Yüzler geliştirici kılavuzu

Artırılmış Yüzleri kendi uygulamalarınızda nasıl kullanacağınızı öğrenin.

Ön koşullar

  • Xcode 13.0 veya sonraki sürümler
  • 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)
ziyaret edin.

Örnek uygulamayı derleyip çalıştırma

Ayrıntılı adımlar için Hızlı Başlangıç'a göz atın.

  1. Örnek uygulama kodunu almak için GitHub'dan iOS için ARCore SDK'yı klonlayın veya indirin.
  2. Bir Terminal penceresi açın ve Xcode projesinin bulunduğu klasörden pod install komutunu çalıştırın.
  3. Örnek uygulamayı Xcode 10.3 veya sonraki bir sürümde açın ve cihazı USB üzerinden geliştirme makinenize bağlayın. Yapı hatalarını önlemek için oluşturma işlemini .xcodeproj dosyasından değil .xcworkspace dosyasından yaptığınızdan emin olun.
  4. Cmd+R tuşlarına basın veya Run tuşuna basın. Artırılmış Yüzlerle çalışmak için simülatör yerine fiziksel bir cihaz kullanın.
  5. Kameranın örnek uygulamaya erişmesine izin vermek için "Tamam"a dokunun. Uygulama ön kamerayı açıp hemen kamera feed'inde yüzünüzü takip etmelidir. Tilki kulağı resimleri alnınızın her iki tarafına da yerleştirmeli ve kendi burnunuzun üzerine bir tilki burnu yerleştirmelidir.

Uygulamanızda Artırılmış Yüzleri kullanmaya genel bakış

*.scn dosyayı Xcode'a aktar

Uygulamanızda algılanan bir yüze doku ve 3D modeller gibi kendi öğelerinizi eklemek için *.scn öğesini Xcode'a sürükleyin.

Artırılmış Yüzler oturumu başlat

Uygulamanızda Augmented Faces API'yi kullanmak için bir Artırılmış Yüzler oturumu başlatın. Bu oturum, 60 fps'de kamera resimleri çekmekten sorumludur ve yüz güncellemelerini, yetki verme yöntemine eşzamansız olarak döndürür. Başlatma sırasında yakalama cihazının görüş alanını iletmeniz ve yetkiyi ayarladığınızdan emin olmanız yeterlidir.

// Session takes a float for field of view
let faceSession = try? GARAugmentedFaceSession(fieldOfView: cameraFieldOfView)
faceSession?.delegate = self

Kamera görüntülerini oturuma iletin

Oturumunuz başlatılıp doğru şekilde yapılandırıldığına göre uygulamanız oturuma kamera resimleri 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 tarafından yüz oturumunuza görüntü, zaman damgası ve tanıma döndürme işlemi ileten yakalama çıktısı yetkisi verme yönteminin bir uygulaması gösterilmektedir.

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 efekt eklemenize yardımcı olan bir Artırılmış Yüz nesnesi içerir. Ayrıca, resim arabelleğini ve güncelleme yöntemine ilettiğiniz zaman damgasını da içerir. Bu, yüz efektlerini resimlerle senkronize etmek için yararlıdır. Bu nesne ayrıca, 3D dünyayı ve 2D görünümleri, algılanan yüze bağlı olarak görünen 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üsü yönü

iOS için yüz ağının yönüne dikkat edin:

Yüze 2D doku uygula

Örnek uygulama, Artırılmış Yüzünüzü bir SCNGeometry nesnesine dönüştürebileceğiniz bir sınıf sağlar. Augmented Face's Center dönüşümüne yerleştireceğiniz bir SceneKit düğümüne kolayca eklemek için bu geometriyi kullanabilirsiniz.

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 bağlı bir malzemeye ayarlanır.

faceTextureMaterial = SCNMaterial()
faceTextureMaterial.diffuse.contents = UIImage(named:@"face.png")

faceMesh?.firstMaterial = faceTextureMaterial

Yüze 3D nesneler ekleyin

Yetki verilmiş geri çağırma işleminden alınan GARAugmentedFace, bir yüze içerik eklemek için kullanabileceğiniz 3 farklı bölge veya dönüşüm sağlar. Bu dönüştürme işlemleri dünya uzayında burnun, alnınızın solunun ve alnınızın sağını görmenizi sağlar. Burada, buruna bir küre eklemek için burun dönüşümü kullanılı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 bir yüze doku ve 3D modeller gibi öğeler eklemek için öncelikle öğeleri Xcode'a aktarın.

  1. *.dae (3D model) dosyasını dışa aktarın.
  2. *.dae dosyasını Xcode projesine sürükleyin.
  3. Editor > Convert to SceneKit scene file format (.scn) adresine giderek dosyayı Xcode'da .scn biçimine dönüştürün.
ziyaret edin.