見出し画像

【Unity】Vuforiaで立体マーカーのARを作ってみた

こんにちは! エンジニアの宮Pです😎
今回は立体オブジェクトをマーカーにしたARコンテンツを、Vuforiaを使って作ってみます。


はじめに

マーカーとして設定するのは、こちらの置物です。

マウスと比較すると大きさが分かるでしょうか…

「なんじゃ、こりゃ?」と思われるかもしれませんが、身近に面白そうな立体物が見つからず…
この牛が面白いかと言われると、そういう訳でもありませんが、マーカー選定に時間をかけるのも勿体ないので、これで進めましょう😁

Vuforia Model Target Generatorを用意

Vuforiaで立体マーカーを扱うには、Vuforia Model Target Generatorツールを使います。
DownloadsページのToolsを選んでVuforia Model Target Generatorが見つかったら、Winodws用のツールをダウンロードしてインストールします。

「Vuforia Model Target Generator」と毎回書くのは面倒なので、ここから先は「MTG」と省略します😉
MTGを起動すると、こんな画面が表示されます。

真ん中の[Create New Target]ボタンを押すと、こんなダイアログが表示されます。

WIDARで3Dモデル撮影

このMGTに読み込むための3Dモデルを作ります。
CADBlenderを使うのが王道ですが、もっと簡単にモデルを作りたいので、WIDARというツールを使います。
このWIDARは、複数の写真から3Dモデルを生成するというスマホ用のツールです。

WIDARのページには「スマホを使ってオブジェクトを周囲から撮影する様子」が動画で紹介されています。

スマホで簡単にスキャンできます

これを参考にして、牛さんオブジェクトを撮影したところ、結構いい感じのモデルが出来ました。

WIDARの性能のおかげです

右後ろ脚がちょっと怪しい感じですが、これは私の撮影スキルがイマイチなためです😥
CADやBlenderが使える人なら、このモデルを綺麗に仕上げるのも良いですね。

WIDARで作った3Dモデルをダウンロードするには、月額1,000円の課金が必要です。
「なんだ、無料じゃないの?」と思う人もいるかも知れませんが、簡単に3Dモデルを作れるツールは便利ですし、1ヶ月くらい試しに使ってみるのも良いんじゃないでしょうか😄

3Dモデルは数種類のフォーマットに対応していますが、今回は一般的なOBJ形式でダウンロードしておきます。
ダウンロードしたOBJファイルは、googleドライブやメール転送などを利用してPC側へコピーしてください。

MGTで3Dモデル変換

MGTに戻り、あらためて[Create]ボタンを押下して、モデルを読み込みます。
CAD Model横のSELECTボタンを押して、WIDARで作った3DモデルをのOBJファイルを選択します。

CAD Modelと書かれてますが、複数の形式に対応してます

[CTRATE MODEL TARGET]ボタンをクリックすると、3Dモデルが変換されて読み込まれます。

無事に読み込まれたら、回転や移動をさせて全体を確認します。
問題がなければ、[確定]ボタンで先に進みます。

まずは、モデルのサイズを選択します。
この牛さん、実際のサイズは全長15センチくらいなので、最も近いデジメートルを選択しました。
ところで「デシメートル」って一般的に使われる単位なのでしょうかね?
小学生の頃に「デシリットル」という単位を使って授業を受けた記憶はありますが、あれと同じ属性を感じます。
私が数学とは縁遠いから知らないだけで、「いや普通に使うよ」って話なんでしょうか…🙄
それはともかく、[選択]ボタンで次へ進みます。

今度は外観が「写実的か、非写実的か」を選択します。
ここでは、お勧めに書かれているように「実際のモデルをスキャンしているから」という理由で写実的外観を選びます。
[次のステップ]を押して先に進みます。

外観の選択の後、ポリゴン数を示す「三角形の数」という表示に変わりますが、そのまま[次のステップ]を押して進みます。

その次は、トラッキングの最適化タイプを変更します。
今回の牛さんは特徴がモデルなのでデフォルトを選択します。
[確定]ボタンで先に進みます。

最後にガイドビューを作成します。
モデルを色々な角度から眺めても認識できるようにアドバンスビューを作成を選択します。

ガイドビューの設定が続きます。
この牛さんの3Dモデルを作る際、オブジェクトの周囲をぐるっと撮影しました。このため、モデルはどの角度から見ても認識されるはずです。
360°ドームを選択して、あらゆる角度からオブジェクトが認識されるようにします。
ただし、説明に書かれているように真下からは認識できないので、オブジェクトは机の上に置かれている必要があります。

[次のステップ]をクリックすると、画面にドームが表示されます。このような感じで、このモデルをどの角度から眺めても認識されるようになります。
この後は画面の指示に従ってモデルターゲットを作成します。

籠の中の鳥ならぬ、牛

ターゲットが作成されるとメイン画面に戻ってきますので、モデルの名称と説明テキストを入力します。
その先は画面の指示に従って進みます。

モデルターゲットが追加されたら[TRAIN]ボタンをクリックして、画面の指示に従って進めます。このTRAINプロセスには少し時間が掛かります。
プロセスが終了するとボタンが[EXPORT]に変わり、unitypackageフォーマットとしてモデルをダウンロードできるようになります。

unitypackageのダウンロードが終わったら、MGTを終了してUnityへ場所を移します。

Unityプロジェクトを作成

いつものようにUnityで3Dのプロジェクトを新規作成します。
以前のプロジェクトを参考にしてください。

さすがに同じことを何度も書くのは気が引けるので、初期設定部分は簡単に述べる程度にします。
以前の記事を参考にして、以下の設定をします。
Build SettingsでAndroidを選択
Player Settingsを開いて諸々の設定
Vuforiaエンジンをインポート
・HierarchyウィンドウでAR Cameraを追加して、Main Cameraを削除
・Vuforiaライセンスキーの登録

モデルターゲットのインポート

さあ、ようやく目新しい作業をやっていきます。
…といっても、そんなに変わっていませんが。
良い方に解釈すると「同じやり方を踏襲して、色んなターゲットを設定できる」とも言えますね。そんなポジティブシンキングでいきましょう😄

AssetメニューのImport Package > Custom Packageの順に選択して、WIDARで生成したunitypackageファイルをインポートします。

インポートしたモデルターゲットをHierarchyに追加します。

初期状態だとカメラ位置が遠いので、ズームアップして牛さんモデルが配置されたことを確認します。

テクスチャは別に読み込まれてます

このモデルターゲットが認識されたときに出現させるARオブジェクトを設定します。
いつもCubeやSphereでは芸が無いので、今回はParticleを使ってみます!
…それも芸が無いとか言ってはいけません😅

牛から発する光とは

Particle SystemはModelTargetの子オブジェクトになるように配置してください。
ここでは座標を調整して牛さんの真ん中からパーティクルが発生するようにしています。
パーティクルの色や大きさ、速度などはプレビューで見ながら調整します。

実際の動作を確認

ビルドをして、実際の動きを見てみます。
ちゃんと牛さんを認識して、パーティクルを出現させています。
動画では斜め後ろからのアングルですが、頭のほうや、右側面など、どんな向きでも認識することができました😄

なんかよく分からないエフェクトです

まとめ

今回はVuforiaを使って、立体オブジェクトをマーカーとするARコンテンツを作ってみました。
WIDARを使うことで、身直な物体の3Dモデルを簡単に生成することができます。
フィギュアやアクスタなんかをターゲットにして、推しのARアプリなんかも作れそうですね(作る気ですよ、(ΦωΦ)フフフ…)

私たちは、お客様のご要望にあわせて様々なコンテンツ、アプリを制作いたします。
ご質問やご要望は、<お問い合わせページ>よりお送りください。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?