griffon plugin を
実際に作ってみよう
2012/01/20@kimukou_26
今日のアジェンダ
1. Griffon Pluginを書いてみようa. 視覚的なのが面白いよねb. 今流行のって何だろう?c. Kinect動かせると面白いかも
業務用だとASUSからでてるXtion Pro Live だよね
● Open NI Pluginを作ってみよう〜
今日のソースコード
● プラグイン側○ https://github.com/kimukou/griffon-openni-plugin
● 使用サンプル側
○ https://github.com/kimukou/griffontest■ processtestOpenNI
● 備考)
○ 試したい方は processtestOpenNI 内で
griffon install-plugin ../griffon-openni-plugin/griffon-openni-0.1.zip
を事前に行ってください
〜<plugin作成編>〜
Griffon Pluginの作り方の流れ
● griffon create-plugin openni● mv openni griffon-openni
○ 公式が名前を変えているみたいなので合わせる
● cd griffon-openni● griffon create-addon openni
○ 今回はDSL記述しないけど(汗
● 手動で編集● griffon package-plugin nodoc
使うライブラリは
● simple-openni○ http://code.google.com/p/simple-openni/○ processingのopenniラッパー(processing1.2でも動作
依存ライブラリは下記の認識なので
● griffon install-plugin jogl-compat● griffon install-plugin processing うーん。でも依存情報書きかわらないよ=>手動で直しましょう
● plugin.xml● ● ● OpenniGriffonPlugin.groovy
<dependencies>
<plugin name='jogl-compat' version='0.1' /> <plugin name='processing' version='0.4' /> </dependencies>
def dependsOn = ['jogl-compat':0.1,'processing':0.4
]
次にOSごとのライブラリをコピーする設定
● 次に対応OSの記述をば○ OpenniGriffonPlugin.groovy
● こんな感じで配置して、jogl-compatあたりの
scripts/_Event.groovyの記述をコピー編集
def platforms = ['linux','windows','windows64', 'macosx']
● あとは ○ griffon package-plugin nodoc
あたりでパッケージングして終了
● 多分G*的にはOpenniGriffonAddon.
groovyにDSL書くのが醍醐味なのだろうけど(汗
〜<デモ>〜
〜<はまった処>〜
はまった処(実装サンプル側
● simple-openni というかopenniのインスタンスを一つ以上作
るとアクセス例外エラー○ インスタンス共用みたいなことをしてみようと
したけどうまくいかず><
● pdeファイル=>Javaにする時、processing.coreの関数に厳密な型チェックがかかる
● simple-openniのコールバックはnoLoop()/loop()を記述してしまうと動かないっぽい○ ProcesstestController.groovy 側でstop()/start()
は可能
はまった処(実装サンプル側
● processing側のjavaコードからgroovyコード参照できないw(jointcompileが無理)
○ たぶんこれはgriffonの現状の動作仕様かな?○ processingコード自体をgroovyで書く事自体は可能
● ジェスチャー登録の反応がかなり怪しい(一応手の認識コードです)
kinect.addGesture("Wave");kinect.addGesture("Click");kinect.addGesture("RaiseHand");//腕あげる
はまった処(実装サンプル側
● tabbedPaneのリスナーが見当たらず○ modelやcontrollerが直参照できず一度変数に入れる必
要があった(ProcesstestView.groovy
def model_ = model //☆
tab.addChangeListener(
new ChangeListener() { public void stateChanged(ChangeEvent changeEvent) { JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource(); int index = sourceTabbedPane.getSelectedIndex(); println "Tab changed to: " + sourceTabbedPane.getTitleAt(index)
model_.title = sourceTabbedPane.getTitleAt(index) }
}}
はまった処(実装サンプル側
● @PropertyListener がサンプル記述で動かなかった><○ 正確には使い方に凄く悩んだ。○ bindされている変数が変更された時にトリガーで
Controller関数を呼ぶ機能だけど
def controller //☆
@Bindable @PropertyListener({controller.changeActive(it)}) String title
def changeActive = {title -> println "changeActive ${title.dump()}"switch(title.newValue){ //新しい値
時間切れで出来なかったこと
● Pluginの参照インストール○ install-plugin時に動く依存pluginのインストールの仕組みを調べきれなかっ
た・・。
● tabの切替で表示をうまく切り替える○ 処理が途中で止まってしまう
■ 現在はController側でnewしない形で動かすしかない><
○ OpenNIで複数のKinectから1つを選択して起動する方法 あたりの対応必要?
■ http://tclip.blog38.fc2.com/blog-entry-113.html
● 参考にした資料@kiy0taka さん Griffon不定期便〜G*ワークショップ編〜
■ http://www.slideshare.net/kiy0taka/griffong
○ http://groovy.codehaus.org/SwingBuilder.tabbedPane
〜<環境設定編>〜
事前環境設 (Windows:Kinect)
1. Kinect の購入a. amazonで12000円ぐらい
b. 電源が別途必要、だいぶ大きめ
c. 商用ライセンスはまだなので、無料シーンのみ利用可能
d. Kinect SDKを使えば音源の方向、距離情報等も取れるらしい
事前環境設 (Windows:Kinect)
1. OpenNIのダウンロードa. http://75.98.78.94/Downloads/OpenNIModules.aspx からDL
i. Download OpenNI binaries
ii. Download OpenNI compliant middlewareそれぞれ Statable/Developer Editionを
2. Driverをインストールa. https://github.com/avin2/SensorKinect/tree/unstable/Bin
のバイナリを入れる
参考:OpenNIセットアップ for MMDのKinect連携
○ http://d.hatena.ne.jp/moccos_info/20101220/p1
事前環境設 (Windows:Xtion ProLive)
1. Xtion Pro Live の購入a. amazonで24000円ぐらいb. USB2.0接続、小さい、電源いらずc. 商用利用は可能(ただKinect SDKは使えない)
事前環境設 (Windows:Xtion ProLive)
1. OpenNIのダウンロードa. http://75.98.78.94/Downloads/OpenNIModules.aspx からDL
i. Download OpenNI Pakages
2. 備考i. kinectのドライバと共用がうまくいかない
ii. 一度アンインストールしてから入れ直し
3. 参考サイト:Windows で Xtion LIVE + OpenNI の環境を作成する
i. http://d.hatena.ne.jp/kaorun55/20111201/1322667126
〜<参考サイト>〜
環境構築編
● Window○ http://kgxpx834.blog58.fc2.com/blog-entry-22.html
○ http://d.hatena.ne.jp/moccos_info/20101220/p1
● Mac:時間内に構築できなかったので下記情報から探してください
● @kaorun55 さん OpenNI / Kinect SDK Advent Calendar 2011 まとめ
○ http://d.hatena.ne.jp/kaorun55/20111228/1325151153
プログラム編
● @reona396 さん ProcessingとKinectで魔法使いになろう!
~コード編~
○ http://blog.livedoor.jp/reona396/archives/53573407.html
● メディア技術基礎(3Dプログラミング)最終課題○ http://www.syuheiuda.com/?p=62
● 日経ソフトウエア○ http://itpro.nikkeibp.co.
jp/article/MAG/20101122/354400/
● https://gist.github.com/gists/search?q=SimpleOpenNI&page=1○ https://gist.github.com/1478237
書籍(サンプルDLは有
● Making Things See: 3d Vision With Kinect, Processing, Arduino, and Makerbot <O'Reilly Media> ○ http://www.amazon.co.jp/Making-Things-See-
Processing-Makerbot/dp/1449307078