じゅころぐAR

ARのブログ

Unity2017.2.0b2のTangoサポートについて(わかったところまで)

TangoがUnityサポートされると話題になっていたUnity2017.2が既にベータリリースされているらしく、インストールして試してみました。

unity3d.com

前置き

環境構築でハマってビルドエラーが出たので、まだ実機での動作を試せていません。
他にやりたいこともあり、一旦環境を戻そうかな・・・ということで、戻す前に書き留めておこうという趣旨の記事です。

発生したビルドエラー

f:id:jyuko49:20170708105903p:plain

Tangoを有効にするとAndroid 6.0以上を求められるので、Android SDKを上げたせいかな・・・と思いつつ、調べたらIssueも上がってて、Unity2017.1以降で起きるっぽい?

issuetracker.unity3d.com

Unity5.6に戻したら起きないのかな?ということで、この記事を書いたら戻してみる。 → 戻してもダメでした... → JDKのバージョン上げたら直った

終わらないChecking license

Unity起動時のライセンス確認の挙動がおかしくて、Checking licenseが点滅したまま、ずっと終わらない問題が起きています。Personalだから煽られているんだろうか・・・。

f:id:jyuko49:20170708110934p:plain

仕方ないので1回サインアウトして、"sign in"しようとするも、ボタンが反応しないのでUnity再起動してサインイン・・・を毎回やる羽目になっています。

Tangoサポートの概要

ここからが本題です。

Tangoを有効にする

"Switch Platform"でビルドターゲットを"Android"にします。
"Player Settings"に"XR Settings"に"Tango Supported"の項目があるので、チェックを入れます。

f:id:jyuko49:20170708114312p:plain

Tango SDK for Unityは、"Minimum API Level"がAndroid 4.2 (API 17)以上でビルドできますが、UnityのTangoサポートではAndroid 6.0 (API 23)以上に設定が必要で、その警告が出ています。

"Other Settings"で"Minimum API Level"をAndroid 6.0に変更すると警告が消えます。 f:id:jyuko49:20170708111826p:plain

メッシュ構成(3DR)のコンポーネントが追加されている

"Component" > "AR"にTango用のコンポーネントが2つありました。
一番上の"World Anchor"は、HoloLensで空間座標を固定するComponentだったはず。Tangoでも共通で使えたらいいなと思っていたりはします。

f:id:jyuko49:20170708111250p:plain

Tango Mesh Reconstruction Server

ネーミングからしてメッシュ再構成を行うためのコンポーネント。
正直なところ、後述の"Tango Spatial Mapper"との使い分けがわからないです。

f:id:jyuko49:20170708114852p:plain

Tango Spatial Mapper

メッシュ構成した結果を空間マッピングするためのコンポーネント。
Create Emptyして、このコンポーネントをアタッチすれば、Tango SDKの"Dynamic Mesh"みたいな動きをするんじゃないかと思っている。が、ビルドが通っていないのであくまで妄想です。

f:id:jyuko49:20170708114947p:plain

パラメータについては、Tango SDK向けにまとめた記事で大体わかるかと。
どちらもTango_Configをラップしているはずで、大きな違いはなさそうです。

qiita.com

qiita.com

スクリプトからTangoの機能を使う

コンポーネントを見た感じ、Tango関連は上記の2つしか見当たりませんでした。
他の機能は使えないのかなと探したところ、自作スクリプトからの利用はできそうでした。

UnityEngine.XR.TangoというNameSpaceでスクリプトのコンパイルが通るところまでは確認しています。

f:id:jyuko49:20170708112106p:plain

PointCloud、AreaLearning、PoseData、ImageDataが使えそうなことは確認できました。
ただ、クラス構成はTango SDKと微妙に違う気がするので、Tango SDKのサンプルをコピーして動くかは疑問です。移行しようとなると、ちょっと面倒なことになりそう。

所感

メッシュ構成がComponentで提供されている点は良いと思います。
PointCloudの更新やメッシュ構成の速さは、Tangoの強みの一つだと思うので、Unityでサポートされることでパフォーマンスがさらに上がるならメリットは大きい。

その他の機能もスクリプトを書けば動きそうですが、ゼロからスクリプトを書いて動かすというのは、経験者からしても相当に敷居が高いです。
Unity公式のマニュアルは個人的にイマイチかなと思っていて、Tangoに関してもあまり期待していません。誰かががんばって調べてブログに上げたり、書籍化してくれるといいんですけど。

という訳で、パフォーマンスにこだわりがなければ、Googleから提供されているTango SDK for Unityを使った方がExamples、Prefabsを参考にできて開発効率は良いんじゃないですかね。
ドキュメントやコメントの充実度からしても、Tango SDKを使った方が学習しやすいと思う。

Build new augmented reality experiences that seamlessly blend the digital and physical worlds