Google ARCoreApple ARKitUnity上で統合して、マルチプラットフォームでARアプリを開発できるフレームワーク Unity AR Foundation

これを簡単に理解できるように、いくつものシーンを含んだサンプルプロジェクトがGitHubにあります
前回そのFaceTrackingに関するシーンでARCoreに対応したものを紹介しました。

Unity AR Foundation のサンプルを試してみた(FaceTracking)Part.1

今回はその中のARCoreFaceRegions詳細情報と応用方法を紹介します。
ARF_FaceTracking_20

【ARCoreFaceRegionsの説明】

「ARCoreFaceRegions」は認識した顔の特定の場所情報を提供します。左右の眉毛の位置と方向、鼻の位置と方向を表示します。フロントカメラを使用します。

そのシーンの中には以下のようなオブジェクトが含まれています。
ARF_FaceTracking_01

[実行画面]
ARF_FaceTracking_08


【AR Session オブジェクト】

ARF_FaceTracking_11

AR Sessionクラス
AR Foundationの AR としての基本機能(デバイスのトラッキングや、平面の認識)を AR Sessionと呼び、本Game Objectがその機能を担っています。このコンポーネントを付けたGame ObjectをSceneに必ず含める必要があります。
「Attempt Update」をチェックすると、もし可能であればARソフトを自動でインストールする設定となります。

AR Input Managerクラス
このコンポーネントはデバイスで現実世界をトラッキングするのに必要となります。実際はScene上のどこにあっても良い。


【AR Session Origin オブジェクト】

ARF_FaceTracking_06

AR Session Originクラス
Session Spaceと言う ARの座標と Unity Space:Unityの座標の変換を行います。ARデバイスを起動した位置を Session Spaceの原点(0,0,0)として位置の計算をします。
AR Cameraを配下に持っています。また、表示する Game Objectはこの AR Session Originオブジェクト配下に作られる。

AR Face Managerクラス
人間の顔のみ認識する。顔認識にはフロントカメラが必要となり、AR Foundationにある平面認識(Plane Tracking)、イメージ認識(Image Tracking)、物体認識(Object Tracking)、環境認識(Environment Probes)のような機能は無効化しておく必要がある。

AR Core Face Region Managerクラス
認識された顔のパーツの位置にゲームオブジェクトを表示する。

[ゲームオブジェクトを表示する部分の説明]
ARF_FaceTracking_12

71-84行:検索した顔のパーツ分だけ繰り返す。
78行:まだ3Dモデルの Prefabを AR表示させていない場合、表示させる。
82、83行:表示した Prefabの位置と向きを、認識した顔のパーツに合わせて調整。
73行の regionType は以下のような0から2の整数が入る。

ARF_FaceTracking_13

表示するGameObjectは以下のPrefab。
ARF_FaceTracking_14



【応用編:変更法】

応用編として、このサンプルを少しだけ変更して最初の画面のようにします。要は、顔認識時に左右の眉毛の位置、鼻の位置に表示する GameObjectを変更します。

[AR Core Face Region Managerクラス内の変更]
「AR Core Face Region Manager」の以下の部分を変更します。
ARF_FaceTracking_15

ARF_FaceTracking_16
 
Inspector上から AR Core Face Region Managerクラスの「Pre_1」と「Pre_2」に Prefabをセットします。
ARF_FaceTracking_17

[Prefabの用意]
もちろん、上記の様に「Pre_1」「Pre_2」に Prefabをセットする前に、表示するメガネと鼻の GameObjectを用意しておく必要があります。

メガネの GameObjectについて。大きさ(Scale)や位置(Position)、方向(Rotation)を、元のサンプルの GameObjectを参考に調整しておきます。
ARF_FaceTracking_18

鼻の GameObjectも。大きさ(Scale)や位置(Position)を実際に表示される大きさを見ながら調整しておきます。(この例の場合、球なので方向は関係ないです。)
ARF_FaceTracking_19

[実行画面]
ARF_FaceTracking_20


以上、左右の眉毛の位置と方向、鼻の位置と方向を認識する「ARCoreFaceRegions」に関して、詳細説明と応用方法の紹介でした。


次回は、認識した顔に Mesh Rendererをかぶせ、特定の Textureを顔に表示させる「FaceMesh」に関して、詳細説明と応用方法を紹介します。

Sponsored Link