TOF カメラ(Vzense DCAM710)をUnityで使う

このページは?

  • IRミラー と TOFカメラを組み合わせた空中像インタラクションを作った際のメモ
    • 文献情報: 安藤 将平,小泉 直也.ホットミラーによる赤外光反射を用いた空中像インタラクション手法の提案.第64回 情報処理学会エンタテインメントコンピューティング研究会, 2022.06.16.(PDF)
  • 作ったもの:VzenseSDK_Windowsを使って得たVCAM710の深度情報をUnityに送る。

VzenseSDKの動かし方

手順

  1. VzenseのSDK(Vzense_SDK_Windows)をGitHubからダウンロードする(uec-media-design-lab/Manual_Vzense_DCAM710/Vzense SDKを使用しても良い。)

    • 展開する
  2. OpenCV3.0.0をダウンロードする

    • 他Verでも動かせるけど、用意されたsdkは3.0.0を使っていて設定変えるのが大変なので3.0.0を使う。

    • Cドライブ直下に配置(他verのOpenCVと競合しないよう注意)

    • パスを通しておく(多分x86の方だけでいい)
      C:\opencv\build\x64\vc12\bin
      C:\opencv\build\x86\vc12\bin

  3. Vzense_SDK_WindowsのSample.slnをVisual Studioで開く

    • 多分↓はOKで良い
    • DCAM710以外は使わないので消しとく。(残してるとうまくビルドできないときがある)
  4. Frame_Viewer_DCAM710.cppを開く

    • この時点ではOpenCVがうまくincludeされていない
  5. プロパティページを編集

    • 上部メニューのプロジェクト>プロパティ>C/C++>全般>追加のインクルードディレクトリにC:\opencv\build\includeと設定する
    • プロジェクト>プロパティ>リンカー>全般>追加のライブラリディレクトリにC:\opencv\build\x86\vc12\lib;C:\opencv\build\x86\vc12\staticlibと設定
      (※リンカーの欄が無い場合は一度ビルドしてみると表示されるかも?)
    • プロジェクト>プロパティ>リンカー>入力>追加の依存ファイルを「追加の依存ファイル」の内容で上書きする。(C:\opencv\build\x86\vc12以下にある.libファイルをすべて追加している)
    • プロジェクト>プロパティ>ビルドイベント>ビルド後のイベント>コマンドラインに書いてある内容を全て消す。
    • 消していいのか正直よくわかっていないが、これがあると↓のエラーになる。ビルド後に何かファイルをコピーするためのものらしいが、とりあえず消しても問題なさそう。
  6. ビルドして実行する

    • サンプルが動く
      file

動作の様子

  • あとはサンプルコードを都度書き換えれば深度情報とか表示できそう。
    • ↓コンソールに中心の深度情報を表示してみた。
      file

UnityとのUDP通信

手順

  1. C++側での送信プログラム

    • UDP.cppUDP.hをプロジェクトに新規で作成する。(Send()関数)
  2. プロパティの設定

    • プロジェクト>プロパティ>リンカー>入力>追加の依存ファイルにws2_32.libを追加する。(UDP/TCP通信用)

    • 上部メニューのプロジェクト>プロパティ>C/C++>全般>追加のインクルードディレクトリに./を追加する

      • これをしないとincludeできない
  3. Unity側での受信プログラム

    • 空オブジェクトを作ってUDPReceive.csスクリプトをアタッチする
  4. 動かす

    • send関数が呼ばれるとC++側からUDP通信で深度情報が送られる。
    • 深度情報を使ったアプリケーションを作成できる。