lab1092

BlenderとPythonの話題が主になっている(?)blog

Pythonistaへの道

Blenderで使えるモジュールを調べてみよう

どうも、ぼくです。

今回はBlenderのPythonで使えるモジュールを調べてみることにします。
やっていることはBlenderっぽくないですが、「Pythonの基本的なところを学習する環境としても使える」ということをわかってもらえるといいんじゃないでしょうか。

以下のBlog記事で紹介されているものをBlender上のPython Interactive console上で、というわけですね。


ロード済みモジュールを確認:


ロード済みモジュールを確認するには、 sys.modules.keys() を実行します。

>>> import sys
>>> sys.modules.key()



利用可能なモジュールを確認:


Blenderに同梱されているPythonのライブラリは、「標準ライブラリ(流石にTKはありません)」+αです。これを一覧で確認します。


>>> buf=[]
>>> for m in pkgutil.iter_modules():
... buf.append(m[1])
...
>>> buf.sort()
>>> buf


これで確認してみると…。xmlrpcとかnumpy…えっ?numpy???



「何をするものか」を確認:


さて、一覧が取得できても、個々に「何をするもの」かまでは名前からだけではわかりません。そこで help() 関数。 以下のように実行してみます。

>>> import xmlrpc
>>> help(xmlrpc)
Help on package xmlrpc:
NAME
xmlrpc - # This directory is a Python package.
PACKAGE CONTENTS
client
server
FILE
/Applications/Blender/blender.app/Contents/Resources/2.74/python/lib/python3.4/xmlrpc/__init__.py


パッケージやモジュール、関数に help() 関数を使ってみると説明が表示されるので良さげです。


ここで、落とし穴。 BlenderのInteractive Python Consoleは表示できる行が決まっていて(デフォルト256行)、help(numpy) とか help(unittest) とか長い内容の表示は全部できずに(先頭が)切れてしまいます。これを変更するには Console Scrollback の値を増やします。

[Add-on]自分で作ったAdd-onに追加のモジュールが使えるかどうかで機能を変える:


Pythonは自身で書いた .py ファイルをモジュールとして使用することが可能です。Add-onで、特定のパッケージまたはモジュールがインポート可能な時のみ特定機能を使用可能にする、というのを submitwordpress.py で使っていたりします。

kanaflg = False
# import romankanatbl as extention
try:
import romakanatbl.romakanatbl as rk
kanaflg = True
print("[SubmitWordPress] romankana extention is available.")
except:
print("[SubmitWordPress] no romankana extention.")


try文の中で import 文を実行して登録できるかをやっているわけですね。


あと、「モジュールとして登録できるファイルは一体どこに?」とかは最初に紹介したBlog記事を参考にしてスクリプトを実行するか、 メニュー、Help > System Info で出力されるテキストから、 Directories あたりの項目をチェックしておけばいいんではないでしょうか。


では。

メモ:WordPressのXML-RPC APIの一覧を表示してみた

このコードで
import xmlrpc.client
url = <yourURL>
server = xmlrpc.client.ServerProxy(url)
rslt = server.mt.supportedMethods()
for x in rslt:
   print(x)
こんなのが出るようです。
wp.getUsersBlogs
wp.newPost
wp.editPost
wp.deletePost
wp.getPost
wp.getPosts
wp.newTerm
wp.editTerm
wp.deleteTerm
wp.getTerm
wp.getTerms
wp.getTaxonomy
wp.getTaxonomies
wp.getUser
wp.getUsers
wp.getProfile
wp.editProfile
wp.getPage
wp.getPages
wp.newPage
wp.deletePage
wp.editPage
wp.getPageList
wp.getAuthors
wp.getCategories
wp.getTags
wp.newCategory
wp.deleteCategory
wp.suggestCategories
wp.uploadFile
wp.getCommentCount
wp.getPostStatusList
wp.getPageStatusList
wp.getPageTemplates
wp.getOptions
wp.setOptions
wp.getComment
wp.getComments
wp.deleteComment
wp.editComment
wp.newComment
wp.getCommentStatusList
wp.getMediaItem
wp.getMediaLibrary
wp.getPostFormats
wp.getPostType
wp.getPostTypes
wp.getRevisions
wp.restoreRevision
blogger.getUsersBlogs
blogger.getUserInfo
blogger.getPost
blogger.getRecentPosts
blogger.newPost
blogger.editPost
blogger.deletePost
metaWeblog.newPost
metaWeblog.editPost
metaWeblog.getPost
metaWeblog.getRecentPosts
metaWeblog.getCategories
metaWeblog.newMediaObject
metaWeblog.deletePost
metaWeblog.getUsersBlogs
mt.getCategoryList
mt.getRecentPostTitles
mt.getPostCategories
mt.setPostCategories
mt.supportedMethods
mt.supportedTextFilters
mt.getTrackbackPings
mt.publishPost
pingback.ping
pingback.extensions.getPingbacks
demo.sayHello
demo.addTwoNumbers
wpStats.get_key
wpStats.check_key
wpStats.get_blog_id
wpStats.get_site_id
wpStats.update_bloginfo
wpStats.update_postinfo
wpStats.ping_blog
wpStats.flush_posts
wpcom.get_user_blogids
wpcom.getFeatures
wpcom.addApplicationPassword
wpcom.blackberryUploadFile
wpcom.blackberryGetUploadingFileKeys
wpcom.getUsersSubs
wpcom.set_mobile_push_notification_settings
wpcom.get_mobile_push_notification_settings
wpcom.mobile_push_register_token
wpcom.mobile_push_unregister_token
wpcom.mobile_push_set_blogs_list
wpcom.mobile_push_win_phone_get_last_notification

submitwordpress.py が blendernation.com で紹介されました。

086こちらで既に紹介している"submitwordpress.py"ですけれども、Blenderのニュースサイト、 blendernation.com で紹介されましたよ。ありがとう、 B@rtさん。

Add on: Submit to WordPress

WordPressの管理画面開いてレンダリング画像とかキャプチャ画像をアップロードして、タイトルとちょっとした本文書いて、というのが面倒な方、一秒でも Blender の 3Dビューを眺めていたい方向け…というか。

ソースコードは github にあってblenderartists.org のスレッドも。

XML-RPCがBlenderのPythonライブラリにあるのと、blog投稿のためのXML-RPC APIがあったのでとりあえず作ってみました的な感じですね。その割には2.5以降でちゃんとプラグイン作ったことが無かったので(えっ?)思ったよりも時間かかっちゃいましたけども。

発端?はこちらのツイート。





前のエントリ時点から、少しばかり手を入れてます。使い方はこちら参照。…ほうほう、ローマ字…

そういえばblendernationedも バファローベルの件 以来ですか(あのときは「タレこんでない」ニュース提供元って感じでしたけど)。 

例のAdd-on

076

タイトルと一行コメントをOpenGLプレビューとともにWordPressへポストしてくれるAdd-onです。
XMLRPCでWordPressにPOST出来る話だったので、何故か作って…

メリットとしては「OpenGLプレビューを生成して、JPEGファイルに保存して、ブラウザを立ち上げて、JPEGファイルをアップロードして、新規投稿画面を開いて一言コメント書いて、投稿」の手順をまあまあの部分省ける、というところでしょうか。WIP(Work in Progress)記事などにどうでしょう?

簡単に使い方を説明しておくと user: にユーザー名、 password: に パスワード、 url: にxmlrpcでアクセスするURL をそれぞれ入力します。事前に、WordPressの XMLRPCサポートを有効にしておく必要があるので確認してください。  

[Update]ボタンで上記の3つを保存します。次回のAdd-on起動時に自動的に読み込みます。

あとはタイトルとテキストを入力して [SubmitWordPress]ボタンを押してみるといいですよ。

↓は現時点のソースコード。 


そういえばここ数年Blenderで一定期間何か作っていることってないので自分には必要性を感じない…

このAdd-onを使って実際に wordpress.com にポストした記事はこちら。
   http://lab1092.wordpress.com/2013/07/07/cell-facture-rigid-body-%E3%82%92%E8%A9%A6%E3%81%99/


ではー。 

なるべく均等に均等に。

想定としては直線状に並んだm個のセルを同様に並んだn個のセルに「同じ並びのように」見えるように配置する、というものなのかな。

画像の拡大縮小の場面とかそういうのでピンとくるかな?

1. 全体の幅をセル数で割ります(セルの基本幅/整数)
2. 全体の幅をセル数で割ったあまりを求めます。
3. ループさせていって…
a) 上記 2.の値を足していきます。
b) a)の値が セル数 以上なら
I) 足しこむセルの幅+1
II) a)から セル数 引きます
c) 最後のループ回だけ a) が 0以上なら
X) 足しこむセルの幅+1
d) 設定した幅の分だけ足します

# Distanation width(px)
dw = 800
# how many cells have a line?
ce = 99


# delta number
dd = dw / ce

# modular number
dm = dw % ce

s = 0 # delta
t = 0 # sum of pixels
y = 0 #

# range(ce) means... for (x = 0; x < ce; x++){
for x in range(ce):
 y = y + dm
 if y >= ce:
  s = dd +1
  y = y - ce
 elif x == (ce - 1) and y > 0:
  s = dd +1
 else:
  s = dd
 print s,
 t = t + s


---
結果
8 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 8 9 8 8
8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8
8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 9

KOF2012へおつかいに…

684799244
どうも、ぼくです。
久々のblogです。

さて、神戸ITフェスとかWordCamp大阪とかあったのですが、その辺はすっ飛ばして、11/9,10と開催されたKOFのブース出展手伝って(?)きたおはなし。

11/10に行ってきたんですけど、実は行こうかどうしようか、というのだったんです、当初。

ところが某所から「KOFに出たりします?」というのが11/6、 そして(厳密に言うと別経路で)11/9に「とある荷物」を受け取って11/10に南港ATCに立っていた、と。


はい、PyConJP 2012 のTシャツ。 L 3枚、XL 2枚 だったっけな、送られてきました。
これを当日南港ATCにある kyoto.py のブースへお届けする簡単なお仕事を。

そして、ブースを訪れてくださった方で、サイズが合う方にそれぞれお渡しした、という次第。
はからずしも、 ruby の牙城を崩してきたようで^^


その他写真はこちらから…



来年は PyCon APAC 2013 が東京で開催されるそうで。いやーすごいですね。

livedoor プロフィール
保管庫
Recent Comments
訪問者数
  • 今日:
  • 累計:

Vimeo
lab1092をフォローしましょう