Scaleエフェクトを同時に2つ別々に使ってみよう

針金Pさんの作った、MMD用シェーダープログr・・・
早い話「MMDエフェクト」の1つとして「Scale.fx」というものがあります。

これを使う事で、自由にポリゴンモデルの大きさを変更できるのですが
「そっちは10倍でこっちは2倍」と個別に大きさを設定する事はできません。

この記事は、Scale.fxを改造してなんとか解決しよう、みたいな記事です。

(もっと大きく/小さくしてみよう、という記事もこちらにあります)

 

 基本

何はともあれ、Scale.fxをメモ帳などに放り込みましょう。
ずらずら小難しいコトバが出てきてワクワクしますね。
でも今回は次の部分だけを見ることにします。メンドウなので丸々コピペです。

// PMDパラメータ
float3 Origin : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "スケール原点"; >;
float3 ScaleXYZ : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "スケール変更"; >;
float Expansion : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "拡大"; >;
float Reduction : CONTROLOBJECT < string name = "ScaleControl.pmd"; string item = "縮小"; >;
static float3 Scale = float3( clamp( pow(10.0f, 0.1f*ScaleXYZ.x), 0.01f, 100.0f ),
clamp( pow(10.0f, 0.1f*ScaleXYZ.y), 0.01f, 100.0f ),
clamp( pow(10.0f, -0.1f*ScaleXYZ.z), 0.01f, 100.0f ) );
static float ScaleAll = (1.0f + 9.0f*Expansion)*(1.0f - 0.9f*Reduction);

無理に覚える必要はありませんが、命令文の最後には必ず ; が付いています。
そして // 以降は注釈として扱われ、実際の処理には影響しません。
もしここに何かメモしておきたければ // で注釈として書きましょう。

で、注目すべきコトバは「ScaleControl.pmd」です。
Scale.fxは、このモデルのボーン位置や表情などを読み取って、
どれくらいの大きさにするかを決めています。

つまり「ScaleControl_B.pmd」と書き換えれば、
MMDに読み込まれているScaleControl_B.pmdというモデルを基準にします。
というわけで「ScaleControl.pmd」をすべて「ScaleControl_B.pmd」に書き換えて、
うっかり間違えないように「Scale_B.fx」という名前で保存しましょう。

これでScale.fxを適用したモデルはScaleControl.pmdを使って、
Scale_B.fxを適用したモデルはScaleControl_B.pmdを使って大きさを変えられるようになりました。

 

応用

まぁ別にこれでどんどん増やしていけば良いのですが、
「ScaleControl.pmd」やら「ScaleControl_B.pmd」やら増えて大変です。
それに、人物モデルそのものの表情モーフで大きさを変えられたら便利ですよね。

というわけで応用編。と言ってもそんな難しい事はしません。
ここでは例として、かにひらさんのレア様で説明していきましょう。

まずはPMXエディタを起動して、レア様のモデルを読み込みましょう。
PMXエディタにモデルデータを掴んで投げ込めばOKです。

「モーフ」タブを選択して、左側のリストの適当な所で右クリック。
[新規モーフ作成(N)]から適当に選びましょう。今回は[材質(M)]を選びました。

f:id:Tappi:20140109020601p:plain

 

「モーフ名」を「拡大」にして、同じ要領で「縮小」も作ります。
それ以外は何も設定しません。この名前のモーフが存在する事が最重要なのです。

f:id:Tappi:20140109020604p:plain

 

間違えないように名前を変えて保存しましょう。
今回は「レアv1_12[Scale.fx].pmx」としました。
この名前にする事で、モデルを読み込む時に同じフォルダにある
「Scale.fx」も読み込んで自動的に適用してくれるようになります。

次はそのScale.fxです。レア様のモデルがあるフォルダにScale.fxをコピーし、
メモ帳で開いて「ScaleControl.pmd」を「レアv1_12[Scale.fx].pmx」に書き換えます。

はい。これで完了です。試しにレアv1_12[Scale.fx].pmxを読み込んで、
表情の「拡大」「縮小」をグリグリしてみましょう。大きさが変わるはずです。

 

補足

今更かもしれませんが、マシン環境によっては .pmd とか .fx とかは見えない事があるので
そういう時は右クリック→プロパティから[ファイルの種類]を見ましょう。
「pmd ファイル(.pmd)」とか書いてあるはずです。

それと今回は割愛しましたが、レア様に「スケール原点」「スケール変更」ボーンを追加すれば
ScaleControl.pmdとまったく同じように大きさを変えられるようになります。