• Like
  • Save
Tkbpy010 20080617
Upcoming SlideShare
Loading in...5
×
 

Tkbpy010 20080617

on

  • 1,479 views

Tkbpy010

Tkbpy010

Statistics

Views

Total Views
1,479
Views on SlideShare
1,478
Embed Views
1

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tkbpy010 20080617 Tkbpy010 20080617 Presentation Transcript

    • てきとーbpy 第10回:Draw.PupBlock 2008.06.17.まんだ ■権利と免責  この文書の著作権は作者である「まんだ」が所有します。  利用は自由ですが、この文書を利用したことによるいかなる損害 についても作者はその責を負わないものとします。 1
    • 目次 ● はじめに ● 1.スクリプトにパラメータを渡す方法 ● 2.Draw.PupBlock ● 3.addJPKana.pyでは ● 終りに 2
    • はじめに ● さて、前回で、自分が作ったBlenderpythonスクリプトをメニューから呼び出す、というところ まで出来ましたね。 ● ただ、メニューから呼び出せるようになったものの、このままではちょっと便利じゃないのか な、と思います。 ● 最近のバージョンのBlendeでは、Pythonスクリプトから「カスタムポップアップ」とも呼べる” Draw.PupBlock”というものがあります。 – Cylinderを追加するときのUIも同様のものです。 ● ADD>Mesh>Cylinder ● これをBlenderpythonで扱うことができます。 – Draw.PupBlock ● 今回はこのDraw.PupBlockを本当に簡単に紹介しときます。 3
    • 1.スクリプトにパラメータを渡す方法 ● 目的にもよりますが、スクリプトにパラメータを渡したい場合、Blenderではどのような方法 が考えられるでしょうか。 – Pythonメニュー拡張 ● Ver.2.46にバンドルされたスクリプト、vrml97_export.py を参照 –File>Export>VRML97 – BGL.Drawモジュール ● これまでのBlenderPythonで一般的な画面 ● Scriptsウィンドウに描画 –さまざまな部品を配置可能 – Draw.PupMenu() ● ポップアップメニュー(コンテキストメニュー)を表示 – Draw.PupBlock() ● BGL.Drawモジュール と Draw.PupMenu()の中間。 ● 結構最近できた模様。 – Add> Mesh> にある、スクリプトなどを参照 4
    • 2.Draw.PupBlock() ● たとえば、メッシュ自動生成スクリプトで、数値パラメータを1つ与えたい程度な ら、Draw.PupBlock()が使えます。 – これまでのBGL.Drawは確かに自由度は高いですが、イベントハンドリングをしなけれ ばならないなど、敷居が少し高いものでした。 – Draw.PupBlock()はどちらかというとダイアログに近く、(1)パラメータを設定(2)実際の 生成処理を駆動、という、ある程度決まった流れのケースで手軽に使えるようになって います。 – 実際に、Draw.PupBlock()をスクリプト中に入れると、その部分でスクリプトの実行は OKボタンを押すまで止まります。 ● OKボタンを押す前に、登録した部品に情報を入力することができます。 5
    • 3.addJPKana.pyでは ● addJPKana.pyでは、main関数にそのまま def main(): TEXT_ROMAJI= Draw.Create('') のものが書いてあります。 PREF_KATA= Draw.Create(False) PREF_ONLY= Draw.Create(False) – 変数に相当するものを割り当て # Get USER Options pup_block= [ – 画面に相当する配列を定義 ('Text:', TEXT_ROMAJI, 0, 50, 'Fill the ROMA-JI in this Field.'), ('KATAKANA', PREF_KATA, 'OFF:Hiragana ON:Katakana'), ('ONLY KANA?', PREF_ONLY, 'If you need only KANA, turn it on.'), – 実際に描画 ] if not Draw.PupBlock('Roma-ji to Hiragana', pup_block): – 割り当てた変数から値を取得 return ● ここで設定しているのは以下の通り r = addText3D(TEXT_ROMAJI.val, PREF_KATA.val,PREF_ONLY.val) – テキストボックス(String) if(r): Draw.PupMenu('OK,You may have to select a font.') else: – トグルボタン(Boolean) Draw.PupMenu('Do nothing...') – トグルボタン(Boolean) if __name__ == '__main__': main() ● 実際にポップアップとして表示するのは – Draw.PupBlock() ● 値をとりだす場合にはPREF_KANA.valと いう書き方をします。 6
    • 終わりに ● 今回はDraw.PupBlock()を取り上げてみました。 – サンプルはくそみたいなもんですが。 ● たくさんのパラメータを使った画面を作りたい場合には従来の、Blender.Drawモジュールを 使ってください。 ● blender.orgのWikiにあるサンプルをDraw.PupBlock()を使って書き直してみるとかに挑戦 しても面白いかもしれません。 – http://wiki.blender.org/index.php/Manual/Python_Scripting 7
    • Thanks for Watching and Happy blending!! 8