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

これを簡単に理解できるように、いくつものシーンを含んだサンプルプロジェクトがGitHubにあります
前回はその中のFaceTrackingに含まれる、左右の眉毛と鼻の位置と方向を認識する「ARCoreFaceRegions」に関して、詳細説明と応用方法の紹介しました。

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

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

「FaceMesh」は認識した顔にMesh Rendererをかぶせ、特定のTextureを顔に表示させます。認識した顔の数等のデバイス側の情報も表示します。フロントカメラを使用します。
そのシーンの中には以下のようなオブジェクトが含まれています。
ARF_FaceTracking_22

[実行画面]
ARF_FaceTracking_23


【AR Sessionオブジェクト】
ARF_FaceTracking_24

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

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


【AR Session Originオブジェクト】
ARF_FaceTracking_25

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

Display Face Infoクラス
認識した顔の数等のデバイス側の情報をUI表示します。

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

[AR Face ManagerのPrefab]
AR Face ManagerにデフォルトでセットしてあるPrefabは以下となります。
ARF_FaceTracking_26
 
ここにデフォルトでセットしてあるMaterialと、そこにセットしてあるTextureは以下です。
ARF_FaceTracking_27


【応用編:変更法①】

応用編として、このサンプルを最大限利用して、違うイメージを認識した顔に表示させます。要は表示するTextureだけを変更させてみます。
まず、新たなMaterialを作成して、MaterialのTextureを以下のキャラクター画像にします。
ARF_FaceTracking_29

それをPrefabのFace Material Switcherクラスにある、Face Materials変数部分の既存Materialと付け替えます。
ARF_FaceTracking_30

[実行画面]
ARF_FaceTracking_31


【応用編:変更法②】

さらに応用編として、サンプルをさらに最大限利用して面白くしてみます。
前回「ARCoreFaceRegions」の紹介で使用したサンプルシーンに含まれていた「AR Core Face Region Manger」クラスの改造版を本シーンの「AR Session Origin」オブジェクトにアタッチします。
(「AR Core Face Region Manger」クラスの改造版は前紹介記事を参照ください。
Unity AR Foundation のサンプルを試してみた(FaceTracking)Part.2】)

前回はピエロの目と鼻の3Dオブジェクトを表示させたので、表示しているキャラクターのTextureに合わせて、鼻だけ表示させるように修正。
ARF_FaceTracking_32

[実行画面]
ARF_FaceTracking_21



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

このように、ARで何か作る際は、Unityが出しているUnity AR Foundationのサンプルを基に改造していくと良いかと思います。


Sponsored Link