[Blender] mmd_tools_modの詳細
Blender上でMMDを扱う際に、UuuNyaa/blender_mmd_tools(以降、“mmd_tools”と表記)がよく利用されます。 本記事では、最近公開した(mmd_toolsのmod)[https://github.com/arch4e/mmd_tools_mod]についてどういった動作をするものなのか説明します。
不明点や要望等あれば、サイトトップのプロフィールにある各種SNSからご連絡ください。
ツールへのアクセス
サイドバーの MMD
を開くとmmd_toolsのパネルが並びますが、その中に Joints(Mod)
パネルが追加されており、ここから操作を行います。
mmd_tools自体の Joints
パネルには変更を加えていません。本ツールの導入によって元のツールへの上書きまたは追記をすることは避ける意図です。
v1.0.0における追加内容はJoint一覧の下に追加したJoint作成ボタンと同リスト横に追加したJoint名の重複解消ボタン、Jointソートボタンです。
Joint作成
mmd_toolsのJoint追加はリスト横の +
ボタンから行いますが、名前が重複します。
重複解消は次節の機能で対処できますが、縦と横のJoint名を分けたい場合、リスト下にある Add Vertical Joint
/ Add Horizontal Joint
を使用すると、Joint名に _V
/ _H
というsuffixが付与されたJointが作成されます。
本家実装では +
ボタンを押した際にポップアップウィンドウが表示されてパラメータを入力できますが、実装上の都合で本Modでは表示されません。
ボーンを3つ以上選択していた場合、名前順にJointを作成します。技術的な話になりますが、選択順にJointを作成するのが理想ではあるものの、bpy.context.selected_objects
はアイテムが名前順に並んでおり、選択順の情報が取得できないためこのような動作になっています。(知見があれば連絡、p-rいただけるとありがたいです。)
Joint名 重複解消
リスト横のリサイクルマークのようなボタンを押すと、Jointの名前をユニークなものに変更します。
具体的には、重複しているものがあれば名前の末尾に .001
のように数字を追加します。
本機能を使用すると、Jointリスト上の名前とJointオブジェクト自体の名前が同期されるため、Outliner上の名前表示にも変化があります。
Joint名 ソート
Jointリスト横のチェックマークボタンを押すとJointリストの順番がソートされます。このとき、Joint名が重複していると2つ目以降のJointは正しく並べ替えできないため、ソートされないJointがいる場合は前述の重複解消機能を利用して再実行してください。
また、本機能では外部モジュールの有無(ReadmeのOptionを参照)によって挙動が変わります。natsortモジュールがインストールされている場合はそれを使用し、読み込みに失敗した場合は標準モジュールを使用してソートを行います。動作の違いは2桁以上の数字の並べ替え時に現れ、下記の例のようにnatsort有りの方が自然なソートができます。
# natsort
1, 2, 3, ... , 10, 11, ...
# sort(python built-in)
1, 10, 11, ... , 2, 20, 21, ... , 3, ...