つくるの大好き。

つくるのが大好きな人の記録。

Sony "ToF AR" SDK サンプル紹介 [1] ToF ARとは?Color/ToF映像を表示するサンプル群

久しぶりのブログ執筆です〜。
2022年6月15日にSonyから面白そうなUnity用SDK "ToF AR" が一般公開され、サンプルを色々触ってみましたので紹介して行きたいと思います。

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リポジトリから取得することができます。

github.com

クローン、または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本指でタップします。

Menu

ここからサンプルシーンをひとつひとつご紹介して行きましょう。

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

www.youtube.com

Colorシーンは、RGBカメラの映像を表示するサンプルです。 まあこれくらいなら通常はUnityのWebCamTextureを使えば十分かも知れません。
こだわりポイントはこの圧巻の設定項目です。

Color設定

FPS変更やフォーカス制御、露出の設定、フラッシュの制御などなど。
カメラについてできそうなことは全部できる勢いの設定項目。
データの出力フォーマットもYUVだけでなく、RGBA, BGR, RGB といかにもOpenCVやTensorFlowなどでどうぞComputer Visionやってくださいと言わんばかりです。
そして実はこのColor機能はToFやLiDARを搭載していない機種でも使用することができるので、凝ったカメラアプリなど簡単に作れそうです。

いやあ、いきなりToFでもARでもないところで凄いこだわりを見た感じです。

Color Depth

www.youtube.com

Color DepthシーンはRGBカメラ映像とToFデータ映像を重ね合わせて表示するサンプルです。
ToFカメラについても、Colorカメラほどではありませんが設定が用意されています。

ToF設定

面白いのは Deley設定で、Color映像に対して遅延を起こすことができます。

https://youtu.be/tMWotQi9xl0?t=30

グラディウスのオプション(古)やスタンドのような分身がついてくるようなビジュアル表現が簡単に作れそうです。
ToFデータを遅延させれば、ToFから生成・認識されるHand認識結果やMeshデータなども同じように遅延するので、Color映像で自分の手が通過した後遅れて波紋が出てくるような表現など、色々思いつくところがありますね。誰か作ってくださいw

Basic Stream

www.youtube.com

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

www.youtube.com

Depth Confidenceシーンは、ToFとConfidenceを表示するサンプルです。
このシーンの特色は、Depth映像上のタップした部分の距離情報を表示してくれるところです。
簡易メジャーとして使えます。

逆にこのToFカメラ本当に正確なの?っていうのを壁から正確に1メートルのところから壁までの距離を表示させて精度を測る、みたいな使い方もできますけど普通あんまりそういうことはしないですかね。僕はよくやりますけど(笑)

まとめ

今回はここまで。
サンプルを動かしてみてその特徴や思うところを徒然なるままに書いてみました。
カメラにフォーカスしたSDKであることが感じていただけたでしょうか。
引き続き残りのサンプルを紹介していきますので次回もお楽しみに!

次回はこちら
satoshi-maemoto.hatenablog.com