KinectをWindowsとMacのCinderとopenFrameworksで

あぃやぁ〜!
どうも、kaminalyです。

仕事で(?)Kinect使う事になったから、色々準備したよ。
インストール手順とか既に色々なサイトで紹介されているから、
詳細はそちらへのリンクを貼るとして、
おおまかな手順をメモっとこ。

でタイトルにはWindowsとMacでと書いているけど、
色々調べた結果、このメモをメモメモしている時点では、
Windowsのフレームワークでお手軽に開発を始めるのは時期尚早といった感じでした。

CinderのCinder-KinectはMac用OpenKinect(libfreenect)でしか動かない。
Windowsの対応は未定だとおもう。

openFrameworksのaddonは2つのドライバに対応していて、
ofxKinectはMac用OpenKinect(libfreenect)に対応。(Windows対応は開発中)
ofxOpenNIはMac用OpenNIに対応
という事でまだはじめるのは難しそう。
(※FlasherのalumicanさんがopenFrameworksのフォーラムにofxKinectを使ってWindowsで動かすのに成功したと投稿してますが、まだ不具合があるようです。)

ちなみにKinectのドライバについてはこちら
http://d.hatena.ne.jp/tueda_wolf/20101220/p3
http://tclip.blog38.fc2.com/blog-entry-105.html

■Windows用OpenNIのインストール
まぁ、いずれ対応して動くようになると思います。
Windowsのドライバ(OpenNI)のインストールはこちらを参考にしました。
http://www.cyber.t.u-tokyo.ac.jp/~take/kinect/openni-windows-kinect.html
問題なく動作しました。やった!

でも、開発はフレームワーク使おうと思っていたので、
WindowsはあきらめてMacの開発環境を整える事に。
なので、Windows用OpenKinectは未インストール。

iPhoneアプリ開発用にMacBook Pro買っておいて良かったw
社内にMac使っているディレクタやデザイナはいるけど、
開発の為にそのマシンを奪うわけにはいかないもんね。。

■MacPortsをインストール
まず、パッケージ管理システムのMacPortsをインストールした。
yumみたいなもので、依存するライブラリなども自動でインストールしてくれるものです。
他にはFinkやhomebrewといった選択肢もあり、homebrewは良さそうだったけど、
参考にしたKinectインストール手順を紹介しているサイトの例がMacPortsだったので、とりあえずそちらを採用してみた。

MacPortsの基本的な使い方とコマンドはこちら
http://blog.asial.co.jp/371

■gitのインストール
gitは絶対に必要ではないけど(必要なものはgithubからダウンロードできるから)
いずれ使うと思ったのでインストール。
ターミナルから

[code lang="plain"]

sudo port install git-core

[/code]

を打つだけ。なんともラクチンだ。
ただ、依存の連鎖がおきてメタメタ待たされた!

■Kinectのドライバのインストール
色々調べたところ、OpenKinectとOpneNIを両方入れても動くとわかったので、
(Macだと大丈夫だったけど、WindowsはOpenKinect入れてないからわからん)
両方入れる!

OpenKinectのインストールはこちらを参考に
http://sora2hs.blog70.fc2.com/blog-entry-517.html
http://d.hatena.ne.jp/EIGHT/20110306/1299415621
両方のページの中頃にlibusbをパッチをあててインストール
してるけど、最新版ではパッチをあてる必要はないようでした。
あと、誤字があったりするので、ハマらないように注意!

OpenNIのインストールはこちらを参考に
http://d.hatena.ne.jp/EIGHT/20110306/1299417994
http://d.hatena.ne.jp/ke_takahashi/20110107/p1
注意点としては、libusb-develにuniversalオプションが必須なので、

[code lang="plain"]

sudo port install libusb-devel +universal

[/code]

とする事。
もし既にインストール済みだったら、いったんアンインストールが必要かも。
あと、設定データ(Sample-Scene.xmlなど)のMapOutputModeを320×240から640×480変更が必要と書いてありますが、
WindowsのOpenNIインストール参考サイトに、設定ファイルについて参考になる記述がありました。
ドライバとしてインストールしているavin(SensorKinect)に付属している設定ファイルでOpenNIとNITEの設定ファイルを上書くというところ。
avinの設定ファイルはMapOutputModeのところが640×480になっていました。
また、

 [code lang="plain"]

<License vendor="PrimeSense" key="insert key here"/>

[/code]

[code lang="plain"]

<License vendor="PrimeSense" key="0KOIk2JeIBYClPWVnMoRKn5cdY4="/>

[/code]

とするとも書いてあったので、一応書き換えてみました。

ドライバのインストールが終わり、サンプルを動かしてみると、
問題なく動作しているのを確認できました。

■フレームワークで使う
CinderのCinder-Kinectをダウンロードしてきて、Cinderディレクトリ内の
blocksに入れる。
https://github.com/cinder/Cinder-Kinect
他のサイトではsampleディレクトリに入れると書いてあるところもあるけど、
blocksが正しいと思う。openFrameworksのaddon的な位置づけだと思うので。
あと、もしかしたら、Cinderのサイトからのダウンロード(パッケージ版)ではなく、
githubからダウンロードした(ソース版)でないと動かないかも。
メタボールを描画するためのCinderISOはソース版でないと動かなかった。
パッケージ版にまだ含まれていない機能を使っていると動かない。

openFrameworksはofxKinectとofxOpenNIをダウンロードしてきて
addonディレクトリに入れる。
ofxKinect
https://github.com/ofTheo/ofxKinect
ofxOpenNI XCode4用
https://github.com/roxlu/ofxOpenNI/tree/experimental
ofxOpenNI
https://github.com/roxlu/ofxOpenNI/tree/expirimental

フレームワークの準備も終わり、
それぞれのサンプルも問題なく動作しました。

さぁ、ここからがスタートなんだぜ!