この記事のゴール

QuestCameraTools-Unityを使ってQRコード式のARを実装する.

以下の記事で「QuestCameraTools-Unity」が紹介されていたので,QRコード式のMRを実装してみました.
https://zenn.dev/hololab/articles/quest-camera-tools

QuestCameraTools-Unityはサンプルシーンが2つありますが,このブログでは「QRTracking-6000」のみ実装します.

このサンプルプロジェクトではEnvironmentRaycastManagerで,QRコードの2D画像座標を3Dレイに変換し,部屋のメッシュに当ててQRコードのワールド空間位置を取得する工程があるため,事前にMetaquestでSceneを取得した空間でないと使えないです
屋外でMRを使える手段としてマーカーベースの位置合わせ手法を探していたのですが,Metaquest+屋外+MR+位置合わせはまだ難しそうです.

プロMジェクト作成と環境設定

Unity 6.0 (6000.0.48f1) LTSでプロジェクト作成し,以下のプラグインを追加する.

  • Meta XR Core SDK v74以上
  • Meta XR MR Utility Kit v74以上
  • Unity Sentis ※Package ManagerのUnity Registryで「sentis」と検索
  • Unity Open XR Meta ※Depth APIの有効化のため Package ManagerのUnity Registryで「openxr」と検索

Project SettingでXR-Plugin Managementを有効化し,OpenXRにチェック.

QuestCameraTools-Unityのダウンロードとプロジェクトへの追加

サンプルデータのダウンロードとプロジェクトへのコピー

QuestCameraTools-UnityのGithubにアクセスし,リポジトリをクローンするかZIPをダウンロードする.
https://github.com/HoloLabInc/QuestCameraTools-Unity

作成したプロジェクトのAssetsフォルダに,QuestCameraTools-Unity-main\unity\QRTracking-6000\Assets\Appをコピーする.

manifest.jsonの編集

作成したプロジェクトのPackages\manifest.jsonを開き,”dependencies”{}内に以下の3行を追記する.一番下の行でいい.
※UnityのProject内では開けないので,Windowsの方で開く.

manifest.jsonを保存してUnityの画面に戻るとパッケージのロードが始まり,Project/Packagesに以下のフォルダが追加されている.

  • Quest Camera Tools Core
  • Quest Camera tools QR
  • Quest Camera tools QR Libraries

AndroidManifest.xmlの編集

作成したプロジェクトのAssets\Plugins\Android\AndroidManifest.xmlを開き,<manifest></manifest>内に以下の2行を追記する.一番下の行でいい.

QuestCameraTools-Unityと関連したUnity-PassthroughCameraAPISamplesの要件にて,Unity 6を使う場合は上記のAndroidManifest.xmlの4行目の<activity…>の記載のうち,(かなり後ろの方)
android:name=”com.unity3d.player.UnityPlayerActivity”を
android:name=”com.unity3d.player.UnityPlayerGameActivity”に修正するとあるが,デフォルトで修正済みだった.念のため記載.

サンプルシーンの実行

作成したプロジェクトのAssets\App\Scenes\ArbitraryQRTrackingSample.unityをダブルクリックしてサンプルシーンを開く.
このままビルドすれば使用できる.
QRコード(初期設定では指定はなく,QRコードと認定すればどんなものでも可)をかざすとURLなどQRコードの中身と座標軸の3Dモデルが表示され,QRコードを移動すれば位置が追随されるのが確認できる.