忘却まとめ

Blenderの中級者・上級者向けの踏み込んだ情報や、アドオン・3DCGに関する情報を記事にします

【Customize Menu Editor ver1.2.0 アップデート】メニュー表示場所の追加・マクロのエラー回避・ユーザープロパティ【Blenderアドオン】

Blenderアドオン

更新日:

より柔軟なメニューが作れるように、上級者向けの機能を追加・改善を行いました。

ダウンロード

gumroad

BOOTH

Blender Market

編集メニュー

表示切り替えとタイプ切り替えの違いを識別しやすいように、編集メニューの表示を改善しました。

  • 追加するメニューアイテムの種類を選べるようになりました
    • 左上の端の「+」ボタン
  • メニューアイテムの複製位置は、アクティブアイテムの下になるように変更しました

use_property_split を追加

レイアウトオプションにuse_property_splitを追加しました。
プロパティのラベルとボタンを分割表示します。
FloatPropertyを利用するときや、多くのプロパティを並べて表示したい時に便利です。

  • use_property_splitのオプションで、use_property_decorateを設定できます
    • プロパティの横にキーフレーム追加ボタンを表示します

レイアウトの直接入力

「レイアウト要素のみ」タイプにて、直接レイアウトのスクリプトを入力できます。

  • layout.xxx~のような形にする必要があります
  • " ; "により複数行を入力した場合は、横並びになります
    • 縦並びにしたい場合は、columnを手動で入力する必要があります
  • 上級者向けです

パネルメニューの表示場所を変更できるように

パネルメニューを表示するエディタータイプ・3Dビューでの表示するモードの限定プロパティエディターでの表示場所の設定ができます。
この設定は、「アドオンとして書き出し」を実行した際にも反映されます。

エディタータイプ

  • 3D View
  • Image Editor
  • Node Editor
  • Dopesheet Editor
  • Graph Editor
  • Nla Editor
  • Clip Editor
  • Sequence Editor
  • Properties
  • Text Editor

3Dビューでの表示するモードの限定できるタイプ

3Dビューの場合、表示するモードを限定させることができます。

  • None
  • Mesh Edit
  • Curve Edit
  • Surface Edit
  • Text Edit
  • Armature Edit
  • Metaball Edit
  • Lattice Edit
  • Pose Mode
  • Sculpt Mode
  • Weight paint
  • Vertex paint
  • Image paint
  • Particle Mode
  • Object Mode

プロパティエディターでのタブの表示場所

プロパティエディターの場合、タブの表示場所を設定することができます。

  • tool
  • render
  • output
  • view_layer
  • scene
  • world
  • object
  • modifier
  • particles
  • physics
  • constraint
  • data
  • material
  • texture

マクロ

「エラーを回避」オプションを追加

エラーを回避するようにしました。

  • 実行してエラーがあった行は赤く表示されます
  • コマンドにエラーが発生した場合は、その行をスルーして続行します
  • エラーログを見てデバッグしたい場合は、このオプションをオフにしてください
  • アドオン化する際、エラーがあって赤くなっている行はスルーします

マクロの編集リストをメニューとして登録

マクロにアクセスしやすいように、マクロ編集リストをメニューに追加する機能を作成しました。

  • マクロのリストをメニューとして登録
  • マクロ行のリストをメニューとして登録
  • このメニューは「アドオンとして書き出し」で書き出すことができません。

ユーザープロパティ

ユーザーがプロパティを作成できます。
プロパティを利用した高度な処理を行うことができます。
上級者向けです。

  • アドオンとして書き出しした際には、共に書き出されます
  • ユーザープロパティリストを、ファイルに書き出し・読み込みができます

利用できるタイプ

タイプ説明
bool真偽
string文字列
int整数
float浮動小数点

上記のプロパティタイプが利用できます。

その他の設定可能なデータ

種類説明
var_name内部で使うプロパティの変数名
固有名
空白は利用できません
defaultプロパティの初期値を設定します
アドオンとして書き出した時に利用されます
nameプロパティの名前
descriptionプロパティの説明
subtypeint・float・stringのデータの種類を設定できます
unitint・floatのデータの単位を設定できます
minint・floatの最低値を設定できます
maxint・floatの最大値を設定できます

アドオン内での使い方

uprop("var_name")

上記のようなコードをプロパティとして利用できます。

  • "コマンド"タイプ・"レイアウト"タイプ・マクロ
    • var_nameの変数名のユーザープロパティアイテムの値を返します
  • "プロパティ"
    • var_nameの変数名のユーザープロパティアイテムをメニューとして表示します
bpy.context.preferences.addons['customize_menu_editor'].preferences.customizemenu_colle_uprop['var_name'].bool

アドオン外部からアクセスするには上記のように書く必要があります。

  • 'customize_menu_editor' の箇所はCustomize Menu Editorのフォルダ名
  • 'var_name' の箇所は取得したいデータの変数名
  • 'bool' の部分はプロパティのタイプ

アドオンとして書き出し

ユーザー設定からもアドオンとして書き出しできるようになりました。

設定がアドオン設定として保存され、再度書き出す際の入力を省けるようになりました。
アドオン設定からも書き出し・設定変更ができます。

  • 以下の設定もアドオンとして書き出すことができるようになりました
    • ユーザープロパティ
    • パネルメニューのカテゴリー
    • パネルメニューのエディタータイプ
    • パネルメニューの3Dビューでの表示するモードの限定
    • パネルメニューのプロパティエディターでの表示場所
  • メニューだけではなく多くのデータをアドオン化できるようになったため、機能の名称変更しました
    • old 「メニューをアドオンとして書き出し
    • new「アドオンとして書き出し

バグ修正

  • LinuxやMacでアドオン書き出しが行えない問題を修正しました

直前の履歴を取得

  • "プロパティ"タイプにて、オブジェクト名などに空白が存在する場合に、正常に履歴を取得できない問題を修正しました
  • 自動で生成されるボタン名にて、30文字以上の場合、可能ならば短くなるように改善しました

'bpy.data.xxx[xxx]' を 'bpy.context.xxx' に自動変換

履歴を取得する際、常にアクティブなデータに対してコードが動作するように、履歴を書き換えします。

現在は下記のデータのみ対応しています。

  • objects各種
  • shape_keys
  • materials
  • particles

詳細

  • bpy.data.xxx[xxx]~ とは、Blender内の特定のデータです
  • bpy.context.xxx~とは、現在アクティブなデータであり、ユーザーの操作によって常に変わります
  • 常に特定のデータに対してコードが動作するようにしたい場合は、この設定をオフにしてください
  • "コマンド"タイプ・"プロパティ"タイプ・マクロでこのオプションを利用できます

例 : マテリアルノードのプロパティの変更

マテリアルノードのプロパティの変更を履歴をそのまま登録しても、常に特定のマテリアルでしか動作しません。
オプションは、アクティブなマテリアルで動作するように下記のように書き換えます。

元のコード

"Material.001"の"Principled BSDF"ノードのプロパティのメニュー

bpy.data.materials["Material.001"].node_tree.nodes["Principled BSDF"].inputs[4].default_value

オプションを有効化して修正されたコード

アクティブなマテリアルの"Principled BSDF"ノードのプロパティのメニュー

bpy.context.object.active_material.node_tree.nodes["Principled BSDF"].inputs[4].default_value

その他のバグ修正

  • タブの削除機能にて、最初のタブしか削除できなかった問題を修正しました

アドオンの制作依頼はこちら

-Blenderアドオン
-

Copyright© 忘却まとめ , 2020 All Rights Reserved Powered by STINGER.