見出し画像

[Unity]VuforiaでCylinderターゲットのARを作ってみた

こんにちは! エンジニアの宮Pです😎
前回に引き続き、Vuforiaを使ってARコンテンツを作ってみます。

前回は「Image」をマーカーにして、A4用紙に印刷したイラストを読み込ませてARを表示させました。

今回は「Cylinder」、つまり円筒をマーカーにしてみます。

VuforiaのDatabaseを登録

まずはVuforiaのDeveloper Portalを開いて、ターゲットを追加していきましょう。

ログインしてみたら、この数週間の間にホーム画面のメニューが変更されたようです。
…でも前回のVuforiaの記事への影響は小さいので、アップデートは無しにしましょう😅

前回の記事では「Develop」を選んでから「Target Manager」と述べましたが、今回(2024年3月時点で)は直接「Target Manager」を選んでください。

Target Manager画面に移ったら[Add Database]ボタンをクリックしてDatabaseを作成します。
Database Nameには任意の名前を入れてください。
Typeは前回と同様に「Device」のままにしておきます。

今回使うCylinder用のターゲットが追加されました。

この追加されたデータベースを選択、[Add Target]ボタンをクリックして新たにターゲットを追加します。

Cylinder情報を設定

A4用紙に弊社ロゴを印刷して、これを円筒にしたものをターゲットとして使います。
この円筒の情報をVuforiaで定義していきます。

写真だと分かりづらいですが、筒状に紙を丸めています

Add Targetダイアログが表示されたら、「Cylinder」を選択して必要な情報を入れていきます。
Bottom Diameter / Top Diameterは上面と下面の直径です。今回はA4用紙を丸めて円筒を作るので、21センチ÷π(3.14)で約6.7センチ。Unity上で「1.0」は1メートルなので、0.067と入力します。
Side Lengthは円筒の高さです。A4縦サイズの29.7センチを0.297と入力します。
Nameには何か分かりやすそうな名前を入力してください😉

こんな感じでCylinderターゲットが追加されました。

このターゲット(画面の例では「Bunmeisha_Cylinder」)をクリックすると、実際のマーカーの様子が表示されます。

この円筒にテクスチャを貼り付けます。
いつもの弊社ロゴをA4縦にレイアウトしたものです。ロゴ自体は正方形に近いサイズなので、用紙の3分の1くらいには何も書かれていませんが、全面に描かれたイラストをテクスチャとしても問題はありません。

「Upload Side」をクリックして、この画像をアップロードすると、Cylinderにテクスチャが貼り付けられます。

上部メニューの「Cylinder_Sample」部分をクリックして、Databaseの管理画面に戻ります。
テクスチャを貼ったデータベースにチェックを入れて、[Download Database  (1)]ボタンをクリックしてください。

Download Databaseダイアログでは「Unity Editor」を選択します。

Vuforiaのエンジンもアップデートされていたので、ver.10.21をダウンロードしておきます。

Unityプロジェクトを作成

前回と同様に、Unityで3Dのプロジェクトを新規作成します。
Vuforiaを使うために、Unity側で以下の設定をおこないます。
Build SettingsでAndroidを選択してSwitch Platformする
Player Settingsを開いて、RederingのAutoGraphics APIのチェックを外す
・Graphics APIsからVulkanを削除する
・IdetificationのMinimum API LevelAndroid 8.0 ‘Oreo’ (API lever 26)にする
・ConfigurationのScripting BackendをMonoからIL2CPPにする
・同じく
ConfigurationのTarget ArchitecturesのARMv7のチェックを外し、ARM64にチェックを入れる

いつも面倒な設定ですけど、なんとなく慣れてきました

AssetメニューのImport Package > Custom Packageの順に選択して、ダウンロードしたVuforiaエンジン(add-vuforia-package-10-21-3.unitypackage)をインポートします。
チェック項目はそのままで[Import]ボタンをクリックしてください。
インストール中にVuforia Engineのアップデートを促すダイアログが表示されたら、[Update]ボタンをクリックしてエンジンを更新してください。

初期設定はこれで終わりです。
いよいよARコンテンツを作っていきます。
前回の記事ではちょっと省略しすぎたようなので、今回はもう少し丁寧に解説していきます😉

Hierarchyウィンドウを右クリック、Vuforia Engine > AR Cameraの順に選択して、シーンにARカメラを追加します。
元からあったMain Cameraは削除してください。

Vuforiaライセンスキーの登録

この先の処理を進めるために、Vuforiaのライセンスキーも登録しておきます。
AR CameraのInspectorダイアログで「Open Vuforia Engine Configuration」をクリックしてください。

App License Keyに前回のImage Targetと同じライセンスキーを貼ります。
ライセンスキーをメモしておいたファイルを無くしてしまった場合には、[Add License]ボタンをクリックしてください。
VuforiaのLicenseページが開かれるので、そこからライセンスキーをコピーして貼り付けてください。

Cylinderマーカー登録

AssetメニューのImport Package > Custom Packageの順に選択して、Vuforiaのサイトで生成したCyliderマーカーのunitypackageファイルを選択します。

ProjectダイアログでAssets > Editor > Vuforia > CylinderTargetTexturesの中を確認すると、Vuforiaのサイトで作ったターゲットが追加されていることが分かります。

Hierarchyウィンドウを右クリックして、Vuforia Engineの中からCylinder Targetを追加します。

Inspectorを見ると、Database、Cylinder Targetに今回作ったターゲットが設定されています。
もしも設定されていない場合は、それぞれのプルダウンメニューから設定してください。
Sceneビューでズームアップすると、例のターゲットが見つかります。

ARオブジェクトを追加

この円筒マーカーを検出したときに表示させるオブジェクトを作ります。
今回はオレンジ色のCubeを作りました。
サイズは10センチ四方にしたいので、ScaleのXYZをそれぞれ0.1にしています。
このCubeがCylinder Tagetの子オブジェクトクトになるようにHierarchyダイアログにドラッグ&ドロップしてください。

CubeをDuplicateして4つに増やしてみました。

なおかつ、前回使ってスクリプトを貼り付けて、円筒の上空でCubeがクルクル回るようにします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class rotate : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        Transform myTransform = this.transform;
        myTransform.Rotate(0.5f, 0.5f, 0.5f);
    }
}

ビルドをした後、Android端末にインストールして、正常に動作するかを確認してみます。

Unity上で定義したように、円筒の上空に4つのCubeが表示されました。

まとめ

今回はVuforiaを使って、Cylinderターゲットを認識するARコンテンツを作ってみました。
Cylinderを作成する画面では、上面と下面のサイズをそれぞれ異なる値にも設定できます。つまり「先端が細くなっている」ものや「逆三角形に見える」ものもターゲットにすることができます。

この記事の前半のほう、Vuforiaのサイト内での設定は一見複雑そうに見えますが、実際にやってみると割とサクサクと進められます。
前回の記事も参考に、ぜひ色んなマーカーを作って試してみてください😋

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


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