TangoがUnityサポートされると話題になっていたUnity2017.2が既にベータリリースされているらしく、インストールして試してみました。
前置き
環境構築でハマってビルドエラーが出たので、まだ実機での動作を試せていません。
他にやりたいこともあり、一旦環境を戻そうかな・・・ということで、戻す前に書き留めておこうという趣旨の記事です。
発生したビルドエラー
Tangoを有効にするとAndroid 6.0以上を求められるので、Android SDKを上げたせいかな・・・と思いつつ、調べたらIssueも上がってて、Unity2017.1以降で起きるっぽい?
Unity5.6に戻したら起きないのかな?ということで、この記事を書いたら戻してみる。 → 戻してもダメでした... → JDKのバージョン上げたら直った
終わらないChecking license
Unity起動時のライセンス確認の挙動がおかしくて、Checking licenseが点滅したまま、ずっと終わらない問題が起きています。Personalだから煽られているんだろうか・・・。
仕方ないので1回サインアウトして、"sign in"しようとするも、ボタンが反応しないのでUnity再起動してサインイン・・・を毎回やる羽目になっています。
Tangoサポートの概要
ここからが本題です。
Tangoを有効にする
"Switch Platform"でビルドターゲットを"Android"にします。
"Player Settings"に"XR Settings"に"Tango Supported"の項目があるので、チェックを入れます。
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に変更すると警告が消えます。
メッシュ構成(3DR)のコンポーネントが追加されている
"Component" > "AR"にTango用のコンポーネントが2つありました。
一番上の"World Anchor"は、HoloLensで空間座標を固定するComponentだったはず。Tangoでも共通で使えたらいいなと思っていたりはします。
Tango Mesh Reconstruction Server
ネーミングからしてメッシュ再構成を行うためのコンポーネント。
正直なところ、後述の"Tango Spatial Mapper"との使い分けがわからないです。
Tango Spatial Mapper
メッシュ構成した結果を空間マッピングするためのコンポーネント。
Create Emptyして、このコンポーネントをアタッチすれば、Tango SDKの"Dynamic Mesh"みたいな動きをするんじゃないかと思っている。が、ビルドが通っていないのであくまで妄想です。
パラメータについては、Tango SDK向けにまとめた記事で大体わかるかと。
どちらもTango_Configをラップしているはずで、大きな違いはなさそうです。
スクリプトからTangoの機能を使う
コンポーネントを見た感じ、Tango関連は上記の2つしか見当たりませんでした。
他の機能は使えないのかなと探したところ、自作スクリプトからの利用はできそうでした。
UnityEngine.XR.TangoというNameSpaceでスクリプトのコンパイルが通るところまでは確認しています。
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