4
2

【iOS】初心者がSwift UI でフェイストラッキングをやってみた

Posted at

はじめに

こんにちは、エンジニアのkeitaMaxです。

以下の記事で紹介されているソースを動かしてみてiOSのFace Trackingを自分なりに理解してみようと思います。

ソースをそのまま動かしてみる。

まずは前回作成したexample-ar-appに組み込んでみようと思います。

FaceTrackingView
import SwiftUI
import RealityKit
import ARKit

struct FaceTrackingView : View {
    var body: some View {
        ARFaceTrackingContainer().edgesIgnoringSafeArea(.all)
    }
}
struct ARFaceTrackingContainer: UIViewRepresentable {
    
    func makeUIView(context: Context) -> ARView {
        // ARViewをゼロサイズのフレームで作成
        let arView = ARView(frame: .zero)
        
        // Face Trackingの設定を作成
        let configuration = ARFaceTrackingConfiguration()
        
        // Face Trackingの設定でセッションを開始
        arView.session.run(configuration)
        
        // 顔に表示する3Dモデルを作成
        let mesh = MeshResource.generateBox(size: 0.15, cornerRadius: 0.01)
        let material = SimpleMaterial(color: .red, roughness: 0.1, isMetallic: false)
        let modelEntity = ModelEntity(mesh: mesh, materials: [material])
        
        // 顔の位置にアンカーを作成
        let anchor = AnchorEntity(.face)
        
        // 3Dモデルを顔のアンカーに追加
        anchor.addChild(modelEntity)
        
        // 顔のアンカーをARViewのシーンに追加
        arView.scene.addAnchor(anchor)
        
        // 設定されたARViewを返す
        return arView
    }
    
    // ARViewを更新するメソッド
    func updateUIView(_ uiView: ARView, context: Context) {}
}



#Preview {
    FaceTrackingView()
}

これをビルドして使ってみると、顔の部分にキューブがつきました。

※画像を撮ったのですが、Qiitaの容量画像の制限に引っかかってしまったので後ほどあげます。

let mesh = MeshResource.generateBox(size: 0.15, cornerRadius: 0.01)

この部分で顔に貼る物体を作成しているので、球体にしたい場合は以下のようにすると球体になります。

let mesh = MeshResource.generateBox(size: 0.15, cornerRadius: 1.0)

困ったこと

本当は目のトラッキングをできるようにしたいなと思っていたのですが、調べてみたもののやり方がわからなかったです。

この公式のアプリをなんとかSwift UIでかきたいと思って色々やってみてはいるのですが、なかなかうまくいかないです。

もし、Swift UIで目のトラッキング方法を知っている方がいらっしゃいましたら教えていただけると幸いです。

おわりに

Story Boardで書いてあるものをサンプルのアプリをSwift UIで書いてみようと思っているのですが、なかなかうまくいかなかったです。

もっとSwiftとSwift UIについての理解を深めてから再挑戦しようかなと思っています。

やり方が違ったり、もっといいやり方があるというご指摘がある方はコメントしていただけると幸いです。

最後まで読んでいただきありがとうございました。

参考文献

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2