本日は HoloLens の技術調査枠です。
HoloLens で Vuforia を利用し、ARマーカー上にオブジェクトを表示します。
Vuforia Developer Portal |
事前にARマーカーとして利用する画像ファイルを用意しておく必要があります。
JPEG もしくは PNG でファイルサイズが 2MB 以下であるものが利用可能です。
Vuforia 自体は以前 android アプリで試したことがあり、アカウントは取得済みです。
ログインを行い、ライセンスキーを取得するところから始めます。
以下の通り、既にライセンスキーを取得済みであれば、これを開いてライセンスキーの文字列をコピーします。
未作成であれば Get Development Key もしくは Buy Deployment Key でライセンスキーを取得します。
Development のみ無料です。Development の場合、個人利用する自作アプリでのみ利用可能です。
次にライセンスキーを取得したら、マーカーの登録を行います。
まずはマーカーを登録するデータベースを作成します。TargetManaer を選択し、Add Database をクリックします。
データベースの作成画面が開きます
データベースの名前を設定し、Type で Device を選択して Create をクリックします。
データベースを作成したら開きます。
するとデータベースの設定画面が開くので、Add Target をクリックします。
マーカーの登録画面が開きます
ARマーカーの形によって Type を選択します。今回はただの画像なので SingleImage を選択します。
File に用意した画像を選択します。
Width は利用するマーカーの大きさを設定します。単位はメートルです。
例えば 2 を設定すると Unity のシーン内でマーカーは 2m × 2m の物体として認識されます。
Name には選択した画像のファイル名が自動で入力されます。
最後に Add をクリックして登録します。
マーカーが作成されるので、選択して Download Database を選択します。
このとき、画像の認識のしやすさが星マークで評価されています。
星5つならば認識しやすい画像という事です。特徴点が多くコントラストが高い画像程よいようです。
プラットフォームの選択画面が表示されます。
Unity Editor を選択し、Download をクリックします。
実際に HoloLens で試すため、Unity のテストプロジェクトを作成します。
Unity 上で Vuforia を利用するため、以下の Download Unity Extension からSDKパッケージを取得します。
SDK Download | Vuforia Developer Portal
Vuforia からダウンロードした SDK と ARマーカー の unitypackage をインポートします。
Vuforia からダウンロードしたマーカーの unitypackage をインポートします。
Vuforia/Prefabs ディレクトリにある ARCamera.prefab と ImageTarget.prefab をシーンに配置します。
最初に ARCamera の設定を行います。
配置した ARCamera を選択し、Inspector から Open Vuforia Configuration を選択します。
App License Key の欄に取得したライセンスキーをペーストします。
HoloLens のカメラを利用するので Digital Eyewear の欄を、以下の通り設定します。
EyewearType:Optical See-Through
SeeThroughConfig:HoloLens
また、Datasets の欄に、読み込んだデータベース名が表示されているので Load ~ Database と Active にチェックを入れます。
ARCamera の Inspector に戻り、Central Anchor Point に MixedRealityCameraParent 内の MixedRealityCamera を設定します。
次に ImageTarget の設定を行います。
配置した ImageTarget を選択し、Inspector の Database と ImageTarget を登録したマーカーに設定します。
読み込み時のままだと画像の Texture Shape が Cube になっているため、2D に変更して Apply を実行します。
以上でマーカー認識の準備は完了です。
マーカーが認識できたことを確かめるため、マーカーの上に Cube オブジェクトを配置します。
これで HoloLens 上で実行してマーカーを見ると Cube オブジェクトが表示される……ハズですが、何故かマーカーを見てみても Cube は表示されず……。
(追記)
成功しました。原因は Cube オブジェクトを ImageTarget オブジェクトの子オブジェクトにしていなかったという凡ミスでした。