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

1,814 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,814
On SlideShare
0
From Embeds
0
Number of Embeds
542
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. griffon plugin を実際に作ってみよう 2012/01/20 @kimukou_26
  2. 2. 今日のアジェンダ1. Griffon Pluginを書いてみよう a. 視覚的なのが面白いよね b. 今流行のって何だろう? c. Kinect動かせると面白いかも 業務用だとASUSからでてる Xtion Pro Live だよね  ● Open NI Pluginを作ってみよう〜
  3. 3. 今日のソースコード● プラグイン側 ○ 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 を事前に行ってください
  4. 4. 〜<plugin作成編>〜
  5. 5. Griffon Pluginの作り方の流れ● griffon create-plugin openni● mv openni griffon-openni ○ 公式が名前を変えているみたいなので合わせる● cd griffon-openni● griffon create-addon openni ○ 今回はDSL記述しないけど(汗● 手動で編集● griffon package-plugin nodoc
  6. 6. 使うライブラリは● simple-openni ○ http://code.google.com/p/simple-openni/ ○ processingのopenniラッパー(processing1.2でも動作
  7. 7. 依存ライブラリは下記の認識なので● griffon install-plugin jogl-compat● griffon install-plugin processing  うーん。でも依存情報書きかわらないよ =>手動で直しましょう ● plugin.xml <dependencies> ●   <plugin name=jogl-compat version=0.1 /> <plugin name=processing version=0.4 /> ●   </dependencies> ● OpenniGriffonPlugin.groovy def dependsOn = [ jogl-compat:0.1, processing:0.4 ]  
  8. 8. 次にOSごとのライブラリをコピーする設定● 次に対応OSの記述をば ○ OpenniGriffonPlugin.groovy  def platforms = [linux,windows,windows64, macosx]● こんな感じで配置して、jogl-compatあたりの scripts/_Event.groovyの記述をコピー編集 
  9. 9. ● あとは ○ griffon package-plugin nodocあたりでパッケージングして終了  ● 多分G*的にはOpenniGriffonAddon. groovyに DSL書くのが醍醐味 なのだろうけど(汗 
  10. 10. 〜<デモ>〜
  11. 11. 〜<はまった処>〜
  12. 12. はまった処(実装サンプル側● simple-openni というかopenniのインスタンスを一つ以上作 るとアクセス例外エラー ○ インスタンス共用みたいなことをしてみようと したけどうまくいかず><● pdeファイル=>Javaにする時、processing.coreの関数に厳 密な型チェックがかかる● simple-openniのコールバックはnoLoop()/loop()を記述して しまうと動かないっぽい ○ ProcesstestController.groovy 側でstop()/start() は可能
  13. 13. はまった処(実装サンプル側● processing側のjavaコードからgroovyコード参照 できないw(jointcompileが無理)   ○ たぶんこれはgriffonの現状の動作仕様かな? ○ processingコード自体をgroovyで書く事自体は可能 ● ジェスチャー登録の反応がかなり怪しい (一応手の認識コードです) kinect.addGesture("Wave"); kinect.addGesture("Click"); kinect.addGesture("RaiseHand");//腕あげる  
  14. 14. はまった処(実装サンプル側● 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) } } }  
  15. 15. はまった処(実装サンプル側● @PropertyListener がサンプル記述で動かなかった>< ○ 正確には使い方に凄く悩んだ。 ○ bindされている変数が変更された時にトリガーで Controller関数を呼ぶ機能だけど   def controller //☆ @Bindable  @PropertyListener({controller.changeActive(it)}) String title   def changeActive = {title -> println "changeActive ${title.dump()}" switch(title.newValue){ //新しい値
  16. 16. 時間切れで出来なかったこと● 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 
  17. 17. 〜<環境設定編>〜
  18. 18. 事前環境設 (Windows:Kinect)1. Kinect の購入 a. amazonで12000円ぐらい b. 電源が別途必要、だいぶ大きめ c. 商用ライセンスはまだなので、無料シーンのみ利用可能 d. Kinect SDKを使えば音源の方向、距離情報等も取れるらしい 
  19. 19. 事前環境設 (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
  20. 20. 事前環境設 (Windows:Xtion ProLive)1. Xtion Pro Live の購入 a. amazonで24000円ぐらい b. USB2.0接続、小さい、電源いらず c. 商用利用は可能(ただKinect SDKは使えない) 
  21. 21. 事前環境設 (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
  22. 22. 〜<参考サイト>〜
  23. 23. 環境構築編● 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
  24. 24. プログラム編● @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 
  25. 25. 書籍(サンプルDLは有● Making Things See: 3d Vision With Kinect, Processing, Arduino, and Makerbot <OReilly Media> ○ http://www.amazon.co.jp/Making-Things-See- Processing-Makerbot/dp/1449307078

×