griffon plugin を 実際に作ってみよう #jggug

25
griffon plugin 実際に作ってみよう 2012/01/20 @kimukou_26

Transcript of griffon plugin を 実際に作ってみよう #jggug

Page 1: griffon plugin を 実際に作ってみよう #jggug

griffon plugin を

実際に作ってみよう

2012/01/20@kimukou_26

Page 2: griffon plugin を 実際に作ってみよう #jggug

今日のアジェンダ

1. Griffon Pluginを書いてみようa. 視覚的なのが面白いよねb. 今流行のって何だろう?c. Kinect動かせると面白いかも

業務用だとASUSからでてるXtion Pro Live だよね

 

● Open NI Pluginを作ってみよう〜

Page 3: griffon plugin を 実際に作ってみよう #jggug

今日のソースコード

● プラグイン側○ 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

を事前に行ってください

Page 4: griffon plugin を 実際に作ってみよう #jggug

〜<plugin作成編>〜

Page 5: griffon plugin を 実際に作ってみよう #jggug

Griffon Pluginの作り方の流れ

● griffon create-plugin openni● mv openni griffon-openni

○ 公式が名前を変えているみたいなので合わせる

● cd griffon-openni● griffon create-addon openni

○ 今回はDSL記述しないけど(汗

● 手動で編集● griffon package-plugin nodoc

Page 6: griffon plugin を 実際に作ってみよう #jggug

使うライブラリは

● simple-openni○ http://code.google.com/p/simple-openni/○ processingのopenniラッパー(processing1.2でも動作

Page 7: griffon plugin を 実際に作ってみよう #jggug

依存ライブラリは下記の認識なので

● 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

Page 8: griffon plugin を 実際に作ってみよう #jggug

次にOSごとのライブラリをコピーする設定

● 次に対応OSの記述をば○ OpenniGriffonPlugin.groovy

 ● こんな感じで配置して、jogl-compatあたりの

scripts/_Event.groovyの記述をコピー編集 

def platforms = ['linux','windows','windows64', 'macosx']

Page 9: griffon plugin を 実際に作ってみよう #jggug

● あとは ○ griffon package-plugin nodoc

あたりでパッケージングして終了

 ● 多分G*的にはOpenniGriffonAddon.

groovyにDSL書くのが醍醐味なのだろうけど(汗

 

Page 10: griffon plugin を 実際に作ってみよう #jggug

〜<デモ>〜

Page 11: griffon plugin を 実際に作ってみよう #jggug

〜<はまった処>〜

Page 12: griffon plugin を 実際に作ってみよう #jggug

はまった処(実装サンプル側

● simple-openni というかopenniのインスタンスを一つ以上作

るとアクセス例外エラー○ インスタンス共用みたいなことをしてみようと

したけどうまくいかず><

● pdeファイル=>Javaにする時、processing.coreの関数に厳密な型チェックがかかる

● simple-openniのコールバックはnoLoop()/loop()を記述してしまうと動かないっぽい○ ProcesstestController.groovy 側でstop()/start()

は可能

Page 13: griffon plugin を 実際に作ってみよう #jggug

はまった処(実装サンプル側

● processing側のjavaコードからgroovyコード参照できないw(jointcompileが無理)

 ○ たぶんこれはgriffonの現状の動作仕様かな?○ processingコード自体をgroovyで書く事自体は可能

 

● ジェスチャー登録の反応がかなり怪しい(一応手の認識コードです)

kinect.addGesture("Wave");kinect.addGesture("Click");kinect.addGesture("RaiseHand");//腕あげる

 

Page 14: griffon plugin を 実際に作ってみよう #jggug

はまった処(実装サンプル側

● 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) }

}}

 

Page 15: griffon plugin を 実際に作ってみよう #jggug

はまった処(実装サンプル側

● @PropertyListener がサンプル記述で動かなかった><○ 正確には使い方に凄く悩んだ。○ bindされている変数が変更された時にトリガーで

Controller関数を呼ぶ機能だけど

     

def controller //☆

@Bindable @PropertyListener({controller.changeActive(it)}) String title

def changeActive = {title -> println "changeActive ${title.dump()}"switch(title.newValue){ //新しい値

Page 16: griffon plugin を 実際に作ってみよう #jggug

時間切れで出来なかったこと

● 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

 

Page 17: griffon plugin を 実際に作ってみよう #jggug

〜<環境設定編>〜

Page 18: griffon plugin を 実際に作ってみよう #jggug

事前環境設 (Windows:Kinect)

1. Kinect の購入a. amazonで12000円ぐらい

b. 電源が別途必要、だいぶ大きめ

c. 商用ライセンスはまだなので、無料シーンのみ利用可能

d. Kinect SDKを使えば音源の方向、距離情報等も取れるらしい

 

Page 19: griffon plugin を 実際に作ってみよう #jggug

事前環境設 (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

Page 20: griffon plugin を 実際に作ってみよう #jggug

事前環境設 (Windows:Xtion ProLive)

1. Xtion Pro Live の購入a. amazonで24000円ぐらいb. USB2.0接続、小さい、電源いらずc. 商用利用は可能(ただKinect SDKは使えない)

 

Page 21: griffon plugin を 実際に作ってみよう #jggug

事前環境設 (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

Page 22: griffon plugin を 実際に作ってみよう #jggug

〜<参考サイト>〜

Page 23: griffon plugin を 実際に作ってみよう #jggug

環境構築編

● 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

Page 24: griffon plugin を 実際に作ってみよう #jggug

プログラム編

● @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

 

Page 25: griffon plugin を 実際に作ってみよう #jggug

書籍(サンプル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