全国学生エンジニア交流会「NSEEM」にて登壇した資料です
軽率にUnityでOAK-D Liteが使えるらしいにー兄さん(ninisan_drumath)全国学生エンジニア交流会 NSEEM
View Slide
にー兄さん(@ninisan_drumath)- 筑波大学 情報科学類(coins18)- HoloLab inc.アルバイト- Microsoft Learn Student Ambassadors- Iwaken Lab.趣味はUnity、ギター、コーヒー、VTuberオタ活唐突な愛猫自慢→
agendaOAK-D LiteとはUnityでOAK-D Liteを動かそう点群作成の実装を追うおわりに
諸注意- スクショ・SNS共有OK- 資料は公開予定- 私はOAK-DおよびCV分野の素人です(自己防衛)- お手柔らかに
OAK-D Liteとは
OpenCV AI KitOpenCV AI Kit(OAK)は、コンピュータービジョン用ハードウェアとAPIソフトウェアで構成される小型ユニットです。(AI Camよりhttps://aicam.jp/tech/oak/)
DepthAI APIを用いた開発C++とPythonのSDKを提供DepthAI APIを通じて- センサーの制御- CVやAIによる処理などを行う演算はオンボードで行われる
Depth(深度)画像についてカメラからの距離をピクセルで表したものmm単位のushort型で表されたりする深度センサ、ステレオカメラ、深度推定などによって得られる
OAK-DにおけるDepthステレオカメラから深度情報を取得→リアルタイムに深度画像を生成リアルタイム点群生成も可能LiDARセンサは非搭載https://github.com/luxonis/depthai-experiments/tree/master/gen2-camera-demo
† A I † もよう動いとる- 手・顔・人の検知- 手や全身の骨格推定- 顔のランドマーク検出- 表情推定これらとdepthが組み合わされれば3次元的な推定も可能これがDepthAIの所以
UnityでOAK-D Liteを動かそう(2022/3時点)
OAKForUnityのサンプルをcloneluxonis/depthai-unityのブランチをbetaにOAKForUnity/URP 以下にUnityプロジェクトがあるバージョンは2021.2.7
点群生成の実装を追う
全体のフローDepthAIドライバーコンポーネントDepthAIProperty BinderUnity VFX Graphネイティブプラグインからデータ取得深度とカラーの橋渡し点群の構成と描画
センサーデータの取得- ネイティブプラグインから取得- 毎フレーム生データからTexture2Dを生成- このときdepthはmono Rにマッピングされてるらしい- PropertyBinderがVFX Graphとの繋ぎこみ DaiPointCloudVFXdepthai-unity.dllframe infodepthtexturemono RtextureProperty Binder
VFX Graphパーティクルシステムの一種- ノードベース- GPUパーティクル- URP/HDRPで動作
点群の作成1. 画素数分のパーティクルを生成2. UV値を指定して色情報をサンプリング3. depthも同様にサンプリング4. depthから3次元位置を計算Depthから位置を計算する Sub Graph
おわりに
まとめ- OAKForUnityのサンプルを使えばUnityでもOAK-D Liteが動かせた- VFX Graphを使った点群のデモが見れる
参考depthai-unityhttps://github.com/luxonis/depthai-unityOAK-D Lite公式ドキュメントhttps://docs.luxonis.com/projects/hardware/en/latest/pages/DM9095.htmlUnity VFX Graphについてhttps://unity.com/ja/visual-effect-graph