Google ARCore と Apple ARKit を Unity上で統合して、マルチプラットフォームでARアプリを開発できるUnityのフレームワーク Unity AR Foundation。
これを簡単に理解できるように、いくつものシーンを含んだサンプルプロジェクトがGitHubにあります。
前回はその中の「FaceTracking」に含まれる、左右の眉毛と鼻の位置と方向を認識する「ARCoreFaceRegions」に関して、詳細説明と応用方法の紹介しました。
【 Unity AR Foundation のサンプルを試してみた(FaceTracking)Part.2】
今回は、認識した顔にMesh Rendererをかぶせ、特定のTextureを顔に表示させる「FaceMesh」に関して、詳細説明と応用方法を紹介します。

【AR Sessionオブジェクト】

AR Sessionクラス:
AR Foundationの AR としての基本機能(デバイスのトラッキングや、平面の認識)を AR Sessionと呼び、本Game Objectがその機能を担っています。このコンポーネントを付けたGame ObjectをSceneに必ず含める必要があります。
「Attempt Update」をチェックすると、もし可能であればARソフトを自動でインストールする設定となります。
これを簡単に理解できるように、いくつものシーンを含んだサンプルプロジェクトがGitHubにあります。
前回はその中の「FaceTracking」に含まれる、左右の眉毛と鼻の位置と方向を認識する「ARCoreFaceRegions」に関して、詳細説明と応用方法の紹介しました。
【 Unity AR Foundation のサンプルを試してみた(FaceTracking)Part.2】
今回は、認識した顔にMesh Rendererをかぶせ、特定のTextureを顔に表示させる「FaceMesh」に関して、詳細説明と応用方法を紹介します。

【FaceMeshの説明】
「FaceMesh」は認識した顔にMesh Rendererをかぶせ、特定のTextureを顔に表示させます。認識した顔の数等のデバイス側の情報も表示します。フロントカメラを使用します。
「FaceMesh」は認識した顔にMesh Rendererをかぶせ、特定のTextureを顔に表示させます。認識した顔の数等のデバイス側の情報も表示します。フロントカメラを使用します。
【AR Sessionオブジェクト】

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

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は以下となります。

ここにデフォルトでセットしてあるMaterialと、そこにセットしてあるTextureは以下です。


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は以下となります。

ここにデフォルトでセットしてあるMaterialと、そこにセットしてあるTextureは以下です。

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

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

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

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

【応用編:変更法②】
さらに応用編として、サンプルをさらに最大限利用して面白くしてみます。
前回「ARCoreFaceRegions」の紹介で使用したサンプルシーンに含まれていた「AR Core Face Region Manger」クラスの改造版を本シーンの「AR Session Origin」オブジェクトにアタッチします。
(「AR Core Face Region Manger」クラスの改造版は前紹介記事を参照ください。
【Unity AR Foundation のサンプルを試してみた(FaceTracking)Part.2】)
前回はピエロの目と鼻の3Dオブジェクトを表示させたので、表示しているキャラクターのTextureに合わせて、鼻だけ表示させるように修正。

さらに応用編として、サンプルをさらに最大限利用して面白くしてみます。
前回「ARCoreFaceRegions」の紹介で使用したサンプルシーンに含まれていた「AR Core Face Region Manger」クラスの改造版を本シーンの「AR Session Origin」オブジェクトにアタッチします。
(「AR Core Face Region Manger」クラスの改造版は前紹介記事を参照ください。
【Unity AR Foundation のサンプルを試してみた(FaceTracking)Part.2】)
前回はピエロの目と鼻の3Dオブジェクトを表示させたので、表示しているキャラクターのTextureに合わせて、鼻だけ表示させるように修正。

以上、認識した顔にMesh Rendererをかぶせ、特定のTextureを顔に表示させる「FaceMesh」に関して、詳細説明と応用方法の紹介でした。
このように、ARで何か作る際は、Unityが出しているUnity AR Foundationのサンプルを基に改造していくと良いかと思います。
このように、ARで何か作る際は、Unityが出しているUnity AR Foundationのサンプルを基に改造していくと良いかと思います。
Sponsored Link
これでARの実装が出来ます・・・