狠狠撸

狠狠撸Share 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
  を事前に行ってください
?<辫濒耻驳颈苍作成编>?
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

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