MMEからの変換(UIウェジット編)

MMDでは、エフェクトをpmxモデルのモーフ(表情)で編集できるエフェクトがあります。

しかしMMMでは、エフェクト自体にコントローラーをつけることができます。

その方法の紹介です。


MMEのコントローラーについて

一部のエフェクトには、PMXコントローラーというものがついている場合があります

PMXモデルには、「モーフ」という機能があるのはご存知でしょう。

人物モデルの表情を変えたり、ステージなどでは大きさや色を変えるモーフがついているものがありますね。

本来はモデルを変形させるために用意されているモーフですが、それがスライドバーになってていることに着目し、

エフェクトのUI(ユーザーインターフェース)に転用したものがPMXコントローラーです。

また、モーフだけでなく、モデルの位置や角度などの座標がエフェクトに反映する場合もあります。

これはpmxだけではなく、xファイルのアクセサリにも当てはまりますが、

エフェクトが「モデル」や「アクササリ」に依存している点については変わりありません。

しかし、MMMのエフェクトには、fxファイルだけで完結し、モデルやアクセサリに依存せずエフェクトを編集できる機能が備わっています。

これを使えば、pmxを大量に読み込んでゴチャゴチャするといった事態が避けれます。

そして何よりのメリットは、「同じエフェクトを複数読み込んでも別々にパラメータをいじれる」ということです。

非常に強力なので、MMEをMMM用に変換する場合はぜひとも活用したい項目となります。

MMMのエフェクトのウェジット

MMMのエフェクトのUIには大きく分けて3つの種類が存在します。

左上から「スライダー」「スピナー」「カラー」となります。

もう一つ「ナメリック」というのもありますが、スピナーと同じです。

「スライダー」は、画面の描画を実際に見ながら操作するのに適したUIです。

細かな数字そのものよりも、効果のほうを重視する場合に有効です。

「スピナー」は、厳密な数値の入力が必要な場合に適当です。

細かな数字を入力できるので、厳密に値を決めたい場合に向いています。

「カラー」は少し特殊で、3つ。もしくは4つの数字を持つパラメーターに使うことができます。

float3などに関連づけると、RGBのコントロールとなり、

float4などに関連づけると、RGBAのコントロールとなります。

色のパラメータだったり、いままで座標(xyzやRxyz)で扱っていた数値に使うコントロールとなります。

PMXコントローラーからの変換

PMXコントローラからMMMのウェジットに変換するには、fxファイルの編集が必要です。

改造したいエフェクトのfxファイルから、以下のような個所を探してください。

float hoge : CONTROLOBJECT <string name = TheController; string item = "モーフその1"; >;
float colorR : CONTROLOBJECT <string name = TheController; string item = "モーフ(赤)";>;
float colorG : CONTROLOBJECT <string name = TheController; string item = "モーフ(青)";>;
float colorB : CONTROLOBJECT <string name = TheController; string item = "モーフ(緑)";>;

※当然「hoge」「TheController」「colorR」などはエフェクトによって違います。

floatのすぐ左に書かれている「hoge」「colorR」が、MMEの変数です。PMXコンントローラで値を変えているものですね。

「TheController」が、関連付けられているモデルの「モデル名」で、「モーフその1」などが対応するモーフとなります。

つまり一番上の「hoge」の値は、「TheController」というモデル名のモデルの、「モーフその1」と連動しているということです。

初級編

まず、一番上の「hoge」をMMMウェジットに対応させちゃいましょう!!種類はモーフと同じ「スライドバー」となります。

float  hoge <
	string UIName = "モーフその1";
	string UIWidget = "Slider";
	string UIHelp = "説明";
	bool UIVisible = true;
	float UIMin = 0;
	float UIMax = 1.0;
> = 0.0;

見た通りなのですが、解説します。

変数の横に「<>」をつけて、その中に以下の内容を書いていきます。

string UIName MMM上で表示される名前
string UIWidget ウェジットの種類。「Slider」「Spinner」「Numeric」「Color」の4種
bool UIVisible 表示するかしないかを「true」か「false」で入力。ふつうは「true(表示する)」
float UIMin 最小値。つまり、スライダーなら一番左にした時の値。
float UIMax 最小値。スライダーなら一番右にした時の値。

最後の「=0.0;」は初期値の値です。

プログラムに慣れてないと戸惑ってしまうかもしれませんが、やっていることは単純です。

中級編

「colorR」「coloG」「colorB」を一纏めにして、カラーウェジットで編集できるようにします。

float3  colorRGB <
	string UIName = "色";
	string UIWidget = "Color";
	string UIHelp = "説明";
	bool UIVisible = true;
> = { 0.0, 0.0, 0.0 };

float colorR = colorRGB.r;
float colorG = colorRGB.g;
float colorB = colorRGB.b;

「float3 colorRGB」という新たな変数を作ります。

float3は、float型の変数3つがひとまとまりになったものです。

まとまっている変数を呼び出すためには「.r」「.g」「.b」をつけます。float4だったら、4つ目は「.a」で呼び出し可能です。

また、「.x」「.y」「.z」「.w」も使えます。記法と見やすさ以外の違いはありません。

すべての「colorR」を「colorRGB.r」で置換してもOKですが、改造の場合ミスしてバグったりする可能性が高いので注意です。


まとめ

  • MMMは、fxファイルにUIウェジットをつけられる