はじめに
最近ようやく前から興味のあったAR技術を触り始めました。
今回はUnity+VuforiaでサクッとAR(拡張現実)で動画ファイルを再生する方法を紹介します。
参考にしたのはこちらの動画。
Teaching UNITY to my GIRLFRIEND!
ちなみにUnityは2D・3Dゲームを作るのに使われるゲームエンジンで、VuforiaはUnityでよく使われるARライブラリらしいです。(詳しくは知らない。。)
(2018/10/18 11:05 追記)
VuforiaはUnity 2017.2 からUnityで公式サポートされており、Vuforia SDKはUnityに統合されたようです。
Unityでお手軽AR開発!vuforiaを使ってみる
前提条件
- Unityの基本操作
- VRとARの違いが分かる程度の知識
やりたい事
- ARマーカー(画像ファイル)がカメラに認識されたら動画ファイルが再生されるようにする
環境
- Mac 10.13.6 (High Sierra)
- エディタ:Visual Studio for Mac (Version 7.5.1)
- 開発言語:C#
- Unity (Version 2018.2.9fi Personal)
「Unity」をインストール (*インストールされていない場合)
「Unityを取得」から無料版をダウンロードしてきます。
https://unity3d.com/jp
【Unity】 AR Cameraを設置する
- 「Main Camera」は使わないので削除しておきます。

- 「メニューバー > GameObject > Vuforia > AR Camera」を選択し、「AR Camera」をSceneにインポートします。

- 「AR Camera」が設置されました。

- 次に 「メニューバー > File > Build Settings」を選択します。

- 「Player Settings」をクリックします。

- XR Settingsの「Vuforia Augmented Reality Supported」にチェックを入れます。

【Vuforia】 ARマーカーを用意する
-
以下のURLの「Register」から登録します。
https://developer.vuforia.com/ -
「Develop > License Manager」 で「Get Development Key」をクリック。





- 追加したデータベースをクリックするとこの様な画面が表示されるので、「Add Target」をクリックします。




【Unity】 ARマーカーをインポートする
- 「AR Camera」が選択された状態で「Inspector」の「Open Vuforia configuration」をクリックします。






- 追加したクワッドオブジェクトが選択された状態で「Inspector」の「Add Component」からビデオプレイヤーコンポーネントを追加します。

- ビデオプレイヤーコンポーネントの「Video Clip」が空なので、先ほどAssetsフォルダーに入れておいた動画ファイルをドラッグ&ドロップします。

- 「Play On Awake」と「Wait For First Frame」のチェックを外します。(最初から動画が再生されないようにします)

- 「Inspector」の「Transform」で動画が表示される座標を調整します。(お好みで)

- こんな感じに調整してみました。(かなり適当)

【Unity】 DeafultTrackableEventHandlerクラスを編集
- 「ImageTarget」を選択した状態で「Inspector > DefaultTrackableEventHandler(Script)」セクションの「Video Player」にクワッドオブジェクトをドラッグ&ドロップします。

- 「Script」の「DefaultTrackableEventHandler」部分をダブルクリックしてC#のファイルを「Visual Studio Code for Mac」で開きます。

- 以下のコードを追加します。
// 名前空間
using UnityEngine.Video;
// プロパティ
public VideoPlayer videoPlayer;
// OnTrackingEventFoundメソッドの先頭に追加
// ARマーカーが認識されたら動画が再生されるようにします
videoPlayer.frame = 0;
videI Player.play();
// OnTrackingEventLostメソッドの先頭に追加
// ついでにARマーカーの認識が外れたら停止するようにしておきます
videoPlayer.frame = 0;
videoPlayer.stop();
テストしてみる!

出来た!
無事登録したARマーカーをカメラが認識したら動画が再生されました!
※画像はXcodeでビルドしてiPhoneXに飛ばして試した時のものですが、実際はUnity上で「Play」を押してテストします。
感想
AR関連を今後もいじるかは不明ですが、とりあえずそれっぽいことができたのでお腹いっぱいです。