MRが楽しい

MRやVRについて学習したことを書き残す

ARマーカーをHoloLensで利用する

本日は HoloLens の技術調査枠です。
HoloLens で Vuforia を利用し、ARマーカー上にオブジェクトを表示します。
Vuforia Developer Portal |

事前にARマーカーとして利用する画像ファイルを用意しておく必要があります。
JPEG もしくは PNG でファイルサイズが 2MB 以下であるものが利用可能です。
f:id:bluebirdofoz:20180114233317j:plain

Vuforia 自体は以前 android アプリで試したことがあり、アカウントは取得済みです。
ログインを行い、ライセンスキーを取得するところから始めます。
f:id:bluebirdofoz:20180114233326j:plain

以下の通り、既にライセンスキーを取得済みであれば、これを開いてライセンスキーの文字列をコピーします。
f:id:bluebirdofoz:20180114233337j:plain

未作成であれば Get Development Key もしくは Buy Deployment Key でライセンスキーを取得します。
Development のみ無料です。Development の場合、個人利用する自作アプリでのみ利用可能です。
f:id:bluebirdofoz:20180114233345j:plain

次にライセンスキーを取得したら、マーカーの登録を行います。
まずはマーカーを登録するデータベースを作成します。TargetManaer を選択し、Add Database をクリックします。
f:id:bluebirdofoz:20180114233353j:plain

データベースの作成画面が開きます
データベースの名前を設定し、Type で Device を選択して Create をクリックします。
f:id:bluebirdofoz:20180114233406j:plain

データベースを作成したら開きます。
するとデータベースの設定画面が開くので、Add Target をクリックします。
f:id:bluebirdofoz:20180114233446j:plain

マーカーの登録画面が開きます
ARマーカーの形によって Type を選択します。今回はただの画像なので SingleImage を選択します。
File に用意した画像を選択します。
Width は利用するマーカーの大きさを設定します。単位はメートルです。
例えば 2 を設定すると Unity のシーン内でマーカーは 2m × 2m の物体として認識されます。
Name には選択した画像のファイル名が自動で入力されます。
最後に Add をクリックして登録します。
f:id:bluebirdofoz:20180114233453j:plain

マーカーが作成されるので、選択して Download Database を選択します。
f:id:bluebirdofoz:20180114233501j:plain
このとき、画像の認識のしやすさが星マークで評価されています。
星5つならば認識しやすい画像という事です。特徴点が多くコントラストが高い画像程よいようです。

プラットフォームの選択画面が表示されます。
Unity Editor を選択し、Download をクリックします。
f:id:bluebirdofoz:20180114233516j:plain


実際に HoloLens で試すため、Unity のテストプロジェクトを作成します。
f:id:bluebirdofoz:20180114233524j:plain

Unity 上で Vuforia を利用するため、以下の Download Unity Extension からSDKパッケージを取得します。
SDK Download | Vuforia Developer Portal
f:id:bluebirdofoz:20180115000719j:plain

Vuforia からダウンロードした SDK と ARマーカー の unitypackage をインポートします。
f:id:bluebirdofoz:20180114233602j:plain

Vuforia からダウンロードしたマーカーの unitypackage をインポートします。
f:id:bluebirdofoz:20180114233612j:plain

Vuforia/Prefabs ディレクトリにある ARCamera.prefab と ImageTarget.prefab をシーンに配置します。
f:id:bluebirdofoz:20180114233621j:plain

最初に ARCamera の設定を行います。
配置した ARCamera を選択し、Inspector から Open Vuforia Configuration を選択します。
f:id:bluebirdofoz:20180114233630j:plain

App License Key の欄に取得したライセンスキーをペーストします。
HoloLens のカメラを利用するので Digital Eyewear の欄を、以下の通り設定します。
EyewearType:Optical See-Through
SeeThroughConfig:HoloLens
また、Datasets の欄に、読み込んだデータベース名が表示されているので Load ~ Database と Active にチェックを入れます。
f:id:bluebirdofoz:20180114233650j:plain

ARCamera の Inspector に戻り、Central Anchor Point に MixedRealityCameraParent 内の MixedRealityCamera を設定します。
f:id:bluebirdofoz:20180114233638j:plain

次に ImageTarget の設定を行います。
配置した ImageTarget を選択し、Inspector の Database と ImageTarget を登録したマーカーに設定します。
f:id:bluebirdofoz:20180114233702j:plain

読み込み時のままだと画像の Texture Shape が Cube になっているため、2D に変更して Apply を実行します。
f:id:bluebirdofoz:20180114234229j:plain

以上でマーカー認識の準備は完了です。
マーカーが認識できたことを確かめるため、マーカーの上に Cube オブジェクトを配置します。
これで HoloLens 上で実行してマーカーを見ると Cube オブジェクトが表示される……ハズですが、何故かマーカーを見てみても Cube は表示されず……。
(追記)
成功しました。原因は Cube オブジェクトを ImageTarget オブジェクトの子オブジェクトにしていなかったという凡ミスでした。
f:id:bluebirdofoz:20180115000016j:plain