ActionScript 3.0 , AIR , FLEXからCocoa, OpenGL
1 Jan
少し前の話になりますが、2011/12/22にageHaにて行われた
「m-flo presents BONENKAI」でBoxステージでのPanty & Stocking OrchestraのライブにてKinect+OpenNIを使った演出を行いました。
ちょっとわかりにくいですが、右下にいるアーティストの動き(この画像はTeddyLoidさん)にあわせてスクリーン上のロボットが動く、というものです。OpenNI Unity Wrapperを使いました。
より効果的に見せるための課題など反省点は色々ありますが、まずは問題なく本番で使う事ができて一安心です。
今年2012年はよりパワーアップしたものをお届けするべく頑張りますのでよろしくお願いします。
24 Dec
このエントリはOpenNI Advent Calendar 2011 : ATNDの12月24日分です!!

最近話題になっている、ゲームの開発環境のUnity3Dというものがあり、OpenNIのサイトからUnity3Dで使うためのUnityWrapperをダウンロードできます。

Unity3D ( http://unity3d.com/unity/ ) とはゲーム開発ツールであり、WindowsとMacのどちらでも開発する事が可能です。
IDEがあるのでステージの画面を見ながら次々とオブジェクトを配置するだけでゲームの世界を簡単に作る事ができます。
プログラムはJavascriptとC#(mono)で書く事ができるのでweb開発者や.NETの開発者にも取っ付きやすいのではないでしょうか。
MacでもC#で記述する事ができます。
また、一人でグラフィックやサウンドやモデリング、プログラムを行うのは大変ですが、Unity3DではAsset Storeというものが用意されており、これを利用する事で必要な素材を入手する事ができるので気軽にゲーム開発を進める事ができます。
無料版と有料版があり、無料版では制限はいくつかありますが、WindowsとMacで実行できますし、有料版にアップグレードする事でAndroidやiOSに対応させる事も可能です。
詳しいライセンスなどはUnity3Dのサイト( http://unity3d.com/unity/licenses )か、「強火で進め」さまのサイトが詳しいです。( http://d.hatena.ne.jp/nakamura001/20110710/1310292561 )
それでは、Unityをダウンロードしましょう。
http://unity3d.com/unity/download/より、Unityをダウンロードし、流れに沿ってインストールしてください。
インストール後、先ほどOpenNIのサイトからダウンロードしたファイル(Unity OpenNI toolkit 0.9.7.1.unitypackage )をダブルクリックしImport Packageより一式をunityにインポートします。
importが完了すると、Projectタブにこのようなファイル群が表示されます。

OpenNI/Sample Scenes以下にすぐに試せるようなサンプルシーンが入っていますのでダブルクリックしてシーンを開き、三角の再生ボタンを押して次々と試してみるとUnity3D+OpenNIの可能性を試せると思います。

私はライブなどで使ったりしていますが、骨格をちゃんと映していれば問題なく現場でも使えます。今のUnityWrapperだと全身映す前提のコードになっているので、上半身だけ認識などに変更する事でより柔軟なアプリケーションが開発できます。
ではそれぞれのサンプルのキャプチャやサンプル動画をのせておきます。
せっかくなのでスケルトンをサンタにかえてみましたよ。サンタ気分で小さく踊ってみました。
あ、サンタのデータはAsset Storeで購入可能ですよ!
※この記事は、下記の環境で確認しました。
| OpenNI | 1.5.2.7 |
| NITE | 1.5.2.7 |
| Unity3D | 3.4.2f3 |
21 Nov
OpenNIの新しいバージョンがunstableながら出たようです。(バージョンは1.4.0.2)
http://75.98.78.94/
※ググった結果の一番上なんですけどなんでIPアドレスなんだろう。。。
今回からなんとOpenNIでスケルトン認識する時の例のポーズがいらなくなった、という大きすぎるアップグレードがあります。
「かおるんダイアリー」様が早速デモ動画をアップされています。
http://d.hatena.ne.jp/kaorun55/20111121
MSのSDKでは画面から外れた時の暴れっぷりや全身が映っていないときの反応がちょっと荒かった印象がありましたが、OpenNIの方は比較的ましな感じがしています。
今はSensorKinectの人にも問い合わせしているので進展があれば追記します。
早速試したかったのですが、僕の環境では実行しようとしても
Segmentation fault: 11
が出てしまい実行できませんでした。
あまりにもわからなかったのでOpenNIのGoogleGroupで質問してみたところ、
Kinectの時に使っているドライバ、SensorKinectが新しいバージョンに対応していないからだそうです。
これはOpenNI使う時はKinectじゃなくてXtion使えよ、っていうことなんでしょうかね。。。
追記:
動作することを確認しました。
すみません。僕が使っていたSensorKinectが古かったようです。
ここにあるバージョン(5.0.5.1で確認しました)を使うと無事動作しました。
OpenNI, SensorKinect、NITE、入れていればOpenNIのサイトにあるSensorをアンインストールし、KinectをUSBから抜いて再度インストールすると問題なく動作するようになりました。
(NITEは先ほどリリースされた1.5.0.2をインストールしました。)
https://github.com/avin2/SensorKinect
さあ、これで試せるよ!
備考:
動作確認バージョン:
OpenNI: 1.4.0.2
NITE: 1.5.0.2
SensorKinect 5.0.5.1
Mac OS X 10.7 Lion
デバイス: Kinect
撮影するための環境が無くて僕とKinectの距離が近かったのでスケルトンが暴れていますが、実際はもう少しましだと思います。
これになったことでスケルトンを使ったアプリを作りやすくなりましたが、暴れることが以前より多くなった(当然)ので、こういったノイズデータをハンドリングする必要がありそうですね。
15 Jul
KinectをOpenNIを使えばunstable版ではありますが、Macでも使う事ができます。
で、普段のWebやPC、Mobileのアプリとは異なりハードウェア的な観点で注意しないと行けない事があり、ちょっとハマってしまった事があったので書いておきます。
今までまったくもって普通に動いていたアプリが突然すごくカクカクと動いてしまっていたのですが、ソースコード上の無駄をどれだけそぎ落としても、Kinectのデータ更新を別スレッドで行うようにしてもカクつきがまったく改善されなく、原因がわからなくて途方に暮れていたところ、試しにUSBの差し口を変更した所今までどおり高速に動作するようになりました。
どうやら状態によって通信速度が変わる事が考えられます。
MacBook ProのUSBポートは内部的には同じもののはずだからどちらに差したからと言って通信速度が変わることはないと思っていたのですが、そんな事も無かったです。
Kinect自身はUSBでPCと繋いでデータを受信します。KinectはXtion Proなどのデバイスとは違い、USBだけでは正しく動作しないのでコンセントにさす必要もあるのですが、電気の供給が不足しているときにも動きがカクカクしてしまう事がありました。
USBを差し替える前後の違いが分かるように動画をアップしましたので気になる方はご覧下さい。
はまりどころを抜けて、こんな感じのサンプルを作りました。
26 Jun
Windows上でのOpenNIのアップデートでは結構苦戦した経験があり、自分のMacでは更新しないようにしていたのですが、OpenNIのアップデートで治るのなら、という不具合に出会ってしまったのでこの度更新する事にしました。
基本的なところですが、そのときのアンインストールのやり方を残しておきます。
※ちなみに、新たにインストールする場合は、こちらのサイトを参考にして下さい。非常に分かりやすくまとめられています。
http://www.cyber.t.u-tokyo.ac.jp/~take/kinect/openni-mac-kinect.html
OpenNIをアンインストールします。Terminalで作業を行います。
ドライバであるSensorKinectをアンインストールします。
これで無事にアンインストールが完了しましたので、上記リンク先のサイトの通りにインストールを行って下さい。
./Ni-SimpleViewerなどが実行できるようになれば、インストール完了です。
24 Apr
こんにちは。
ここしばらくKinectで何かをする事が多かったので、忘れないうちに記事を残しておこうと思います。

Kinectとは、MicrosoftがXbox360向けに発売したゲームデバイスです。
従来と違い、距離センサーなどを搭載した事で、全く何のコントローラーを持つ事無く人のジェスチャーでゲームを楽しむ事ができます。
どんな事ができるのかは、この動画をみると分かりやすいと思います。
これがもし、Xboxだけでしか使えないものであればここまで流行る事も無かったと思うのですが、あまりにも安価なセンサーデバイスだったため、世界中のハッカーが勝手にハックしてKinectの情報をプログラムで扱えるようになりました。
センサー部分を開発している、イスラエルのPrime Sensor社がOpenNIというライブラリを公開したことは、Kinectのパーツを実際に作っているところからの公開であり、準公式とも言えそうなライブラリの登場に非常に興奮したものです。
C++, C#で利用する事ができます。
http://www.openni.org/
また、Microsoft自身もSDKを公開するとの事ですが、僕はMac使いなため、OpenNIを使う事に変わりないと思います。
http://japanese.engadget.com/2011/02/21/kinect-sdk/
他にもOpenFrameworksで使われるためのofxkinectというアドオンもあります。
https://github.com/ofTheo/ofxKinect
MicrosoftのKinectに関するページ:
http://www.xbox.com/ja-JP/kinect
先ほども書いたように、Mac使いである僕はC++(OpenFrameworks)+OpenNIという方法でKinectをいじり始めるのでした。
続く。
15 Feb
とてもありがたい事にOpenNIもMac版がunstableながらもリリースはされていて、それで遊ばないのはもったいないので遊んでいます。
初歩的ではありますが、サンプルソースをXCodeでビルドするまでの手順を残しますよ。
これを経験しておけば、独自アプリ作る時の足がかりにはなると思います。
1. XCodeでC++プロジェクトを作成、ここではOpenNICPP1という名前にしました。
→XnCPPWrapper.hを使う、ということなので、素直にC++プロジェクトとして作成しました。
2. XCodeのプロジェクトファイルの情報→ビルド の編集
「検索パス」の「ヘッダ検索パス」に/usr/include/niと/OpenNI/Includeを設定します。再帰的でなくて構いません。(/OpenNI/Includeにはダウンロードした時のIncludeフォルダが該当します。)
3. 「ライブラリ検索パス」 に「/OpenNI/Lib」を設定する
4. フレームワークに「GLUT.framework」「OpenGL.framework」、「libOpenNI.dylib」を設定する。libOpenNI.dylibは当然として、GLUTやOpenGLは描画に使っています。
この後は、main.cppの内容をNiSimpleViewer.cppの内容と置き換えて、ビルド。
ひとまずはこれでビルドできたのでこれからちゃんと勉強します。
荒削りな情報で申し訳ございませんが、まだまだMacでOpenNIやっている情報が少なかったので書かせていただきました。
もし何かあればお気軽にご質問下さいね。