Blenderでオリジナルのマーキングメニューを作成する方法

blender-original-marking-menu_thumbnail blender

Mayaみたいに自分がよく使う操作を、オリジナルのマーキングメニューに登録して呼び出せるように出来たら便利なので調べて実装してみました。メモとして記事を残しておきます。

マーキングメニューのPythonファイルを作る

まずコマンドを登録する入れ物となるマーキングメニューを作成します。これにコマンドを登録していきます。Maya Config Addon For Blender 2.8のfa_quadview.pyを参考にしました。

my_marking_menu.pyを作成します。
Pie_menuクラス内の
bl_label = “ラベル名”
bl_idname = “コマンド名”です。nameやauthorなどは好きなようにしてください。

bl_info = {
        "name": "My Marking Menu",
        "category": "3D View",
        "author": "harker"
        }

import bpy
from bpy.types import Menu



class Pie_menu(Menu):
    bl_label = "My Menu"
    bl_idname = "my_marking_menu"
    def draw(self, context):
        layout = self.layout
        pie = layout.menu_pie()
        pie.operator("view3d.view_axis", text="Left", icon='VIEW_ORTHO').type = 'LEFT'
        pie.operator("view3d.view_axis", text="Right", icon='VIEW_ORTHO').type = 'RIGHT'
        pie.operator("view3d.view_axis", text="Bottom", icon='VIEW_ORTHO').type = 'BOTTOM'
        pie.operator("view3d.view_axis", text="Top", icon='VIEW_ORTHO').type = 'TOP'
        pie.operator("view3d.view_axis", text="Front", icon='VIEW_ORTHO').type = 'FRONT'
        pie.operator("view3d.view_axis", text="Back", icon='VIEW_ORTHO').type = 'BACK'
        pie.operator("view3d.view_persportho", text = "Persp/Ortho", icon ="ARROW_LEFTRIGHT")
        pie.operator("screen.region_quadview", text="QuadView", icon='VIEW_PERSPECTIVE')
        pie.separator()
        pie.separator()
        other = pie.column()
        gap = other.column()
        gap.separator()
        gap.scale_y = 7
        other_menu = other.box().column()
        other_menu.scale_y=1.3
        other_menu.operator("view3d.view_camera", text="Active Cam", icon='CAMERA_DATA')
        other_menu.operator("view3d.camera_to_view", text = "Cam To View", icon ="VIEW_CAMERA")
        other_menu.operator("screen.screen_full_area", text = "Max Screen",icon = "FULLSCREEN_ENTER") 
        
        

def register():
    bpy.utils.register_class(Pie_menu)

def unregister():
    bpy.utils.unregister_class(Pie_menu)

if __name__ == "__main__":
    register()

    bpy.ops.wm.call_menu_pie(name="Pie_menu")

my_marking_menu.pyをblenderがインストールされたstartupフォルダ内に移動させます。
私は2.81のzip版を使用しているのでblender-2.81a-windows64\2.81\scripts\startupになります。

ショートカットに登録する

マーキングメニューをショートカットで呼び出せるようにします。

編集>プリファレンス>キーマップからショートカットを登録しましょう。マーキングメニューを登録したいエディタ選んでAdd Newをクリックします。私は編集モードで出したいので3Dビュー>メッシュ>Mesh(GLobal)でAdd Newしました。

noneになっているのでwm.call_menu_pieに変更。下にNameを入力する欄が出てくるのでmy_making_menu.pyで定義したbl_idnameの名前を入力します。上のスクリプト通りならmy_marking_menuです。後はショートカットを登録します。

my_making_menu.pyで定義したbl_idnameの名前を入力

実際にショートカットを入力してマーキングメニューが出たら成功です。視点を変えるマーキングメニューが出てきたと思います。

マーキングメニューにコマンドを登録する

では実際にマーキングメニューに自分の好きなコマンドを登録してみましょう!そのためにBlenderのPythonのコマンドを調べる必要があります。

英語版だとGUIのコマンドにマウスオーバーしているとPythonコマンドが表示されます。日本語だと表示されないみたいです。

マウスオーバーしているとPythonコマンドが表示

もしくはBlenderのエディタをInfoに変更してBlenderの操作を実行するとInfoタブにそのPythonコマンドが表示されます。下の画像ではベベルやインセット、押し出しが表示されているのがわかります。

InfoタブにそのPythonコマンドが表示

これらの方法でPythonコマンドを調べることができます。

my_making_menu.pyを編集しましょう。pie.operator(~)の中身を編集します。第一引数にコマンド名、text=”~”に表示名、icon=”~”にアイコン名です。コマンド名は上記で調べたbpy.ops以降の名前です。 ()括弧はいりません。

アイコン名はBlenderを起動してアドオンのDevelopment Icon Viewerで調べることができます。 other_menu.operator(~)を編集することで下のサブメニューにコマンドを登録できます。ベベルコマンドを登録してみます。

~ ~ ~
  def draw(self, context):
    ~ ~ ~
    pie.operator("view3d.view_persportho", text = "Persp/Ortho", icon ="ARROW_LEFTRIGHT")
    # ベベルコマンドを登録
    pie.operator("mesh.bevel", text="Bevel", icon='MOD_BEVEL')
    pie.separator()
~ ~ ~

Blenderを再起動してみましょう。マーキングメニューで登録したコマンドが使えます。 pie.operator(~) が8個ないと円状に並ばないので注意です。

登録したいコマンドがアドオンの場合でもPythonコマンドを同じように登録できます。

おわり

自分オリジナルのマーキングメニューを作ることで効率よく作業することができます。編集モード、スカルプトモードなどモードごとにショートカットを登録できるので活用していきましょう!

コメント