archIVe

[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, ...