2016年2月6日土曜日

[Blender] Pythonで複数の設定を一瞬で編集する方法

How to automate editing in Blender

3次元CG編集ソフトBlenderはPython言語で機能拡張やバッチ処理をすることができます。
マイクロソフトOfficeシリーズがVisual Basic Application言語でマクロを実行できるのに似ています。
Pythonのスクリプトを使ったら無数のボーンの設定をもれなく一瞬で編集出来たのでその方法をまとめてみました。


環境

  • Windows 8.1
  • Blender 2.75a


Python言語の特徴

Pythonを他のプログラミング言語に比べた場合、特に次の2点が気になりました。
  • 変数名の宣言が不要
    変数名のタイプミスに気付きにくいです。
  • if文やfor文の入れ子はインデント(段落)で記述する必要がある
    見やすさのためではなく仕様です。
オブジェクト指向やラムダ式なども採用されているのでC#やJavaやVB.NETの経験者ならすぐに扱えると思います。


入門編・全てボーンの名前を表示してみる

ここからBlenderを使った説明です。
どのエリアでもいいので Python Console を開きます。

上の画面に映っているキャラクターはポケットクエリーズのクエリちゃんです。
3D ViewのObject Modeでボーンを選択した状態で Python Console に次のコードをコピーペーストします。
※改行やインデントのスペースは省略できません。


青い文字でボーンの名前が全て表示されました。


実用編・ボーンを移動禁止に一括編集する

下の画像はモデルデータを編集中の画面です。
Pose Editorでクエリちゃんの頭のボーンを間違って移動させたらこんなことになってしまいました。

人型モデルにポーズをつけるときはボーンの移動を禁止したほうが安全に操作できると思います。
移動禁止にするにはTransformのLocationのX・Y・Zそれぞれをロックします。

モデルによっては40個以上もあるボーンを一つずつ移動禁止にするのは骨の折れる作業です。
Pythonスクリプトを使えばこのような作業は一瞬で済みます。

3D ViewのObject Modeでボーンを選択した状態で Python Console に次のコードをコピーペーストします。
※改行やインデントのスペースは省略できません。


これで選択したボーンが全て移動禁止になりました。


オブジェクトやプロパティはツールチップに表示される

入力欄にマウスポインターを補バーさせるとオブジェクトやプロパティがツールチップに表示されます。
スクリプトで変更したいプロパティ名はこの方法で調べられます。



関連ブログ

BlenderのモデルデータをMMDに変換する方法
[Blender] ボーンを曲げてもメッシュが曲がらない原因と修正方法
3次元CGソフト・Blenderの脱初心者を目指す
クエリちゃんMMDモデル更新
[Unity3D] 画面表示を左右反転させる方法
[Unity3D] 二つのscene(シーン)を一つにまとめる方法
[Unity3D] サイドバイサイドで立体視できるゲームを作るには
[Blender] obj2opengl.plをJava用に改造する
[Unity3D] Blender could not be found.を解決するには
[Unity3D] Unity4からUnity5へのバージョンアップでの変化

以上、参考になれば幸いです。

0 件のコメント:

コメントを投稿