ニコニコ
ユーザーブロマガは2021年10月7日をもちましてサービスを終了いたしました。
このページは皆さまから投票いただいた記事を保存したものです。

オヨヨの不良在庫

顔の表情の頂点モーフと一緒に動く酔っ払いモーフ(材質モーフ)の作り方(コメント欄でさらに手軽な方法を教えてもらいました)

2013-05-26 00:13:18

※2014.03.24:この手順の要点みたいな説明を追加しました。
※2013.11.26:言葉を少し補いました。
※2013.10.9:PMDEditorまたはPMXEditorで、どるるさんのUVエディタプラグイン(http://www.nicovideo.jp/watch/sm21640804)を使えば、UV展開のためにMetasequoiaへデータを持って行く必要はなくなりましたので、その辺追記しました。
※2013.05.26 17時ごろ:UV展開などMetasequoiaで作業する場合はシェア版で、プラグインにKeynoteとExportPMD (PMX対応版)を入れていることを前提にした説明になっています。フリー版でも多分できますが、表情の移行がめんどくさい気がします。
また、酔っ払いモーフと青ざめモーフを併用できるようにしていたので、その辺に説明追加しました。
※2013.05.26 15時30ごろ:マグさんからコメントでPmxEditorなら、材質パネルで材質名選択→右クリックから材質の複製を作れることを教えてもらいました。手順1はPmxEditorならさらに簡単にできるので追記しました。
※2013.05.26 1時30分ごろ:ボボヂさんからコメントで材質複製プラグイン(http://bowlroll.net/up/dl13591)を教えてもらいました。手順1・2の部分をもっと簡単にできるので追記しました。


真女神転生IVは雑魚的がガチでこっちを殺しに来るので死にまくり楽しい今日この頃ですが、先ほどまた全滅したので一休みしてたら、いつか書いておこうと思ってたものを思い出したのでメモします。

うちのアントニオさんの酔う(頬)モーフは、顔の上に酔っ払いモーフ用パーツを重ねた形で作ってるんですが、目の周りも赤くなるようにしているので、まばたき等の頂点モーフで酔っ払いモーフ用パーツも一緒に動くようになっています。
何で頬の辺だけ赤くなる普通の頬染め系の処理にしなかったのかといえば、酔っ払いは多くの場合目の周りも赤くなるものであるというのが私の経験的な理解であるからです。後、鼻の頭も赤くなる。酔っ払い表現にも使える頬染めモーフではなく、頬染めにも使える酔っ払いモーフが作りたかったので、ここは外せないところでした。

そんなわけで、普通のモーフよりやや手間が多く、ついでにいうと頂点モーフ数が増える分モデルも重くなる酔っ払いモーフの作成手順は下記になります。


先にこの手順の要点だけ簡単にまとめると

・PMD/PMXEditor上でなら、頂点モーフの設定してある頂点や面の削除・追加を行っても、残った頂点の頂点モーフは維持される
(メタセコ上でモーフの変形元オブジェクトやelemオブジェクトの頂点をいじるとぶっ壊れるような現象を回避できる)
→PMD/PMXEditor上で、頂点モーフの設定してある状態のモデルから切り出してモーフ用のパーツを作れば、元の頂点モーフと同じ動きの頂点モーフを持ったパーツができる。

・元のパーツ(顔とか)と完全に同位置に、追加モーフ用のパーツを重ねると表示がチラつくが、追加モーフ用パーツの頂点がごくわずかでも元パーツより手前っていうか外側っていうか、浮いてる状態にあって、材質リスト順も元パーツ材質より後ろにあれば、表示チラつきは回避できる。

という感じです。


1. モーフ用パーツの作成
※追記:ボボヂさんから材質複製プラグイン(http://bowlroll.net/up/dl13591)を教えてもらいました。

元モデルにこのプラグインを使って顔肌材質を複製した後、複製パーツから不要部分の削除を行えばパーツを別名保存せずに手順3へ飛べます。(UV展開をメタセコでやり直す場合は、モーフ用パーツのみ状態の方が全身まるっと持っていくより楽かもしれません)
※追記2:マグさんから、PmxEditorなら材質パネルで材質名選択→右クリックから材質の複製を作れることを教えてもらいました。材質複製プラグイン使用の場合と同様に、複製したら手順3へ飛べます。

PMD(X)Eで、顔の頂点モーフ等の入っている状態のモデルから、モーフに必要な頂点・面のみを残した状態にし、材質名を元モデルとかぶらないように変更して(頬モーフ等)、ジョイント・剛体を全て削除、名前をつけて保存します。
(表情は基本的にいじりませんが、グループモーフは削除しておいた方が後で面倒が少ないです)
(ボーンについては削除はどっちでもいいです。
顔のウェイトは頭100%でしょうから、センター以外のボーン全削除で、後からこの材質に顔ウェイトを塗るのも大した手間ではないですし。
ボーン構造の異なるモデルにモーフ用パーツを入れたい場合は、ボーンは共通部分のみか、頭のみとかにしておいた方がスムーズです。
うちのアントニオさんの場合は、頂点モーフの再設定と連続して行ったので、モーフ用パーツの設定が終了した後で、顔回りの材質をまとめて全タイプのアントニオさんに移植するつもりだったのでボーン据え置きでやりました)



1-2. UV展開(必要に応じて)
※追記:どるるさんのUVエディタプラグイン(http://www.nicovideo.jp/watch/sm21640804)を使えば、UV展開のためにMetasequoiaへデータを持って行く必要はなく、PMDEditorまたはPMXEditorで作業が完結できます。


酔っ払いモーフは、顔肌の上に透過テクスチャ(赤くなる部分だけ色があって、他は透明なテクスチャ)を貼った酔っ払いモーフ用パーツを重ねる形になってます。なので、モーフ用パーツには新たにテクスチャを設定をして、必要に応じで材質設定の調整もします。またテクスチャを設定する際には新たにUV展開やUVマップの調整が必要な場合もあります。
テクスチャでUV展開・調整が必要な場合は、PMD保存して、モーフをメタセコへ持っていきます。メタセコでPMDを開く際、オプションの「モーフをelem:として取り込む」、「モーフを登録する」にチェックを入れます。ボーンはなくてもいいです。
メタセコ上でUV展開をしますが、その際、頂点位置はいじらないようにします。
UV展開等がすんだらPMX出力し、必要に応じて出力前のモデルから材質全削除→メタセコでUV展開したPMXインポートもします。

UV等の整った状態のモーフ用パーツは、材質設定などを整えたら名前をつけて保存します。




2. モデルへのモーフ用パーツ挿入
PMD(X)Eで、元のモデルに、モーフ用パーツのPMXファイルをインポートし(同名ボーンのマージのチェックは入れておく)、それから同名モーフのマージを行います。
(「編集」→「モーフ」→「同名モーフのマージ」)
この時点では、元のモデルの顔肌とモーフ用パーツの頂点・面位置が一致しているので、表示がちらつくと思います



3. モーフ用パーツをごくわずかに浮かせる
モーフ用パーツの頂点をすべて選択(または、パーツの外縁部分の顔肌と密着してほしい部分以外をすべて選択)します。
オブジェクト操作パネルを表示し(PmxView画面右上の「動」ボタン)、z軸0.001位のごくわずかな値で「法線軸」ボタンをクリック。



これで、モーフ用パーツがごくわずかに顔肌から浮いた状態になります。

この状態で、材質リスト順で、モーフ用パーツの材質が顔肌材質より上にあると、カメラ距離によって表示のちらつきが出ますが、モーフ用パーツの材質を顔肌材質より後の順にすればチラつきは出ません。
ごくわずかでも外側(カメラ側)にある面が後に描画されれば大丈夫なようです。




3-2 頂点モーフでの表示チラつきチェック
重なっている部分の頂点モーフを動かして、表示具合をチェックします。
動かしたら表示が乱れる部分があったら、その頂点のそもそもの位置か、頂点モーフでの移動位置を微調整します。
(オブジェクト操作の「値指定」で0.001くらいの小さい値で動かすのが微調整しやすい気がします。)

4. 材質モーフ設定
材質モーフの場合は、材質モーフの設定をします。
酔っ払いモーフの場合は、非表示→表示の変化を材質モーフで行っているので、
・モーフ用材質の材質の非透過度を0にする
・PMD(X)Eのモーフパネルで「新規モーフ作成」→「材質」
・材質パネルで、モーフ用パーツの材質を選択し、右クリックでIndexコピー
・再びモーフパネルの、先ほど作った新規材質モーフを選択して、ボックス上で右クリック→「Indexコピーから追加」
・追加したモーフ用パーツ材質を選択して、「編集」ボタンを押し、
「加算」で材質色の「非透過度」を1程度の値にし、他は全て0にします。

これで、初期は透過されて見えなくて、モーフを動かすと表示されるようになります。


うちのアントニオさんの青ざめモーフの場合は、手順は大体一緒で、4番の材質モーフ設定がUVモーフ設定になります。

※追記:なお、酔っ払いモーフと青ざめモーフは、目の辺で両モーフパーツが重なるので、併用できるように青ざめモーフ用パーツを3の手順で肌から浮かせるときに、酔っ払いモーフよりさらにちょっと大目に肌から浮かせています。カメラから見て青ざめ→酔っ払い→顔肌の順で面が配置されるようになっています。


ちなみに、一番最初に酔っ払いモーフを作った時(ver.1.3)は、PMDE上なら、頂点・面の削除をしても、残った頂点に関連する頂点モーフ情報は保持されるってことに気付いてなかったので、ほとんどメタセコ上で作業を行ってました。

  • 1. 顔パーツを表情付きでメタセコに取り込んだのち、顔パーツのオブジェクトを複製し、複製した方のオブジェクトから頂点・面削除してモーフパーツに必要な形状にして、UV展開等も行う。
  • 2. モーフパーツの外縁以外の部分の頂点を選択し、顔肌からごくわずかに浮くように移動
  • 3. モーフ用パーツを複製し、オブジェクト名を「elem:表情名-モーフ用パーツオブジェクト名」にしたものと、元の顔のelem:オブジェクトの数だけ作成。
  • 4. 「elem:表情名-モーフ用パーツオブジェクト名」のオブジェクトの頂点が、元の顔のelem:オブジェクトと同期するように、元の顔で表情として移動している頂点はひたすらスナップで位置合わせをし、さらにそれがごくわずかだけ顔肌から浮くように移動。これを表情の数だけあるすべての新規elemオブジェクトで行う。

という、すごく頭の悪そうな手間のえらいことかかる方法でやってました。
求める結果さえ得られれば、仕事じゃないんだから手間とか時間とか気にしなくていいんだよ、趣味には納期もコストもないし!とは思っていますが、ちょっと立ち止まって「もっとうまい方法ないかな?」と考えてみるのは悪いことではない、そう思います…


投稿者:

オヨヨ

プロフィールページ