2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Swift] ARKit のフェイストラッキング機能を確認する

Last updated at Posted at 2025-12-04

はじめに

本記事では、ARKit のフェイストラッキング機能を簡単に試す方法を紹介する。例として、まばたきを検出する iPhone アプリを制作する。ARKit とは Apple 社が提供する iOS・iPadOS 向けの AR 開発用フレームワークであり、カメラやセンサーを利用して現実世界とデジタル情報を融合させることができる。その中の機能でも「フェイストラッキング機能」は、ユーザーの顔の動きをリアルタイムで取得し、表情やまばたきなどを認識できる機能である。

フェイストラッキングによるまばたき検出

ここでは、ARKit のフェイストラッキング機能を利用して、まばたきを検出する簡単なプログラムを作成する。

公式サイトから提供されているサンプルプロジェクトをダウンロードする。

以下のように BlendShapeCharacter.swift の renderer の最後に print を追加する。

func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
    guard let faceAnchor = anchor as? ARFaceAnchor
        else { return }
        
    let blendShapes = faceAnchor.blendShapes
    guard let eyeBlinkLeft = blendShapes[.eyeBlinkLeft] as? Float,
        let eyeBlinkRight = blendShapes[.eyeBlinkRight] as? Float,
        let jawOpen = blendShapes[.jawOpen] as? Float
        else { return }
    eyeLeftNode.scale.z = 1 - eyeBlinkLeft
    eyeRightNode.scale.z = 1 - eyeBlinkRight
    jawNode.position.y = originalJawY - jawHeight * jawOpen

    print(String(format: "%.6f", Date().timeIntervalSince1970), String(format: "%.6f", eyeBlinkRight), separator:",")
} 

ARKit を利用したプログラムはシミュレーターでは動作せず、実機が必要となる。実機を接続し、ビルドする。
本記事では、Xcode 16.0、iOS 18.1.1 を用いた。

スクリーンショット 2025-11-27 1.18.00.jpg

実機での動作の様子を示す。

スクリーンショット 2025-12-04 0.26.28.png

上記のコードは Xcode の Console に時刻と右目の開閉情報を出力する。開閉情報の範囲は0.0〜1.0となる。完全に閉じているときは1.0、開いていくにつれて0.0に近付く。

スクリーンショット 2025-11-27 1.22.03.png

詳細は以下を参照。

実際に計測した結果を示す。横軸が時間で、縦軸が eyeBlinkRight を1から引いたものになっている。目が開いているときに1.0に近づき閉じているときに0.0に近づく。14.4秒あたりから瞼が閉じ、14.7秒辺りで瞼が開いていることがわかる。参考文献によると、瞬きは0.3秒である。これは計測結果と一致している。ここからまばたきが正しく検出できていることがわかる。

Figure_1.png

その他のパラメータ一覧

ARKit では、目や口だけではなく、顔のさまざまな部位に対応した BlendShape が用意されている。

プログラムと瞬きのデータは以下で公開している。

参考文献

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?