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 sonraki sürümler
- 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ıç bölümüne bakın.
- Örnek uygulama kodunu almak için 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. - Xcode 10.3 veya sonraki bir sürümde örnek uygulamayı 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. - 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.
- 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
dosyalarını Xcode'a aktarma
Uygulamanızda algılanan bir yüze doku ve 3D model gibi kendi öğelerinizi eklemek için *.scn
öğesini Xcode'a sürükleyin.
Artırılmış Yüz oturumu başlatma
Uygulamanızdan Augmented Faces API'yi kullanmak için bir Augmented Faces 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 belirlediğinizden 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 kareleri içeren bir AVCaptureSession
oluşturarak kamera görüntüleri 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 çıkışı yetkilendirme 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, güncelleme yöntemine ilettiğiniz resim arabelleğini ve zaman damgasını da içerir. Bu, yüz efektlerini resimlerle senkronize etmek için yararlıdır. Bu nesne, 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 ayarlamanızı sağlamak için size bir ekran dönüştürme 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 örgüsünün yönüne dikkat edin:
Yüze 2D doku uygula
Örnek uygulama, artırılmış yüzünüzü SCNGeometry
nesnesine dönüştüren bir sınıf sağlar. Bu geometriyi, artırılmış yüzün merkez dönüşümüne yerleştireceğiniz bir SceneKit düğümüne kolayca eklemek için 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 nesne ekleme
Temsilci geri çağırma işlevinden alınan GARAugmentedFace
, bir yüze içerik eklemek için kullanabileceğiniz 3 farklı bölge veya dönüştürme 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ı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 bir yüze doku ve 3D model gibi öğeler eklemek için önce öğeleri Xcode'a aktarın.
*.dae
(3D model) dosyası 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.