見出し画像

[2.8]既存のメニューとかパネルとかをショートカットキーで

本日の一曲。

…じゃなかった、BlenderのGrease Pencil で、マテリアル切り替えを(ヘッダーのメニューでなく)ショートカットキー経由で、というお題をいただきましたので。

「何したいのか整理」

Grease Pencil のペン先の情報はヘッダー部分からアクセス出来て、マテリアルについてもここから切り替えます。

スクリーンショット 2020-04-11 10.57.23

プロパティエディタ経由でも出来たりするんですけど、ここではその部分には触れません。

このメニューをこうできればいいのかな、という感じで。ショートカットキーを押すとマテリアルを選択するパネルが表示されます。

スクリーンショット 2020-04-11 19.08.54

では「何も知らない体で」やっていきましょう。

ショートカットまたはボタンでパネルが出てくるものはありますか?

同じタイプのオブジェクト(Grease Pencil)、同じモード(今回はDrawモード)で、「パネルが出てくる」という動作をしているものがないか確認します。同種の動きをするものがあればそれを真似てしまえばいいですね。

スクリーンショット 2020-04-11 21.14.02

右クリックするとマウスカーソル位置にパネルが出てきました。こんな感じで「何かキーを押すとマテリアル選択するパネルが出てくる」というのを想定します。

ここまでくれば「具体的にどうすればいいか」の組み立てができます。

・ ショートカットでパネルを出す仕組みを特定する(調査)
・ メニューからパネルを出している箇所を特定する(調査)
・ (調査結果から)カスタマイズ用に組み合わせる

そんな都合良く行くのものなのか?…今回はうまくいきました😄うまくいかない場合にはAdd-onを書くコースですね。

ショートカットでパネルを出す仕組みを特定する

では、先ほどの「右クリックでパネルが出る」というところから。

Preference > Keymap のショートカットキー検索を[Key-Binding]にして、検索窓に"RMB"と入力します。RMBは「マウスの右ボタン(Right Mouse Button)」のこと。

スクリーンショット 2020-04-11 21.25.03

"Grease Pencil"で始まる項目を確認します。必要に応じてPreferences画面の幅を広げておきます。

スクリーンショット 2020-04-11 21.27.16

スクリーンショット 2020-04-11 21.29.00

なんとなく雰囲気で"Grease Pencil Stroke Paint Mode"だろうということで特定します。

スクリーンショット 2020-04-11 21.31.06

「wm.call_panel」で「VIEW3D_PT_gpencil_draw_context_menu」という名前の何かを呼び出している、そういう感じですね。

これを流用するような感じですね。

メニューからパネルを出している箇所を特定する

3Dビューのヘッダーをよく観察しておきましょう。

スクリーンショット 2020-04-11 21.37.41

実はこのヘッダーのレイアウト、Pythonスクリプトで書かれていて、Blenderのインストールされたフォルダを探すと出てきます。

うちのMacの場合、ここにありました。

/Applications/Blender283/Blender.app/Contents/Resources/2.83/scripts/startup/bl_ui/space_view3d.py

ここからはテキストエディタが必要になってきます。用意しておきましょう。VSCodeあたりが無難かな?

とりあえず「右クリックで出すパネル」の設定に書かれていた名前"VIEW3D_PT_gpencil_draw_context_menu"をGrepすれば3Dビューのメニューとかの定義されているところにたどり着くんじゃね?って感じで。

スクリーンショット 2020-04-11 21.53.01

そして space_view3d.py を開いてざっと眺めます。出したいパネルはマテリアルなので"material"なんてついてないかな?とか探してみると… "TOPBAR_PT_gpencil_materials"っていうのがありました。定義されている箇所からしてもそれっぽい。

スクリーンショット 2020-04-11 21.56.44

ということで調査ひとまずここで終わり。次はショートカットキーの設定です。

カスタマイズ用に組み合わせる

これまで得られた情報をもとに、カスタマイズしてみます。Preferences > Keymapから。 検索欄は空であることを確認します。

スクリーンショット 2020-04-11 22.01.05

Grease Pencil > Grease Pencil Stroke Paint Mode に新規のショートカットキーを設定します。

スクリーンショット 2020-04-11 22.23.28

スクロールダウンして、[+Add New]ボタンをクリックします。

スクリーンショット 2020-04-11 22.24.09

1行増えました。三角をクリックして設定詳細を表示させます。

スクリーンショット 2020-04-11 22.25.16

"none"の右の三角をクリックして設定詳細を表示させます。その下の入力欄に"wm.call_panel"とと入力して[Enter]。入力が終わると Name: の入力欄が追加されます。

スクリーンショット 2020-04-11 22.08.20

スクリーンショット 2020-04-11 22.09.15

次に、Name:のところに"TOPBAR_PT_gpencil_materials"と入力して[Enter]。

スクリーンショット 2020-04-11 22.11.00

スクリーンショット 2020-04-11 22.11.25

次に"A"と書かれているボタンを押し、押した後に[M]キーを押してショートカットキーとして登録します。マテリアルなので[M]で。

スクリーンショット 2020-04-11 22.12.43

スクリーンショット 2020-04-11 22.15.40

スクリーンショット 2020-04-11 22.17.13

はい、これでOK。

では3Dビューに戻って [M] キーを押してみましょう。

少し使ってみて、ほかのモードでもこのショートカットキー設定を使いたい場合には、そのモードでショートカットキーの設定をしてあげれば良いです。設定できれば。

終わりに

既存のメニューで使えるのであればそれを使うようにしておくのが良いです。カスタマイズと開発は別物ですね。

なので今回の変更を共有したい場合には、設定したBlender上でキーコンフィグのエクスポートをして .py ファイルを他のパソコンに転送、キーコンフィグをインポートすれば同じカスタマイズを反映可能です。

後、気をつけるべきは「機能名や定義名は画面の表示とは異なる」ということだけは注意しましょう。だいたい推測できるような名前が付いてはいますが、ズバリそのもの、というわけではないので。

See Also:

ショートカットキーでメニューとかパネルでなくオペレーターを開きたい、という場合には以下の記事が参考になります。




お読みいただきありがとうございます。サポートいただいた分はおやつのグレードアップに使おうかと思います。スキ、SNSにシェアもよろしくお願いします!