SlideShare a Scribd company logo
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           <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
                                            ]
                                    
次にOSごとのライブラリをコピーする設定

● 次に対応OSの記述をば
  ○ OpenniGriffonPlugin.groovy
       def platforms = ['linux','windows','windows64', 'macosx']

● こんな感じで配置して、jogl-compatあたりの
  scripts/_Event.groovyの記述をコピー編集
 
● あとは
  ○ 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

More Related Content

PDF
Synverll
PDF
ZynqMPのQEMU
PDF
TruffleSqueakの紹介
PDF
Qt5 の新機能 2012/12/15
PDF
Qt5 の Input Method
PDF
基礎からのCode Contracts
PPT
How to manage Cakephp @CakePHP_Fukuoka_2
PDF
Read Groovy Compile process(Groovy Benkyoukai 2013)
Synverll
ZynqMPのQEMU
TruffleSqueakの紹介
Qt5 の新機能 2012/12/15
Qt5 の Input Method
基礎からのCode Contracts
How to manage Cakephp @CakePHP_Fukuoka_2
Read Groovy Compile process(Groovy Benkyoukai 2013)

What's hot (20)

PDF
SmalltalkBoltでUFFI入門
PDF
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
PDF
qmake入門
PDF
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
PDF
Introduct 2016/04/09
PDF
Markup Template Engine introduced Groovy 2.3
PPTX
C# 8.0 非同期ストリーム
PPTX
OSCによるソフトウェア連携
PDF
Ohotech特盛 #11 Box2DWebを触ってみよう
PDF
20210515 cae linux_install_vb
PDF
An Internal of LINQ to Objects
PDF
もしトラ
PDF
groovy 2.1.0 20130118
PDF
Groovyの紹介20130323
PDF
Decsx launcherv 2.5
PPTX
node-gypを使ったネイティブモジュールの作成
PDF
Inside FastEnum
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
PPTX
async/await のしくみ
PDF
UniRx - Reactive Extensions for Unity
SmalltalkBoltでUFFI入門
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
qmake入門
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Introduct 2016/04/09
Markup Template Engine introduced Groovy 2.3
C# 8.0 非同期ストリーム
OSCによるソフトウェア連携
Ohotech特盛 #11 Box2DWebを触ってみよう
20210515 cae linux_install_vb
An Internal of LINQ to Objects
もしトラ
groovy 2.1.0 20130118
Groovyの紹介20130323
Decsx launcherv 2.5
node-gypを使ったネイティブモジュールの作成
Inside FastEnum
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
async/await のしくみ
UniRx - Reactive Extensions for Unity
Ad

Similar to griffon plugin を 実際に作ってみよう #jggug (20)

PDF
Griffon10 in groovy_fx
PDF
20110819 関西 kinect勉強会 初級編
PDF
Macでかんたんkinect by @yopita _
PDF
OpenCLに触れてみよう
PDF
NPAPIを使ったandroid標準ブラウザの拡張方法
PDF
イマドキの現場で使えるJavaライブラリ事情
PPTX
Javaで簡単にgpgpu aparapi
PPTX
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
PDF
Grailsのススメ(仮)
PDF
Glfw3,OpenGL,GUI
KEY
PyOpenCLによるGPGPU入門
PPTX
2013.01.18 G*Workshop GGX 2012 Report
PDF
OpenCVをAndroidで動かしてみた
KEY
Leiningen超速入門
PPT
Inside mobage platform
PDF
Gws 20130315 gradle_handson
PDF
Gradleどうでしょう
PDF
Open binder
PDF
Yesod(at FPM2012)
PDF
Grails 2.0.0.M1の話
Griffon10 in groovy_fx
20110819 関西 kinect勉強会 初級編
Macでかんたんkinect by @yopita _
OpenCLに触れてみよう
NPAPIを使ったandroid標準ブラウザの拡張方法
イマドキの現場で使えるJavaライブラリ事情
Javaで簡単にgpgpu aparapi
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
Grailsのススメ(仮)
Glfw3,OpenGL,GUI
PyOpenCLによるGPGPU入門
2013.01.18 G*Workshop GGX 2012 Report
OpenCVをAndroidで動かしてみた
Leiningen超速入門
Inside mobage platform
Gws 20130315 gradle_handson
Gradleどうでしょう
Open binder
Yesod(at FPM2012)
Grails 2.0.0.M1の話
Ad

More from kimukou_26 Kimukou (9)

PPTX
JRebel for Android 1.2.14 update
PDF
JRebel for Android 1.0 を試食してみた
PDF
レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用
PDF
Eclipse ADTとAndroidStudio両方で動かせる開発環境構築
PDF
Try_to_writecode_practicaltest #atest_hack
PDF
Twitter sphere of #twitter4j #twtr_hack
PDF
明日から使えるgradle
PDF
Layout analyzerでのgroovyの利用について
PDF
Hudson using Groovy #jggug
JRebel for Android 1.2.14 update
JRebel for Android 1.0 を試食してみた
レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用
Eclipse ADTとAndroidStudio両方で動かせる開発環境構築
Try_to_writecode_practicaltest #atest_hack
Twitter sphere of #twitter4j #twtr_hack
明日から使えるgradle
Layout analyzerでのgroovyの利用について
Hudson using Groovy #jggug

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

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