Google が提供する AR開発ライブラリ ARCore に含まれている Augmented Faces を Unity上で試してみました。
これは、カメラアプリ SNOWや Snapchatなんかで以前から流行っている顔に ARで盛る機能。要は顔の形を認識して、ARにてテクスチャを貼ったり3Dオブジェクトを表示させたりする機能のサンプルです。
このサンプルプログラム Augmented Faces の最終イメージは以下のような感じになります。顔にうっすらきつね色テクスチャが張られ、きつねの耳と鼻の3Dオブジェクトが表示されています。

また以前、他にも ARCoreのサンプルプログラム3つ(HelloAR 、 Cloud Anchors、Augmented Images)の Unity上での設定法を紹介しました。そちらもぜひご参考ください。
【作業の概要】
以下に作業全体の流れを示します。後から、詳細を説明しています。
(以下の1,2は以前説明した HelloARとほぼ同じです。)
1.ARCore SDK for Unityのインポート
1.1. ARCore SDK for Unityのダウンロード
1.2. (Unity 2019.1以降のみ) 2 つのPackageのインポート
1.3. ARCore SDK for Unityのインポート
1.4.フォルダの確認(オプション)
2.Unityでの設定
2.1. PlatformをAndroidに変更
2.2. Player Settingsの設定
3.実機での実行
【使用環境】
・ Windows10
・ Unity 2019.2 (JDK や Android Studio は事前にインストール済み)
・ ARCore SDK for Unity v1.13.0
(Augmented Facesは ARCore SDK for Unity v1.7.0でリリースされたので、それ以降のバージョンが必要)
【1.ARCore SDK for Unityのインポート】
1.1. ARCore SDK for Unityのダウンロード
まず、GitHub から最新の ARCore SDK for Unity をダウンロードします。以下のリンクから Unity Package がダウンロードできます。
このページの、ARCore SDK for Unity v1.13.0 であれば、以下の「accore-unity-sdk-v1.13.0.unitypackage」をクリックしてダウロードします。(Unity Package のバージョンで画面は変わるかと思います。)

1.3. ARCore SDK for Unityのインポート
Projectビューから ARCore SDK for Unity の folder 構成を確認してみます。
• GoogleARCore > Examples :いくつかのサンプルが入っています。
2.1. PlatformをAndroidに変更
USBケーブルで Android端末を接続します。
(ここでは説明は省きますが、事前に Android端末側の「USB debugging」を Onにする作業はしておくように。)
「Build And Run」をクリックして、ビルドとアプリのインストールを実行させます。ビルド時に聞かれるファイル名は何でもけっこうです。

実機側でアプリが立ち上がります。アプリ内で自撮りのカメラが起動して、人間の顔を認識すると自動的にきつねの耳と鼻、目のあたり頬が少しオレンジになります。
(このブログ内では自分の写真を出してなかったですが、やりようがなくて公開。すいません、お見苦しい写真で。。。)

あっさり認識されました。ほんとうに一瞬で顔と認識してくれます。実際に顔の方向や位置を変えてもぴったし付いてきます。
これは、カメラアプリ SNOWや Snapchatなんかで以前から流行っている顔に ARで盛る機能。要は顔の形を認識して、ARにてテクスチャを貼ったり3Dオブジェクトを表示させたりする機能のサンプルです。
このサンプルプログラム Augmented Faces の最終イメージは以下のような感じになります。顔にうっすらきつね色テクスチャが張られ、きつねの耳と鼻の3Dオブジェクトが表示されています。

また以前、他にも ARCoreのサンプルプログラム3つ(HelloAR 、 Cloud Anchors、Augmented Images)の Unity上での設定法を紹介しました。そちらもぜひご参考ください。
【作業の概要】
以下に作業全体の流れを示します。後から、詳細を説明しています。
(以下の1,2は以前説明した HelloARとほぼ同じです。)
1.ARCore SDK for Unityのインポート
1.1. ARCore SDK for Unityのダウンロード
1.2. (Unity 2019.1以降のみ) 2 つのPackageのインポート
1.3. ARCore SDK for Unityのインポート
1.4.フォルダの確認(オプション)
2.Unityでの設定
2.1. PlatformをAndroidに変更
2.2. Player Settingsの設定
3.実機での実行
【使用環境】
・ Windows10
・ Unity 2019.2 (JDK や Android Studio は事前にインストール済み)
・ ARCore SDK for Unity v1.13.0
(Augmented Facesは ARCore SDK for Unity v1.7.0でリリースされたので、それ以降のバージョンが必要)
【1.ARCore SDK for Unityのインポート】
1.1. ARCore SDK for Unityのダウンロード
まず、GitHub から最新の ARCore SDK for Unity をダウンロードします。以下のリンクから Unity Package がダウンロードできます。
このページの、ARCore SDK for Unity v1.13.0 であれば、以下の「accore-unity-sdk-v1.13.0.unitypackage」をクリックしてダウロードします。(Unity Package のバージョンで画面は変わるかと思います。)

1.2. (Unity 2019.1以降のみ) 2 Packageのインポート
「Windows > Package Manager」でPackage Managerを起動。
・Multiplayer HLAPI のインポート

・XR Legacy Input Helpers のインポート

「Windows > Package Manager」でPackage Managerを起動。
・Multiplayer HLAPI のインポート

・XR Legacy Input Helpers のインポート

1.3. ARCore SDK for Unityのインポート
全てにチェックが付いているのを確認して、「Import」ボタンをクリック。パッケージのインポートが始まります。

インポートが完了したら、ARCoreが使える状態になりました。
1.4.フォルダの確認(オプション)
Projectビューから ARCore SDK for Unity の folder 構成を確認してみます。
• GoogleARCore > Examples :いくつかのサンプルが入っています。
• GoogleARCore > Examples > AugmentedFaces
:Augmented Faces 用のシーンやスクリプト等関連 Assetのフォルダがあります。
:Augmented Faces 用のシーンやスクリプト等関連 Assetのフォルダがあります。
• GoogleARCore > Examples > AugmentedFaces > Materilas > Textures
:AR表示される Textureがあります。
:AR表示される Textureがあります。
【2.Unityでの設定】
2.1. PlatformをAndroidに変更
では、Unity上でサンプルプログラムの Augmented Faces に関して 設定をしていきましょう。
まず、シーン AugmentedFaces をダブルクリックして、AugmentedFaces のシーンをオープンします。
GoogleARCore > Examples > AugmentedFaces > Scenes > AugmentedFaces

Unityの新規プロジェクトを立ち上げたばかりだと、通常 Platform が「PC, Mac & Linux Standalone」 になっているかと思います。ここでは、Platformを Androidに変更します。
「File > Build Settings...」で Build Settings スクリーンを表示します。

Platformで Androidを選択して「Switch Platform」をクリックします。Platformの変更は少し時間がかかるかもしれません。

2.2. Player Settingsの設定
「Player Settings…」をクリックして、Player Settings画面を表示させます。

では、Player Settingsを以下の様に変更します。
Player Settings画面で「 Other Settings」項目で以下の設定を行います。
・「Auto Graphics API」のチェックをはずす。
・「Graphics APIs」に「Vulkan」があったら、それを選択して「-」ボタンで削除する。

・「Package Name」に好きな名前を入力。例えば、以下の様な感じに。
・「Minimum API Level」で、Android 7.0 以上を選択。

次に、Inspector上の「XR Settings」項目で以下の設定を行います。
・「ARCore Supported」にチェックをつける。

Projectビューの AugmentedFacesのシーンを Build Settingsの Scenes In Buildにドラッグ&ドロップします。

【3.実機での実行】
まず、シーン AugmentedFaces をダブルクリックして、AugmentedFaces のシーンをオープンします。
GoogleARCore > Examples > AugmentedFaces > Scenes > AugmentedFaces

Unityの新規プロジェクトを立ち上げたばかりだと、通常 Platform が「PC, Mac & Linux Standalone」 になっているかと思います。ここでは、Platformを Androidに変更します。
「File > Build Settings...」で Build Settings スクリーンを表示します。

Platformで Androidを選択して「Switch Platform」をクリックします。Platformの変更は少し時間がかかるかもしれません。

2.2. Player Settingsの設定
「Player Settings…」をクリックして、Player Settings画面を表示させます。

では、Player Settingsを以下の様に変更します。
Player Settings画面で「 Other Settings」項目で以下の設定を行います。
・「Auto Graphics API」のチェックをはずす。
・「Graphics APIs」に「Vulkan」があったら、それを選択して「-」ボタンで削除する。

・「Package Name」に好きな名前を入力。例えば、以下の様な感じに。
・「Minimum API Level」で、Android 7.0 以上を選択。

次に、Inspector上の「XR Settings」項目で以下の設定を行います。
・「ARCore Supported」にチェックをつける。

Projectビューの AugmentedFacesのシーンを Build Settingsの Scenes In Buildにドラッグ&ドロップします。

【3.実機での実行】
USBケーブルで Android端末を接続します。
(ここでは説明は省きますが、事前に Android端末側の「USB debugging」を Onにする作業はしておくように。)
「Build And Run」をクリックして、ビルドとアプリのインストールを実行させます。ビルド時に聞かれるファイル名は何でもけっこうです。

実機側でアプリが立ち上がります。アプリ内で自撮りのカメラが起動して、人間の顔を認識すると自動的にきつねの耳と鼻、目のあたり頬が少しオレンジになります。
(このブログ内では自分の写真を出してなかったですが、やりようがなくて公開。すいません、お見苦しい写真で。。。)

あっさり認識されました。ほんとうに一瞬で顔と認識してくれます。実際に顔の方向や位置を変えてもぴったし付いてきます。
このサンプルアプリを試すだけなら上記の通り、ほんとうに簡単にできます。ぜひ、この認識力の高さを試して頂きたいと思います。
Sponsored Link