トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

ImagineWebARアセットのWorldTracker【Unity】

こちらのアドカレに参加しています

adventar.org

前回ImagineWebARアセットのImageTracker機能を使ったので、今回はWorldTrackerを使う

bibinbaleo.hatenablog.com

こちら

assetstore.unity.com

この記事での環境

Unity2022.3.7

Imagine WebAR - World Tracker Version 1.3.1

今回作ったもの

マーカーなしで、平面にキャラクターが表示される。読み込みがかなり時間かかるかも?

bibinba.github.io

キャラがこっちを見てくれます。

公式デモ

デモページがUnityアセットページから見れる

webar.imaginerealities.com.au

3種類ある

置く場所を選ぶ

表示される

なんか精度があまりよくない。回り込んだら位置が変わる。あとすごいカメラが広角

デバッグカメラモードがある

3DofVFX

2本指で回転や大きさ変更ができる。移動もできるっぽいけどなんか操作が難しい。思ったようにできない

作る

シーンにWorldTrackerとARCameraを追加。

(ドキュメントに書いてあるWorldCaneraは昔のバージョン、今はARCameraに統一された)

WorldTrackerの2か所に、追加したARCameraをセット

スワイプなどの操作設定もここにあるので、いらなかったらコンポーネント消したらよさそう

MainObjectの下に表示したいものを置く

ビルドするときはwTrackerのテンプレートを選ぶ

これでビルドして前回と同じくGithubPageにUpした。

bibinba.github.io

Placementインジケーターは出たけど、オブジェクトがなんか画面に引っ付いて表示される。空間に出ない

しょうがないのでデモシーンでモデルを置き換えてビルドしたらちゃんと出た。

さっきの公式のデモページよりトラッキング精度いい気がする。バージョンが上がったてるからかな?

あとオブジェクトの大きさは何で決まっているんだろう?Unity内では1.8mぐらいあるキャラクターだけど、ARだと半分ぐらいの大きさしかない

各種設定

いろいろな設定はWorldTrackerでできる。大体の項目の説明はドキュメントに書いていたが、MaxPixelsとMaxPointsが書いてない

discordで検索したけど出てこない・・・

聞いてみたらすぐに回答してくれた!

Basically, these can be used to boost the tracking quality at the expense of framerate. Max pixels is the length of the camera image to be processed, and max points are the number of feature points being tracked.

基本的に、これらはフレームレートを犠牲にしてトラッキング品質を高めるために使用できます。 最大ピクセルは処理されるカメラ画像の長さであり、最大ポイントは追跡される特徴点の数です。

どっちも高くしたらフレームレートを犠牲にトラッキングよくなるのかな?

追記:ver1.4

フレームレートがあがったらしい

• [修正済み] 高解像度デバイスでフレーム レートが大幅に低下するバグ。 また、すべてのデバイス全体で全体的なパフォーマンスとフレームレートも向上しました
• [追加] 3DOF モードと連携して動作する実験的な地理位置情報機能。 ゲームオブジェクトを GPS 座標に固定できるようになり、ユーザーが近くにいるときに探索できるようになりました
• [追加] 地理位置情報に必要な実験用コンパス機能
• [追加] 実験的な 3DOF オービットモード
• [追加] 3DOF モードの ExtraSmoothing プロパティを使用して、モーション センサーのノイズを滑らかにします。
• [追加] 画像トラッカーとの実験的な相互運用性。 Image Tracker バージョン 1.7.0 と同じプロジェクトで使用できるようになりました。
• [修正済み] iOS 17 で Chroma ビデオが切り取られる傾向があるという重大な問題。
• [修正] カメラフィードが暗く/黒くなる潜在的なバグ
• [追加] UnpausePauseOnEnableDisable および PauseOnDestroy は、ARCamera の Monobehaviour イベント OnEnable、OnDisable、および OnDestroy で UnpauseCamera() および PauseCamera() を自動的に呼び出します。

アップデートしたら既存のシーン壊れた。

ARCameraとWorldTrackingプレハブの構造が変わっているっぽいので、新しく追加してUIとかいろいろ置き換えた。

あとWebGLのテンプレートもフォルダコピーしてカスタマイズしていたけど、元のを使わないと動かない。

うまく動いてもGPSのダイアログがiOSだと出てくる。使わないならindex.htmlのこの部分をコメントアウトすると出なくなった

追記:カメラが遠くなるとアバターの髪が爆発する

VRMアバターをARで表示したとき、スマホでアバターからカメラを遠ざけると髪がぶわっとなる。

おそらく実際にカメラとアバターの距離を変えているのではなく、アバターを小さくすることで離れているように見せているせい。

このWorldTrackerの6DofSettingsのdepthModeを変えたら治った

ちなみにこれをやる前にモデルサイズを変えても爆発しないようにVRMのコードを変更したりもしたけど、Editorではちゃんと爆発しなくなるが、なぜかビルド状態だと爆発した;;

mu-777.hatenablog.com