World Locking Tools QRSpacePins (2) |Hierachy構成と重要なクラス

こちらの記事の続きです.

xrdnk.hateblo.jp

使用環境

  • Unity 2019.4.2f1
  • Legacy XR (Built-in XR ではWLTは現在使えません)

Adjustment オブジェクト

カメラのオフセットや回転を調整するためにAdjustmentオブジェクトがあります.

f:id:xrdnk:20201102212342p:plain

World Locking Tools の特色です.

WorldLocking オブジェクト

f:id:xrdnk:20201102212526p:plain

WorldLockingManager

World Locking Tools の Manager クラスになります.これがHierarchyに配置されるとWLTが発動します.
WorldLockingContext.csがアタッチされており,こちらでWLTの設定ができます.

f:id:xrdnk:20201102212824p:plain

Camera Transform Links は正しく設定しないとWLTがうまくいきません.
Adjustment Frame には カメラの親のさらに上位概念の親… ここではAdjustmentになります.
Camera Parent は今回は MixedRealityPlayspaceになります.

AnchorGraphVisual

World Locking Tools の空間や世界がどうなっているかを視覚化します.
WLT.Toolsをインポートが必須です.これがあるとSponge空間やPinなど描写してくれます.

f:id:xrdnk:20201102213223p:plain

MarkerPinsRoot オブジェクト

このオブジェクト自体には意味がないですが,
その子である Barn_MarkerPins オブジェクトにアタッチされているものが重要だったりします.

f:id:xrdnk:20201102213527p:plain

f:id:xrdnk:20201102213538p:plain

QRCodeMiniManager

WLT-QRCode におけるManagerクラスです.このクラスでQRCodeの読取を行ってくれます.
スクリプトを読むと,Microsoft.MixedReality.QR.QRCodeWatcherのラッパークラスであることがわかります.
追加,更新,削除,数え上げ完了を通知・検知します.

FYI:

xrdnk.hateblo.jp

QRSpacePinGroup

Marker Highlight Prefab

QRCodeの位置合わせが完了した際に,表示するオブジェクトです.
デフォルトでは黄色い四角のオブジェクトになっています.
自分でPrefabを作ってオリジナルなものを表示するのもよいと思います.

Shared Orienter と Virtual Markers

Orienterスクリプトがアタッチされているオブジェクトを設定します.
仮にSharedOrienterが何も設定されてない場合は,QRSpacePinGroupがアタッチされているオブジェクトに
自動的にOrienterクラスがアタッチされ,SharedOrienterとして設定されます.

Virtual Markers には QRCode位置合わせに利用したいオブジェクトを設定します.

HouseHoldオブジェクトの構成は以下のようになっています.

f:id:xrdnk:20201102214628p:plain

QRCode位置合わせに利用するオブジェクト群(QRCode_X)の親がMarkersになっています.
親には Orienter クラスをアタッチする必要があります.

また,QRCode位置合わせに利用するオブジェクト群の名前はQRCode_1,QRCode_2,QRCode_3,・・・となっていますが,
QRSpacePinGroup.csのスクリプトを読むと命名規則があり,以下の通りになります.

適当な英数字 + "_" (アンダーバー) + X (1以上の数字)
ex. ) QRCode_1,XRDNK_2

数字を0にしたときはエラーが出ました.配列範囲外エラーだったかな.
アンダーバーの前の文字は何でもよかったと思います.XRDNK_2は読み込めました.QRCodeじゃなくてもよい.

QRCodeを作成する際は,文字列データに位置合わせに利用するオブジェクト群の名前と一致する必要があります.

Virtual Markers の向きなどに関しては細心を払う必要がありますが…続きは後日.