MMDデフォの補間曲線の話

MMDには自動補間という機能があって
オンにしておくとセンターや足IKなどの移動モーションに限って
前後のキーフレームから補間曲線を付けてくれます。

f:id:PIP_MMD:20220114042402p:plain

MMDの自動補間

逆に回転の補間曲線は直線に初期化してしまうので
モーション修正をする際にはオフにした方がいいよ!とか言われてますね。

 

MMDの自動補間は4種類あります。

・直線   (ずっと動いている、ずっと止まっている)
・ノの字  (止まっている状態から動き出す)
・逆ノの字 (動いてる状態から止まる)
・S字   (止まっている状態から動き出して止まる)

 

  

  

数字はハンドル(バツ印)の座標です(内部では0~127の数値で処理されてます)

 

S字の形をノの字と逆ノに分けるのをS字分解なんて読んだりしてますけど、

移動モーションなら手付けなしの自動補間でもそこそこよかったりします

 

f:id:PIP_MMD:20220114042857p:plain

 

ところでこの自動補間曲線、ノと逆ノの組み合わせなんですが・・・

 

これがデフォルトの2つを使ってS字に組み合わせた形。

 

S字と2つの組み合わせ(ノ+逆ノ)を重ねてみるとこうなります。

結構、ズレてますね。

 

理想としてはこんな感じの補間曲線に分割したいわけ。

 

重ね合わせるとこんな感じ。

 

だいたい合わせるのは画像の通りですが、

なるべく綺麗に合わせたいと思っていじってたのですが・・・

 

そもそもMMDのデフォのS字補間曲線、

フレームのちょうど中央で半分の値になってないんですけど!

 

これは補間曲線の数字が0~127なので64が半分にならないせい。

ちょうど半分になるには片方を1つずらさないとダメなんですね。 

 

 

てことは、デフォのS字も直さないとあかんのかいっ!

まあ0.6%くらいずれる程度(49.4:50.6)なのであまり気にする必要はないです。

ちょうど中間になってないと困る人の方が少ないと思うし。

 

  

 

というわけでとりあえずこんな感じになりました。

厳密にはこのS字分解もまだ完全一致はしていません(そもそもできるかは微妙)。

 

数値で示されても手動でそんなことできるかいっ!て思いますよね。

というわけでサンプルのMMDマクロを配布しておくので気になる人はどうぞ。

 

ちなみにマクロは以下のようになってますが、

補間曲線の「すべて」を選択をいらない人はその2行を削除して使ってください。

 

すべて・ノ字補間, N

;すべてを選択

search(curve_menu, すべて)

;ノ字補間曲線
curve(0.5,0.0,0.76,0.51)

 

 

「すべて」というのはここのところですね。

私の場合、補間曲線のマクロは回転と移動で補間曲線を揃えるのが目的なので

これがデフォになってたりするわけです。

 

ついでにマクロをキーボードにショートカット登録しておくと便利かもしれません。

MMDマクロのホットキー登録は「mmdm.exe」同一フォルダにある

「hotkeys.txt」を「hotkeys.ini」にリネームして中身を書き換えて使います。

 

具体的にはこういう感じに書き加えます。

 

[ノ字補間]
key=n
file=macro\補間曲線\すべてノ字補間.txt

[逆ノ字補間]
key=m
file=macro\補間曲線\すべて逆ノ字補間.txt

 

これで「n」キーで「ノ字」に、「m」キーで「逆ノ字」になります。

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

と、ここまで誰が読むのかという地味な話でしたが、

実際、今回の補間曲線の差に気が付く人がいる・・・のか?

 

もともとMMDデフォのS字分解についてはグレイさんが気にしていて

ダンスで気になる場合はあるかなあ、と思ってたんですけども

 

実はまろやか補間などの自動ツールでもS字分解の癖はちょっとあるんですね。

 

私も多少は思い当たる節があって、たとえば

 

www.nicovideo.jp

 

このモーションの3分10秒過ぎで後ろ向きに歩くところがあるのですが

X軸(横軸)の移動の動きがツール補間を何度掛けてもちょっと違和感がありました。

 

 

上野画像の赤がX軸ですが

 

今の配布モーションでセンターの移動グラフはこんな感じになってます。

X軸(横軸)の動きは赤線、本当はもっとキーフレームを減らしたいところですが

どうもぎこちないのでキーフレームを増やしてこうなってます。

静かに横に動くシーンなので配布でもまだ少し違和感は残ってますが。

(たぶんほとんどの人は気にしないレベル。

 体幹軸の回転がこれに加わるので線が滑らかなら絶対正義ではないです。)

 

 

 

 

 

面の向きにあったローカル軸を設定する

ツイッター(X)で見かけたので

任意の面の向きに沿ってボーンのローカル軸を入れる方法を検証します

 

私の場合、フェイシャルボーンにローカル軸を導入したくてやってたことがあります

やり方はいろいろあるんですがとりあえずやりやすそうな方法から紹介

 

 

1.任意の面番号の取得

まずローカル軸を合わせたい面の番号を取得します

赤丸で囲った「G」「選」「表頂」のボタンを押した上で面を選択してください

「G」ボタンはあまり使ったことがない人がいるかもしれませんが、

「選択ガイド」というもので取得ボタンを押すことで現在選択している、頂点、面、ボーン、剛体、ジョイントなどの番号を表示し、そこから選択するための機能です。

複数頂点、複数面を同時選択してしまっていてそこから選り分けたい時に便利です。

 

 

2.任意の面番号を選択

選択ガイドの一覧から向きを取得したい面を選択します。

選択ガイドは「取得」ボタンを押すと自動的に「頂点」タブの方が表示されるようので、赤丸で囲っている「面」タブを選択してください。

 

 

3.面法線のベクトルコピー

面番号が分かったら「Pmx編集」画面から「面」リストのタブを選択して

該当する面の情報を表示します

「Pmx編集」の面リストを開いたうえで「選択ガイド」を選択すれば該当面の情報が出るはずですが、面リストの上の数値欄に直接面番号を打ち込んでもOKです。

 

ここで重要なのは赤線を引いている「面法線」です。

ようするに面の向き、面に対する垂線になります。

この垂線の向きをコピペすれば面の向きをボーンのローカル軸に持ち込めるわけです。

コピーをするには「面法線のベクトルコピ―」のボタンを押してください。

 

  ちなみにこの面法線、MMD上では面の表裏を決めるために使われています

  裏表反転で正反対になるのですが頂点法線と違って個別数値の編集はできません

 

 

4.ローカル軸に面法線の向きをペーストする

ボーンリストを開いて「ローカル軸」のボタンを押してから

ローカル軸の「X」の上で右クリックをして「ベクトルペースト」を実行します。

これで面の向きがローカル軸のX軸の向きにコピーされました

この状態で他のボーンを選んだり作業をしていればZ軸は勝手に自動計算されます。

 

  そういえば新規ボーンの位置を設定してませんでしたが、

  さっき選択した3頂点を選択し直して「Ctrl+C」を押せば

  その3頂点の中心がベクトルコピ―されるので

  ボーンの「位置」に右クリックからベクトルペースとできます

 

 

5.TransformViewでローカル軸の向きを確認する

TransformViewでさきほど設定したローカル軸の向きを確認します。

ボーンを選択した時にローカル軸がある場合は

XYZを示す赤緑青の3つの輪っかと矢印が表示されます。

ローカル軸操作したい場合はこの輪っかか矢印をクリックして動かします。

 

自動設定されたZ軸の向きが気に入らない場合は

Rx回転を示す赤い輪っかを掴んでZ軸とY軸が使いやすそうな向きになるまで回します

 

気に入ったむきになったらTransformViewの「ファイル」から「現在の変形状態でモデル形状を更新」を選択すればZ軸の向きが更新されます。

 

補足1「Y軸の向きは直接設定できないの?」

ローカル軸の向きは右手系と呼ばれるやつで

親指、人差し指、中指の順にX軸、Y軸、Z軸の向きが設定されるようになっています。

なので、X軸とZ軸の向きが決まれば自動的にY軸は算出されることになります。

右手の3本の指を直角にして回しているとラッパーと間違われるかもしれません(

 

今回、ローカル軸の向きを面法線からコピペしましたが、

3つの数値の意味はようするに原点からその方向に移動すると長さ1.0の

その向きの線になるよ、という意味になっています。

これは法線もローカル軸も表し方が同じなんですね。

 

 

補足2「X軸とY軸の向きを入れ替えたい!」

ローカル軸はしょせん操作のためのものにすぎないので慣れたほうが早いかも?

入れ替えるプラグインはいまいちなかったような気がします。

 

Y軸の向きを取得するにはさっき作ったボーンを複製してから

複製したボーンをTransformView上でY軸方向に移動し(移動ボーンにしておくこと)

現在の変形状態でモデル形状を更新します。

 

その上でボーンリストから元のボーンの「ボーン先」に複製移動したボーンを指定して

元のボーンの「軸制限」ボタンを押すとY軸の向きが軸制限値として表示されます。

まあそこまでやらなくても慣れたほうが早いですよ、たぶん

 

ちなみに設定したローカル軸の左右反転は数値に適当にマイナスを入れると反転されるので、画面で確認しながら試してみるといいかもしれません。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

プラネテスのモーション動画の話

あけましておめでとうございます。

 

 そういえば昨年12月にプラネテスのモーションのショートバージョンを公開したまま、ブログ記事を書いていませんでした。

 

www.nicovideo.jp

 

ダンスのオリジナルはこちら。

www.nicovideo.jp

 

 踊ってみたのお二人の大人っぽい雰囲気に惹かれてトレースを始めたのですが、リンレンだと大人っぽさは出ないなあと少し思ったりしました。でも大人っぽい男女の組み合わせの有名モデルって考えると結構ないですよね。(動画で使ったMiwashiba式のリンレンはかわいいのでオススメです!)

 

 

曲のオリジナルはこちら。

www.nicovideo.jp

 

 もともと去年はきゅうくらりんの動画を投稿していたので、そっちのモーションを配布しようと思っていたのですが、長身モデル用の手つなぎモーションを修正する途中で少し飽きてしまったんですね。

 

 飽きた理由は2つあって、1つは手つなぎ部分の修正がなんだかんだであまり面白くないということ。もう1つの理由は金カムモデルに流し込んでいたのですが、体型差でモデル依存の部分がちょっとあるなあと思ったこと。

 

 モーションはそれを作っていたモデルの体型に依存していて、他のモデルに流し込んで少しおかしくなるのは当然のことです。でも手つなぎの位置がずれるとかはともかく、それ以外の部分を全部モデル依存と言ってしまうのも少し甘えじゃないかなあ、なんてことを少し思ったのです。

 

 というのも、たとえばモーションキャプチャーされたモーションをいろんなモデルに流し込んだときにそういうモデル依存による違和感はほぼないんですよね。まあリアルキャプチャー特有の着ぐるみ感が出る場合はあるけど、それはまた別の話。

 

 じゃあトレースの時点で体型の違うモデルを2つ用意して交互に流し込みながら修正してみたらどうなるのか、ということを試していたのが今回のプラテネスのモーションなのです。

 

 私のツイッターをフォローしてくださってる方々は呪術の五条・夏油を踊らせている動画を見かけたことがあるかもしれませんが、交互に流し込んでいたモデルなわけ。

 

 

作業の手順としてはリン・レンでまずモーションを付けて、そのモーションをサイジングなどは特にせずそのまま五条・夏油に流し込みます。そしてモーションの気になったところを五条・夏油のモデルで修正する。そしてその修正したモーションをリン・レンに流し込む、ということをやっていきます。

 

理屈上はどっちかのモデルに完全に最適化されているとするなら、交互に修正すると終わりがなくなるはずですが、顔に手を合わせるとかそういう位置関係以外でほぼ問題は出ませんでした。

 

モーションを付ける側が使っているモデルでうまく誤魔化されてしまっているところをちょこちょこと直していたという感じになるでしょうか。今回、五条・夏油に流し込んで一番大きな不満が出たのは指で、たぶん五条・夏油の手が大きい分、リン・レンで付けた指のポーズの甘いところが気になってしまったようです。

 

あと今回のモーションは足先Exを使っています。足先Exのないモデルだとつま先が地面に突き刺さるシーンが出てくるかもしれませんがまあそこまで気が付かないかもしれません。足先Exの使い方についてそこそこ書こうとも思ってたのですが、それを書いていると必要以上に長くなってしまうのでそちらはまた今度(もう十分長い)。

 

溜め込まずにこまめに発信することも大事ですね。

新しい年もいい年でありますように!

 

 

 

 

 

【MMD】横顔になったら消える鼻線をスフィアで設定する【PMXE】

学園アイドルマスターこと学マスで正面で見える鼻線が横顔になると消えるというのがそこそこ話題になってたので、MMDでもスフィアを使うことで簡単にそれっぽくできるよという話です。

 

 

3d.nicovideo.jp

 

今回は最初から鼻に筋が描いてあるTda式ミクさんでやってみます。

 

まず鼻線が描いてある顔のテクスチャを鼻線とそれ以外に分離します。

鼻筋なしのテクスチャは肌色で塗り潰して、

鼻筋を取り出す場合はGimpなどで特定の「色を透明度」にすることで取り出せます。

(綺麗に抜くにはあらかじめテクスチャを2枚以上乗算で重ねて色を濃くしておくといいと思います)

 

次にテクスチャを当てている顔の材質を複製します。

 

複製方法は「面のみ複製」「頂点/面を複製」「頂点/面/関連モーフをすべて複製」の3通りあります。ここではとりあえず「頂点/面を複製」で。

どの方法でもいいのですが、モーフをすべて複製すると増えたモーフを後で統合マージするのが少し面倒です。鼻をモーフで動かせるようなモデルでなければ、モーフまで複製する必要はないし、「面のみ複製」するとPMXファイルの状態検証で「重複面があります」というメッセージが出続けます(それ自体は問題ありません)

 

元の顔材質の「face00」に鼻線がないテクスチャを割り当て、複製した材質の「face00+」に鼻線だけのテクスチャを割り当てます。

複製した材質の順番は材質リストの下の「↑」「↓」で動かせます。

上の画像だと鼻線がオリジナルより少し色が濃くなっていますが、テクスチャを色調するか、そうでなければ材質の「非透過度」をいじるのでも調整できます。

 

下の画像テクスチャをダウンロードして(名前は自分で適当にリネームしてください)、鼻線だけになっている材質「face00+」に乗算スフィアとして適用します。

 

(上の画像を「nose224.png」として使っています、224は円の半径)

 

とりあえずこれだけで横顔になると鼻線が消えるようになります。

 

 

モデルによってスフィア内の黒い円の部分の最適な大きさが違うので、その辺は各自調整してみてください。

 

上の作業では顔全部を複製していますが、実際には必要なのは鼻の部分だけなので、不必要な頂点や面は削除して大丈夫です。

スフィアの出方は法線によって変化します。どうにもうまくいかないと思ったら複製した顔材質の方の法線を以下のようなプラグインですべて完全に前に向けてしまってもいいと思います。

 

bowlroll.net

 

【仕組み&注意】

スフィアは面の向き(実際には法線)によって出方が変わるのですが、スフィアに透過値を使うことで、鼻が正面を向いている場合は鼻線を表示し、横を向いている場合は見えなくするようにできます。

ただし、シェーダーやエフェクトによって透過を使ったスフィアがうまく反映されない場合があります(加算スフィアの方が透過値が反映されないケースが多いです)。今回のように鼻線だけの材質なら特殊なシェーダーを使う必要はないと思うので、その材質だけシェーダーを解除するんでいいと思います。

 

 

 

 

 

 

 

 

 

 

【MMD】きゅうくらりんFull版投稿しました

ショート版のままになっていたきゅうくらりんのフルバージョンを投稿しました。

 

www.nicovideo.jp

 

モーション自体はだいぶ前(たぶん去年内)にできていたのですが

どういう形で投稿するか迷いがあって放ってました。

 

もともと8割方できたところで飽きてくる悪い癖があるんですけど

いろいろ抱え込むとフットワークも落ちてきてダメですね。

 

まあ一番の問題は配布なんですが、

身長が高いモデルに流し込むと両用腕IKがあっても調整がかなり大変で

高身長バージョンを用意しないとなあとなって調整中に飽きたんですね。

流し込む先では絶対にまた再調整必要になるしねえ。

(でも身長近いならだいぶマシになる・・・と思う)

 

~・~・~・~・~・~・~・~・~・~・~

動画内の漫符みたいなやつらはMMD内で適当に動かせるエフェクトで

フリー素材を取り込めば何でも手軽に動かせるようにしてあります。

こっちも配布しようかなあと思いながらいろいろ放り出し中。

 

で、ここからは簡単な演出の解説。

自分で解説するのもなと思わなくもないけれど

ネタ度が足りないのかコメもそこそこなのでまあいいや。

 

♪「ああ、化石になっちまうよ~」ということで

生きた化石シーラカンス先輩とTレックス先輩(たぶん)。

 

♪「例えば今夜眠って 目覚めた時に~」

朝の小鳥さんことツイッターくんですね。

 

♪「起きる理由がひとつも見つからない朝が来たら~」

小鳥さんはXに駆逐されました、おのれイーロン! 茜ちゃんもがっかり!?

 

お姉ちゃんの体調に気づかず繰り広げられるチョコミント攻撃!!

さすがチョコミン党汚い! 葵ちゃんかわいいヤッター??

 

歯磨き粉、毎朝おいしいですよね

アンチチョコミン党に堕ちてしまったお姉ちゃん

 

♪「ああ、呪いになっちまうよ~」

ちょっとかわいいごっすん釘な藁人形と市松人形

 

というわけで、演出がすべて歌詞に厳密にリンクしているわけでもないんですけど、思いつくままに

~・~・~・~・~・~・~・~・~

 

高身長版の調整はやる気があれば1週間もあれば(というか本気なら2,3日)終わると思いますけど、慣れている私がそこそこめんどくさいと思う1週間作業を、流し込む側でやった場合の労力は!?と考えると世の中いろいろ難しいデスネ

【MMD】HgSpotLight改変セット配布2件【MME】

HgSpotLightがトゥーン的に使いにくいという書き込みを見かけて

スポットライトエフェクトを少しいじっていました。

 

bowlroll.net

 

この改変セット単体ではエフェクトとしては使えません。使うためには針金Pの配布サイトからHgSpotLight_v01をダウンロードしてきてください。

MikuMikuEffect FXファイル置き場(Page2): 針金のブログ (seesaa.net)

 

でもMicroSoftEdgeダウンロードしようとするとこんなメッセージが出ます。。

最近、こういうの増えましたよね。気の弱い人はこれだけで尻込みしそうです。

DL数が少ない(Microsoft基準ですが)配布物によくあります。。

マウスを近づけると横に詳細設定の「・・・」が出るのでそこから保存しましょう。

「保持する」って「続行する」でしょ・・・

 

ちなみにGoogleChromeの場合、右クリックから「名前を付けてリンク先を保存」しないと左クリックだけではダメです。

 

で、やっぱりお決まりの警告が出ます(~.exeファイルも入ってないのに)

 

HgSpotLightをダウンロードできたら、zipを解凍してからHgSpotLight_v001のフォルダに改変セットの中身をそのまま上書きします。

トゥーン質感と減算バージョンの2種類あるので、別名に変えたフォルダを2つ用意して、新規のHgSpotLight_v001を用意した上で上書きしてください。

 

 

使い勝手は初期パラメータを読み込んで適当にいじってみてください。

正直なところ使ってみないとよく分からないと思います。

一応、トゥーンっぽい質感を目指している場合に邪魔になりにくい改変です。

 

トゥーン

 

乗算方式

 

左右目ボーン角度制限IK追加

目ボーンの角度に制限をかけるリグを追加するPMXEditor用のプラグインです。

 

 

IKボーンを選択してLinkの中のボーンを選択して出てくる角度制限を調整します。

デフォルトでは画像の通りの数値が入ってますがモデルによって最適値は違います。

 

ここで設定したXYZ軸の角度以上の角度に動かなくなるわけですが、

Z軸はIKの性質上、基本的に無意味です(Z軸には仕様上回らない)。

 

ボーンの使い心地は実際に触って確認してほしいですが、

このリグでは両目ボーンで付けた回転だけに角度制限を掛けるので

左目、右目で個別に角度制限以上に動かすことは可能です(個別にはZ軸に回る)。

 

どちらかというと流し込みの際に目が動きすぎるのを制限するためのボーンです。

付与倍率を使うよりは目がしっかり動ききるようになるのが特徴です。

あと左右のそれぞれに別の角度制限を掛けられるので、

制限以上に両目を動かせば片目だけ余白が残ったりすることがなくなります。