久しぶりのブログ執筆です〜。
2022年6月15日にSonyから面白そうなUnity用SDK "ToF AR" が一般公開され、サンプルを色々触ってみましたので紹介して行きたいと思います。
- ToF ARとは?
- ToF ARのダウンロード
- ToF AR Samples Basic サンプルのビルド
- Color シーン
- Color Depth
- Basic Stream
- Depth Confidence
- まとめ
ToF ARとは?
ToF ARとは、、こちらのプレスをご覧ください。 www.sony-semicon.co.jp
要するにSonyが世界的に大きなシェアを持つスマホ用ToFセンサー、LiDARスキャナーのデータや、Sonyが得意とするセンシング技術からもたらされる認識結果データに簡単にアクセスできるUnity用SDK、それが"ToF AR"ということでしょう。
僕が触ってみた所感では、ARアプリが開発できる、というのはもちろん、カメラや画像認識技術へのこだわりが感じられるAPIセットだと思いました。
これがSonyらしいって言うのでしょうか!?
ToF ARのダウンロード
ToF AR はSony Developer World からダウンロードすることができます。
Overview - ToF AR - Sony Developer World
ToF ARに関するツイートを観測しているとライセンス条項が見つけにくいという話があるようですが、ダウンロード時に表示されるので確認しておきましょう。
ダウンロードしたzipファイルを展開すると、SDKのunitypackageが5つ入っています。
ファイル名 | 説明 |
---|---|
ToFAR_Base_v#.#.#_Android.unitypackage | Androidビルド用基本機能 |
ToFAR_Hand_v#.#.#_Android.unitypackage | Androidビルド用Handその他の機能 |
ToFAR_Base_v#.#.#_Android.unitypackage | iOSビルド用基本機能 |
ToFAR_Base_v#.#.#_Android.unitypackage | iOSビルド用基本Handその他の機能 |
TofAR.ThirdParty.ARFoundationConnector-v#.#.#.unitypackage | ARFoundation接続機能 |
細分化されていますが、Android / iOS 両プラットフォーム向けにビルドするのであれば上の4つを全てインポートすれば良いです。
アプリを使用するプラットフォームや必要な機能が限定されている場合はアセットを少なくしてバイナリサイズを小さくできるような配慮かもしれません。
ToF AR Samples Basic サンプルのビルド
ToF ARの基本的な機能を確認できるサンプルは下記GitHubリポジトリから取得することができます。
クローン、またはzipファイルでダウンロードしたら早速Unity Editorで開いて行きましょう。
動作確認されているUnityのバージョンは、ToF AR v1.0.0 の場合下記です。
- Unity 2020.3.28f1
- Unity 2021.2.11f1
Unity Editorでプロジェクトを開くと、エラーメッセージが表示されます。
でもこれはToF AR自体がサンプルのプロジェクトに含まれていないだけなので、慌てず騒がず [Enter Safe Mode] または [ignore] で進みましょう。
プロジェクトがオープンできたら、ToF ARのunitypackageをインポートすればビルドエラーは全て解消します。
あとはビルドしてデバイスにデプロイしましょう!
アプリケーションが起動すると、メニュー画面が表示されます。
ひとつひとつのボタンがサンプルシーンになっています。
サンプルシーンからメニューに戻るには画面を4本指でタップします。
ここからサンプルシーンをひとつひとつご紹介して行きましょう。
Color シーン
イメージしやすいようにビデオを用意しました。 4つの端末でシーンを比較するします。
使用した端末は以下です。
端末名 | 特徴 |
---|---|
Sony Xperia1 II | RearにiToFセンサー搭載 |
Samsung Galaxy S20 Ultra 5G | RearにiToFセンサー搭載、高解像度ToFあり |
Apple iPhone12 Pro | RearにdToF(LiDAR)センサー、Frontに TrueDepthセンサーあり |
Apple iPad Pro 12.9inch gen5 | 大きなiPhone |
Colorシーンは、RGBカメラの映像を表示するサンプルです。
まあこれくらいなら通常はUnityのWebCamTextureを使えば十分かも知れません。
こだわりポイントはこの圧巻の設定項目です。
FPS変更やフォーカス制御、露出の設定、フラッシュの制御などなど。
カメラについてできそうなことは全部できる勢いの設定項目。
データの出力フォーマットもYUVだけでなく、RGBA, BGR, RGB といかにもOpenCVやTensorFlowなどでどうぞComputer Visionやってくださいと言わんばかりです。
そして実はこのColor機能はToFやLiDARを搭載していない機種でも使用することができるので、凝ったカメラアプリなど簡単に作れそうです。
いやあ、いきなりToFでもARでもないところで凄いこだわりを見た感じです。
Color Depth
Color DepthシーンはRGBカメラ映像とToFデータ映像を重ね合わせて表示するサンプルです。
ToFカメラについても、Colorカメラほどではありませんが設定が用意されています。
面白いのは Deley設定で、Color映像に対して遅延を起こすことができます。
https://youtu.be/tMWotQi9xl0?t=30
グラディウスのオプション(古)やスタンドのような分身がついてくるようなビジュアル表現が簡単に作れそうです。
ToFデータを遅延させれば、ToFから生成・認識されるHand認識結果やMeshデータなども同じように遅延するので、Color映像で自分の手が通過した後遅れて波紋が出てくるような表現など、色々思いつくところがありますね。誰か作ってくださいw
Basic Stream
Basic Streamシーンは、Color, ToF そして Confidence映像を並べて表示するサンプルです。
KINECTを触る人であればConfideneはIRということで大体合ってるのかなと思います。
Galaxy S20 Ultra 5G では 640x480 高解像ToFモードが用意されています。
https://youtu.be/Zla6JZKEafM?t=62
高解像な代わりにFPSが5程度に落ちるのですが、Androidで静的な物体に対して密度の濃いDepthデータが欲しい場合使いでがあるモードではないかと思います。
対するiOSデバイスではFrontで高解像高密度のDepthデータが15FPSで取得できます。
いずれにしても解像度が高まるとFPSが落ちる、無理をさせると熱が出る。
魔法って無いんだなって思いますよね。
Depth Confidence
Depth Confidenceシーンは、ToFとConfidenceを表示するサンプルです。
このシーンの特色は、Depth映像上のタップした部分の距離情報を表示してくれるところです。
簡易メジャーとして使えます。
逆にこのToFカメラ本当に正確なの?っていうのを壁から正確に1メートルのところから壁までの距離を表示させて精度を測る、みたいな使い方もできますけど普通あんまりそういうことはしないですかね。僕はよくやりますけど(笑)
まとめ
今回はここまで。
サンプルを動かしてみてその特徴や思うところを徒然なるままに書いてみました。
カメラにフォーカスしたSDKであることが感じていただけたでしょうか。
引き続き残りのサンプルを紹介していきますので次回もお楽しみに!