じゅころぐAR

ARのブログ

AR Foundation 3.0.1の変化点まとめ

Unity2019.3が正式リリースされたので、Unity2019.2.18f1からUnity2019.3.0f6にアップデートして、AR Foundationも3.0.1にしたのですが、以前のバージョンとの差異が目立つようになってきました。
同じところでハマる人もいそうなので、気づいた点をまとめておきます。

Tracked Pose Driver -> AR Pose Driver

AR Session OriginのAR Cameraに付いていた"Tracked Pose Driver"が削除され、"AR Pose Driver"になっています。
厳密には、XR Legacy Input Helpersというpackageに移動されており、移行期間です。

AR Foundationのアップデートを行った際、上記の要因で"Tracked Pose Driver"が外れて、ScriptがMissingになることがあります。これに気付かずに実機で動かすと、配置したオブジェクトがその場に留まらずカメラに付いてきてしまいます。

回避するには、AR Cameraに"AR Pose Driver"をAdd ComponentすればOKです。

f:id:jyuko49:20200130233738p:plain

ARKit Background Material

iOSのカメラ映像のレンダリングに使われているシェーダーがARKit XR Pluginにあるのですが、シェーダーが"標準"、"LWRP"、"URP"の3つになっていました。

f:id:jyuko49:20200130230204p:plain

また、標準のシェーダー名が"Unlit/ARKit"から"Unlit/ARKitBackground"に変わっています。
"Unlit/ARKit"をマテリアルにセットして使っていた場合、シェーダーのパスが切れてしまうため、世界がピンク色になります。

一方、新しく追加された"ARKit LWRP Background"と"ARKit URP Background"の方ですが、AR Foundationをアップデートすると、なにやらシェーダーのInspectorにエラーが出ています。

f:id:jyuko49:20200130231543p:plain

文言から"Lightweight RP"、"Universal RP"、"Core RP Library"のpackageを追加すればエラーが消える・・・かと思いきや、消えません。
上記のpackageをインストールした上で、LibraryフォルダにあるShaderCache、PackageCacheを消して、Unity再起動したら出なくなりました。

AR Backgroundのマテリアル変更が効かない?

同じくAR Session OriginのAR Cameraに"AR Background"というスクリプトがあるのですが、こちらの仕様も微妙に変わっています。

まず、以前はあった"Use Custom Renderer Asset"のプロパティはなくなり、"Use Custom Material"だけになりました。

f:id:jyuko49:20200130234949p:plain

この"Custom Material"は外部のスクリプトで置き換えることができます。

m_ARCameraBackground = GetComponent<ARCameraBackground>();
m_ARCameraBackground.customMaterial = material;

以前のバージョンでは、変更すると次のフレームから即座にマテリアルが適用されたのですが、3.0.1では特に切り替わらず・・・。
仕様変更なのかバグなのかわかりませんが、ちょっと使いにくくなりました。

スクリプトの中身を見比べると、UpdateMaterial()というメソッドがどっか行ったので、URP対応の犠牲になったのかもしれません。

AR Human Body Managerの消失

ARKit3のボディートラッキングとピープルオクルージョンができるやつです。
3.0.0-previewで利用可能でしたが、3.0.1リリースで無事消えました。

この件に関しては、

  • 3.0.0-previewには"AR Human Body Manager"がいます。
  • 3.0.1には何もない。あくまでpreviewの位置付け?
  • 3.1.0-previewは、"AR Human Body Manager"(ボディートラッキング)と"AR Occlusion Manager"(ピープルオクルージョン )に機能が分かれていて、同時実行はできない??

という状況のようです。

ARKit3をやる場合は3.1.0-previewを使うべきかと思うのですが、上記の理由で3.0.0-previewの方が使い勝手は良かったりします。
3.1.1とかで同時実行できるようにならないかな。

まとめ

どうにも仕様が安定しないので、技術書典に出す本にどう書こうかな・・・と悩み中です。