« Cylinders on the Bones(Blender スクリプト) | Main | ガラダK7~ヾ(@^▽^@)ノ »

September 12, 2013

スクリプト小ネタ置き場

スクリプトの小ネタ置き場:
使えそうなのができたらここに追記していく予定:-)
(blender 2.6-)

-------------------------------------------------
●Blender多国語対応用サンプル(全30カ国)アドオン

ボタンを押すと英語、日本語で現在の使用言語を表示。

実際のプログラム上では言語辞書のキーの右(:以降)の数字を0にすれば
非対応言語について英語表記で対応することができる

show_langage.py

Snapcrab_noname_201467_121914_no00

-------------------------------------------------
●メッシュを編集モードでワンクリックミラーコピー(アドオン)

メッシュの編集モードで選択した頂点、辺、面をボタンの軸で一発ミラーコピー
するアドオンです。
ミラーのピボットはそのオブジェクトのオリジン(原点)になります。
メッシュを選択していても編集モード以外で実行した場合は編集モードに移行
して終了します。
(ミラーリングの原点が正しくないのを修正しました。2014.06.06.1:14修正)

mmcopy.py

Snapcrab_noname_201467_122515_no00

Snapcrab_noname_201467_121832_no00

-------------------------------------------------
●スクリプトによる面、辺の作成方法

draw_mymesh.py
-------------------------------------------------
●add-onの雛形(日英バイリンガル暫定版)

スクリプト中に含まれる全ての

XXXXをAdd-on名
aa.aaをid名
CTNAMEをカテゴリ名
ATNAMEを作者名

に置き換えるとツールバーのボタンから起動する新アドオンのスケルトンになる

例)
XXXX→NewAddon
aa.aa→new.addon
CTNAME→User
ATNAME→ishidourou

※日本語表示からインストールすると日本語表記に、その他の場合は英語表記になる
※2.7で新設されたカテゴリのタブはclass XXXXPanelのbl_category で指定する
 "Tools"、"Create"、"Relations"、"Animation"、"Physics"等がある
 (Translate(移動)等のボタンを右クリックしてソースを見ると確認できる)
 2.6まではこれを指定しても無視される
 また、オブジェクトモード、編集モードどちらかのみで表示したい場合はさらにbl_context = "objectmode"、bl_context = "mesh_edit"で指定すればよいようだ

ダイアログなし
my_simple_ej_addon_template.py
ダイアログ付き
my_dialog_ej_addon_template.py
-------------------------------------------------
●現在のローカライズ(言語設定)の設定状況をコンソールに表示
(Preferenceのローカライズ状況を調べる方法のサンプル)

print_pref_interfonts.py
-------------------------------------------------
●スクリプトによるnodeの使い方サンプル
公式にあったnodeの2.5版サンプルコード2.67以降用に修正したもの

node_sample01.py
-------------------------------------------------
●オブジェクト内の選択されたFaceをばらばらに複製、Shapekeyで個々に縮小できる

dup_splitface__addshapekey.py
-------------------------------------------------
●オブジェクト内の選択されたFaceをばらばらに複製する(Bmeshライブラリを使用)

bmface_dup.py
-------------------------------------------------
●add-onの雛形(ボタン・機能が複数の場合)

Buttons

スクリプト中に含まれる全ての

XXXXをAdd-on名
BLNAMEをブロック名
FCNAMEを機能名
fc.nameをid名
CTNAMEをカテゴリ名
ATNAMEを作者名

に置き換えると、
ツールバーのボタンから起動する複数機能を持つアドオンのスケルトンになる
(とりあえず2つの機能の使いまわし)

例)
XXXX→NewAddon
BLNAME→Block
FCNAME→Func
fc.name→fnc.name
CTNAME→User
ATNAME→ishidourou


ボタンを押すとシステムコンソールに押したボタンの機能名を表示
my_buttons_addon_template.py
-------------------------------------------------
●add-onの雛形(ボタン・機能が一つの場合)

スクリプト中に含まれる全ての

XXXXをAdd-on名
aa.aaをid名
CTNAMEをカテゴリ名
ATNAMEを作者名

に置き換えると
ツールバーのボタンから起動する新アドオンのスケルトンになる

例)
XXXX→NewAddon
aa.aa→new.addon
CTNAME→User
ATNAME→ishidourou


ダイアログなし
my_simple_addon_template.py
ダイアログ付き
my_dialog_addon_template.py
-------------------------------------------------
●アクティブオブジェクトに特定のモディファイアが使われているかどうか調べる

find_modifier.py
-------------------------------------------------
●アクティブオブジェクトの使用モディファイア名をリストアップする

listup_modifiers_name.py
-------------------------------------------------
●選択したオブジェクトと同じTypeを一発削除

delete_sametype.py
-------------------------------------------------
●選択したオブジェクトと同じTypeを全て隠す

hide_sametype.py
-------------------------------------------------
●Cubeのクローンを別レイヤーに作成

duptest01.py
-------------------------------------------------
●選択したarmature内のboneの名前をリストアップ

list_bone_name.py
-------------------------------------------------
●選択したobjectにマテリアルとUV設定テクスチャを付加

set_New_mat_tex_UV.py
-------------------------------------------------
●選択したObjectと同TypeのObjectに同マテリアルを割当て

set_same_mat_to_mesh.py
-------------------------------------------------
●【アドオン】Cylinder生成でパラメータ変更の仕組みを知る
Addonのスケルトンに

add_my_cylinder.py
-------------------------------------------------


|

« Cylinders on the Bones(Blender スクリプト) | Main | ガラダK7~ヾ(@^▽^@)ノ »

Comments

失礼致します。
最近Blenderを使い始め、欲しい機能を自分で作れないものかと
あちこち調べながら、こちらへたどり着きました。

自分で作ると、うまく動かなくて何度か諦めかけましたが、
おかげさまで、思っていた機能を全部入れたadd-onが
どうにか動くところまで こぎつけました。
ありがとうございます。

Posted by: もヂャ | October 31, 2014 at 01:34 PM

>もヂャ さん

コメントありがとうございます。

お役にたてたようで、とても嬉しいです。
スクリプトで自分の思いどおりにBlednerをカスタマイズできたときの喜びはまた格別ですよね。

Pythonは非常に覚えやすい言語ですし、Blenderでは多くの場合実行結果が一目でわかるので、
作ったスクリプトに少しずつ機能を拡張したり改良することで気がつけばいつの間にか色々な
ことができるようになっている、そんな魅力がBlenderのスクリプトにある気がします(^^)

Posted by: ishidourou24/いしだ(石灯篭) | October 31, 2014 at 07:05 PM

今回作ったのは、
オブジェクトの原点の 位置、回転、スケールを
個別に他のオブジェクトへ移植したり、
親子の座標を相対に切り変えたりする原点編集のadd-onなんですが、

こちらで公開されている、
日本語切り替えや、Quick Originと同じ機能が入っちゃってます。

中身の処理に自信が無いので、
今の所 予定は無いのですが、どこかで公開しても構いませんでしょうか。

Posted by: もヂャ | October 31, 2014 at 08:57 PM

>もヂャさん

Quick Origin等冒頭にMITライセンスをつけているものについては、流用の程度によって(ルーチンの大部分をそのまま流用等)適当な場所に当方の著作権表記とライセンス部分をつけていただくのが望ましいですが、もとのものに独自の機能を付加したり、改良したものなら、面倒であればそのまま公開していただいてもかまいません:)
便利なアドオンが増えるほどBlenderユーザーとしては嬉しいことですし。
また、このスクリプト置き場のものは一切制限はありませんのでご自由にお使いください:)

Posted by: ishidourou24/いしだ(石灯篭) | October 31, 2014 at 09:52 PM

もともと自分が欲しい機能を手に入れたい。
から始めたため、公開するという気は無かったのですが、
自分の知識の限界を越えて、
もっと使いやすくするための情報を得るためには、
あえて人目にさらすのも 一つの手かなと思い始めております。
ライセンス関係の作法については、
まだ さっぱり理解できてないのですが、
今回作ったものを何処かに公開した際には、
改めて ご報告しようと思っております。

Posted by: もヂャ | October 31, 2014 at 10:20 PM

>もヂャさん

ライセンスについては自分もよく理解しているわけではないですが、MIT
ライセンスはざっくり言うと

誰でもこのプログラムの一部または全部を元の作者に連絡をとることもなく
コピーしても改良しても公開しても販売してもなにしてもいいよー、でもこのプログラムを使って
変なことになっても責任とれないよーとプログラム(スクリプト)の取り扱いのガイドラインを宣言しているだけのものですので、

wisdommingle.com/mit-license/
(↑スパム避けに先頭のHTTP://を禁止ワードにしています(^^;のでブラウザのURL欄にコピーしてください)

にあるように元にした作者の著作権表記(流用した作者の独自性の強いと思った
サブルーチンの前後にでもそれとわかるように(c)表記でいれておけばよいのでは
ないでしょうか)とMITライセンスの全文(基本英語のみでOK)をスクリプト
冒頭にコメントとしてコピペするか、全文のリンク先を上記ページの例のように入れて
おけばいいのではないかと思います。(まちがってたらすいません)

ですので、とくにこちらに連絡をしていただかなくても大丈夫です:)
もちろん、公開先をご案内いただいたら拝見させていただきますよー(^^)

Posted by: ishidourou24/いしだ(石灯篭) | November 01, 2014 at 03:32 AM

失礼致します。
新しく気になった所をあちこち変更していたのですが、
あれこれ手を広げすぎて、自分でもよく解らなくなって来たため、
他の人の意見も聞いてみようかと思い、blender.jp にて公開して参りました。
とりあえず、ご報告まで。

Posted by: もヂャ | November 02, 2014 at 03:19 AM

>もヂャ さん

ダウンロードして拝見しました。
Blenderを使い始めてまもなくこうしたスクリプトが書けるのは凄いですね。
他の言語のプログラミング経験が豊富なのでしょうか。

2.72で実行し、いくつか使い方が想像つくボタンを使ってみましたが、
問題なく動作しているようですね。
ボタンが多いので、詳しい使い方の説明があると便利そうですね。

パネルのボタンの階層化はあまりやったことがないので、参考にさせていただきます:)

Posted by: ishidourou24/いしだ(石灯篭) | November 03, 2014 at 02:31 AM

恐縮です。
プログラムは3Dソフトで、今回のようにちょっとした補助ツールを
自分で作る程度でして、本格的なものは全くです。
GUIは まだ、ボタンとラベル表示しか理解できてないので、
チェックボックスや、コンボボックスが使えれば、
もっとコンパクトにできるのに。 と思いつつ
苦肉の策で、あんな感じになっています。

例のQuick Originと同様の機能ですが、
編集モードに入った時に表示される「選択位置に原点を移動」がそれです。
864行 付近の Origin to Selected でその処理を行ってまして、
ops 経由で、カーソルを移動して設定する大きな流れは同じです。
違うのは、エディットモードのみで行って、編集中の対象だけに影響する
ようになっているという所でしょうか。

作り始めた初期の処理では、オブジェクトモードに
機能を集中させる前提で作っていたため、
ボタンを押して編集モードに入ってから何か選択する
という流れでやっていました。

もうちょっとスマートにできないかと思いつつ、
後々オブジェクトモードにいながら、頂点位置を取る方法を
探そうかと考えていたのですが、Quick Originを知ってから、
編集モード限定の機能に切り替えました。
単純に処理の流れだけでなく、大きく影響を受けております。

言語切り替えについては、ツール使用中に言語を切り替えた場合
ボタンの表記が文字化けするため、一時期外していたのですが、
draw内で lang()を実行する事で回避できたため、
完全に そのまま使わせて頂いております。

私がこうして補助ツールを 使える状態にできたのは
ishidourou様が公開して下さっている情報のおかげです。
改めて、お礼致します。
私の作ったものが何かしらの参考になるなら光栄です。

あまり需要も無いかもしれないと、
公開場所では最低限の説明だけしましたが、処理のサンプル
として考えると、ボタンが、どんな機能なのか説明した方が良いですね。
ボタンの詳しい説明については、blender.jpに追記しておきます。

では、失礼致します。

Posted by: もヂャ | November 03, 2014 at 04:28 AM

>もヂャさん

>draw内で lang()を実行する事で回避できたため、
>完全に そのまま使わせて頂いております。

なるほど、その手がありましたか :)
こちらも参考にさせていただきます(^^)

Posted by: ishidourou24/いしだ(石灯篭) | November 04, 2014 at 12:46 PM

Post a comment



(Not displayed with comment.)




« Cylinders on the Bones(Blender スクリプト) | Main | ガラダK7~ヾ(@^▽^@)ノ »