Mega トラッキングターゲットの追加
この記事では、Mega のトラッキングターゲットを追加する方法と、開発を支援するために Unity エディタで環境モデルをロードする方法について説明します。
開始前に
- 自分のローカライゼーションライブラリは使用可能ですか? を確認してください
- EasyAR プラグインの最新バージョンをインポートして Mega 機能を有効化する
- Unity AR のトラッキングターゲット の基本概念と使用方法を理解する
注記
以下の内容およびツールは、EasyAR Mega を使用した Unity アプリ開発プロセスにのみ適用されます。
ミニアプリを開発している場合は、Unity エディタを使用した注釈の作成とアップロード(ミニアプリ開発) を参照してください。
Mega マッピング結果を表示したいだけの場合は、Mega 使用ガイドの 3D 実景メッシュのプレビュー を参照してください。
ローカライゼーション効果をシミュレート実行して確認する必要があるが、使用可能な Unity アプリケーションプロジェクトがない場合は、Mega 使用ガイドの シミュレーション効果プレビュー を参照してください。
Mega のトラッキングターゲット
Mega のトラッキングターゲットは、BlockController コンポーネントを含む空のオブジェクトで、block と呼ばれます。シーン内では、block は BlockRootController コンポーネントを含む空のオブジェクトの下に編成されます。このオブジェクトのデフォルト名は MegaBlocks です。MegaBlocks 下のすべての block オブジェクトは、現在のローカライゼーションライブラリ内のすべてのトラッキングターゲットを表します。

開発では、3D コンテンツの表示や配置を支援するために block モデルを使用することがよくあります。このモデルは、ツールを使用してシーンにロードでき、表示や参照に便利です。

モデル位置は block トラッキングターゲットと整列しているため、モデル上に直接 3D コンテンツを配置できます。
ヒント
モデルはツールノード下に保存され、エディタモードでのみ存在し、最終アプリケーションにバンドルされません。
エディタでのトラッキングターゲットの追加
この方法を使用するには、BlockHolder.BlockRootSource を External(デフォルト)または Mixed に設定する必要があります。

Block viewer for unity developer ツールの追加
Hierarchy ビューの 空白部分 を右クリックし、メニュー EasyAR Mega > Tool > Block Viewer for Unity Developer (Edit Mode) から Unity 開発用の Block Viewer ツールを追加できます。

重要
Unity で Mega アプリを開発する場合、Block Viewer for Unity Developer ツールを使用する必要があります。EasyAR Mega > Tool メニューの他のツールは Unity アプリ開発には適していません。
Annotation Tool にも同様の機能がありますが、このツールの一部機能は将来のバージョンで削除されるため、使用は推奨されません。
Annotation Tool の注釈機能(注釈自体)はまもなく EasyAR 開発センター Web に移行されますが、block mesh のロードとモデル配置には影響ありません。
ツールが正常に追加されると、シーンレイヤーに EasyAR.Mega.BlockViewer (Dev) ノードと MegaBlocks ノードが追加されます。

トラッキングターゲットの生成 —— block
EasyAR.Mega.BlockViewer (Dev) ノードを選択し、Inspector パネルで EasyAR アカウント情報を入力してログインします。

Mega Cloud Service の右側のボタンをクリックします。

使用する Megaローカライゼーションサービス を選択し、OK をクリックします。

サービスを選択すると、現在のライブラリ内の block リストが MegaBlocks ノード下に表示され、ツールパネルにも表示されます。

ここまででトラッキングターゲット block が生成されました。MegaBlocks ノード下の各 Block_ で始まる子ノードが block トラッキングターゲットを表します。
Block モデルのロード
選択したBlockをロード をクリックします。

ロードが完了すると、Block が Scene ウィンドウに表示されます。

ローカライゼーション成功時の自動トラッキングターゲット追加
この方法を使用するには、BlockHolder.BlockRootSource を Internal または Mixed に設定する必要があります。
これらのモードでは、新しい block がローカライズされ、かつ BlockHolder.BlockRoot ノード下にその block がない場合、新しい block が自動的に BlockHolder.BlockRoot ノード下に追加されます。BlockHolder.BlockRoot が存在しない場合は自動的に作成されます。
ヒント
ローカライゼーション成功時にトラッキングターゲットを自動追加する場合、block モデルをロードすることはできず、block トラッキングターゲットのみを追加できます。
スクリプトでのトラッキングターゲットの追加
この方法を使用するには、BlockHolder.BlockRootSource を Internal または Mixed に設定します。この場合、BlockHolder.BlockRoot が存在しない場合は自動的に作成されます。または、BlockHolder.BlockRootSource が External の場合、エディタで事前に BlockHolder.BlockRoot オブジェクトを指定することもできます。
注記
block がローカライゼーションライブラリにない場合、スクリプトを使用してシーンに追加しても、block はローカライズできません。
BlockHolder.Hold メソッドを使用して、新しい block を BlockHolder.BlockRoot ノード下に追加できます。このメソッドは通常、ema 注釈ファイルを使用する場合、スクリプトが注釈情報を読み取った後に block を追加するために使用されます。
たとえば、次のコードスニペットは、注釈ファイル内の情報を使用して block を追加する方法を示しています:
foreach (var item in ema.blocks)
{
var info = new BlockController.BlockInfo { ID = item.id.ToString(), Timestamp = item.timestamp };
if (!item.keepTransform && item.location.OnSome)
{
blockHolder.Hold(info, item.location.Value);
}
else
{
blockHolder.Hold(info, item.transform.ToUnity());
}
}
ヒント
スクリプトを使用して実行時にトラッキングターゲットを追加する場合、block モデルをロードすることはできず、block トラッキングターゲットのみを追加できます。