AzureKinectを試す
本日、日本マイクロソフト株式会社からAzure Kinectが届いたので早速触ってみました。サンプルはこちら。
購入は公式サイトから行いました。
今回テストした環境は以下です。
About TouchDesigner
License : Non-Commercial
Version : 64-Bit Build 2020.20625
About Machine
OS : Windows 10 64 Bit
GPU : nvidia Geforce 1080Ti
CPU : Intel Core i7-8700K
メモリ : 32GB
下準備
まずはSDKなどをインストールして動作確認します。
インストールはこちらから。
Azure Kinect Viewerというのがインストールされるのでそれで動作確認をしましょう。
Azure KinectおよびAzure KinectとPCの間の接続がうまく行ったのを確認したら準備完了です。
ポイントクラウドを表示する
Kinect Azure TOPがデバイスをグラブするので、まずはKinect Azure TOPを置きましょう。
カラーのポイントクラウドを表示するにはポイントクラウド(XYZ座標をRGB値で書き込んだ)のTOPと、ポイントクラウドとピクセル位置が正しく重なったカラー画像が必要です。
Kinect Azure TOPは一枚しか画像を取得できないので、1個のAzure Kinectから複数枚の画像を取得する場合はKinect Azure Select TOPで他の画像を取得することになります。
自分はKinect Azure TOPのでポイントクラウド画像を取得し、Kinect Azure Select TOPでカラー画像を取得しました。
カラー画像のほうは"Align Image to Other Camera"フラグをオンにすると、TouchDesignerのほうでポイントクラウド画像とピクセルレベルで位置が合った画像に補正してくれます。便利。
あとはこれをBoxとかSpehereとか小さい粒のGeometryでInstancingするだけ!
良い感じに一発で描画されました。早い。
ボーントラッキングを表示する
ついでにボーントラッキングもやってみました。こちらもAzure Kinect TOPを設置したあとにKinect Azure CHOPを使ってボーンのポジション情報を取得します。今回のボーン情報は1人あたり32点も取れるようです。結構多くて大変なのでInstancingで対応しました。
まず最初にSelect CHOPでフレーム数を除きます。次に3つのSelect CHOPを使ってtx、ty、tzでそれぞれ抜き出して、Shuffle CHOPで一本のArray(配列)にまとめてしまいます。そのあとMerge CHOPで合流させてtx、ty、tzの3チャンネルで、各配列要素が32個ある状態にして、これで関節部分にSphereをInstancingするようにしました。
こちらも表示自体は意外とさっくりできました。これを何かのモデルのボーンと対応づけはじめると若干面倒かもしれませんが・・・。
マシンスペックのおかげもあるでしょうが、数十万のポイントクラウド+GPUベースのボーントラッキングが60FPSで動いています。