さて、せっかくMMDモデルをBlenderにインポートできたので早く改造したくてしょうがないことでしょう。伝えたいことはたくさんありますが、まずは実際に各自の手で改造をして楽しむことが先だと思います😊
今回は、早速メッシュを改造するにあたっての注意点を書いていきたいと思います。
BlenderやMayaなどの一般的なDCCツールとは異なる「PMX独自の実装」をMMD ToolsがBlenderで扱えるように「なんとか工夫してインポート」してくれているのだ。なのでMMD Toolsでインポートした結果のオブジェクトの作り方、これはあまり一般的ではないモデルの仕組みになっている。
このMMD Tools経由のオブジェクトにはたくさんの「PMX由来の独自の仕組み」があります。今回はその中でもメッシュについての注意点について解説します。(他の注意点については別の記事で解説します。)
(約 4,000文字の記事です。)
更新履歴
2024/11/19 メッシュの分割法則に関する補足を追記
2024/10/15 公開
用語の定義
以下の説明では「PMX形式では」という説明がありますが、これは厳密にPMX形式を分析したわけではなくて、MMD Toolsでpmxファイルを読み込むと発生する特徴を指しています。ですので当マガジンではMMD Toolsでモデルを読み込んだ結果の特徴を単に「PMX形式では」と説明しています。ご了承下さい。
もしかしたらPMXエディタを使えば、当マガジンの解説では「できない」といっていることができることがあるかもしれませんが、そこについては関知いたしません。当マガジンはあくまでもBlender+MMD Toolsでのモデル改造についての解説ですので、予めご了承下さい。
PMXでは四角ポリゴンではなくて三角ポリゴンのみ
一般的なDCCツールではほとんどが四角ポリゴンを基本としている。理由はたくさんあるのだが、今は気にしなくていい。簡単に言えば四角ポリゴンの方がメッシュ変形させやすいのだ。なのでBlenderでは四角ポリゴンが普通だと思っていて問題ない。
ところがpmxファイル形式では三角ポリゴンが基本だ。なのでおそらくはMMD Toolsでモデルをエクスポートする際に、MMD Toolsが自動的に三角ポリに変換してからPMXに出力しているのかもしれない(未検証)。何にしても、PMXは三角ポリだ、という事実に変わりはない。
なおサブスタンス3DペインターやUnityなどのように、基本ポリを三角ポリとするソフトもあります。メッシュ編集時には四角ポリで作業し、最終出力時に三角ポリに変換して出力、というのは割とよくある手法です。
PMXでは三角ポリが基本、これが厄介なのだ。例えば作業のしやすさのために、MMDモデルをBlenderにインポートしてコツコツと四角ポリゴン化したとしよう。そしてモデルが完成してPMX出力。そして何か不具合を発見したとき、もし再びPMXをインポートすると全部三角ポリに戻されてしまうのだ😭
だがBlenderファイルから修正して再びPMX化するならば、四角ポリゴン化作業は不要だ。なのでPMX→Blenderは基本的に1回のみにしたいのだ!あとは全部BlenderからPMX化というループを回したい理由の一つはこれね。
謎のメッシュ分割になっている
普通のDCCツールのモデルの場合
Blenderほか普通のDCCツールでは、メッシュの分割とUV展開とはまったく無関係だ。例えばBlenderのスザンヌを見てみよう。スザンヌを編集モードで開き、マウスカーソルを前頭部に重ねてLキーを押す。Lキーはマウスホバー位置にあるメッシュ島を選択するホットキーだ。目玉メッシュ以外が選択されたはずだ。
つまりスザンヌの頭は目の周り以外はすべて地続き、繋がったメッシュ島(メッシュ・アイランド)なのだ。(より正確に言えば「PMX材質」単位でのメッシュ島の分割。)
次にスザンヌのUVマップを見てみよう。
スザンヌの場合、顔のテクスチャはどうやら右耳、左耳、その他という3つのUV島(UVアイランド)に分かれているようだ。(なお画面中央の上寄りにある2つのサークル状のUV島は右目、左目。今回のテーマとは無関係です、念のため😅)
このように、一般的なモデリングでは形を作るためのメッシュの状態と、テクスチャ用のUVマップの構成は別々のことが普通です。対応関係はありません。
モデリングで必要性がない限り、メッシュをわざわざ分割することはありません。スザンヌの形を作る場合、目の穴を開けるために目の周りのポリゴンが削除されて空洞になっていますが、耳のメッシュ部分をわざわざ分割するメリットがまったくありません。だからメッシュ形状としては地続きで1つになっています。これが普通です。
はい、わざわざ何でこんな回りくどい説明をしたか、だいたい想像が付いたと思う。
PMXでは「UV島=ほぼPMX材質単位で」メッシュ分割😱
そうなのだ!PMX形式ではわざわざUVマップのUV島、より正確には「PMX材質単位」に対応するようにメッシュ自体が分割されているのだ。
例えばIrisの服を見てみよう。Lキー選択すると一部が分割されたメッシュ島になっていることが分かる。試しに選択してGキーで移動させてみたら、図の右端のように普通に分離できてしまった😱このことからもこの服は分離されたメッシュが、重複頂点で重なっているだけであって、1つの単一メッシュになっているわけではない。これがPMXモデルをBlenderにインポートしたときの特徴だ。とても重要な点だ。
普通のモデリングであえてメッシュをこのように分割するメリットはありません。
この分割の法則は何かというと、前述の通り、驚きの、本来不要なはずの「UV島」に対応するようにメッシュが分割されているのだ。そして実はUV島はPMX材質を切り分けるためにも利用されている。つまりはPMX材質単位でメッシュを切り分けるために、結果としてUV島単位でメッシュが分離されている。
脇腹の部分もUVマップを拡大して見れば、やはりというかUV島が分離している。他の部分は明らかに分離したUV島となっている。
重複頂点で重なっている分離メッシュの弊害
ではなぜ単一メッシュではなくて、重なっているだけの分離メッシュが悪いのか?色んなデメリットがある。
例えば、
- スカルプト変形でほぼ確実に重複頂点の位置ずれが発生する
- ギズモ編集でもいつの間にか重複頂点の位置ずれが起こっている
- 2つの頂点を選択したつもりで片方しか選んでいなかった(必ず位置ずれする)
- 左右対称編集しているのに、なぜか位置がずれている
- 重複頂点の位置ずれは、必ずあとから気付く😭
- この位置ずれの修復には何時間もかかる(頂点数が多いほど地獄😭)
何十個もある位置ずれした穴を塞ぐ作業はただただつらいだけです😭
他にも、
- スムーズシェードでもメッシュ島の境界線にハードエッジが見える(頂点法線が互いに独立しているため)
- Lキーで一発で全選択できない
- 頂点選択状態でCtrl + テンキーのプラスキー押しで選択範囲を拡張していく範囲が制限される
なので、この分離メッシュ状態で編集を始めてしまうと、後半戦で「修正作業の時間数の方が多い」というヘンテコな編集地獄に迷い込むことになる。
安易な頂点編集は「作業全滅」のリスクが!!!
重複頂点ならば、頂点の結合を使って一括でメッシュをつなげば?と思うだろうが、早計だ。というか、それ、これからやる全ての作業をぶっ飛ばす危険性がある(体験談)😱
全て、そう、全部です。全部最初からやり直しになります。経験者は語る。
例えば、閉じた口の上下の唇の頂点がが偶然同じ位置にあったとしよう。安易に全選択>頂点をマージ>距離で、で結合してしまった。モーフで口を開くと槍の先のような変形メッシュががががっ!
重複頂点を結合したあと、分離することはものすんごく手間がかかります。分離後も、UVマップの位置の修正が必要です。この場合、瞳のUV修正とまぶたのUV修正が必要です。場合によっては面の張り直しも必要です。またその頂点の関わるモーフ全てに対して修正が必要です。1頂点当たり数十分~数時間かかります。
口の場合、口パクのモーフを全部作り直す羽目になります😭現実的に顔への編集はゼロからやり直したほうが早いレベルです。(もはやモデル改造ではなくてセットアップの領域ですね。)
こうなると以後の編集作業のうち、顔に関する編集作業は全てゼロに戻ります。それ以外の作業は、メッシュのファイル間の移植(アペンド)によって復帰可能ですが、作業手順をミスすると全滅します。
安全なメッシュ結合方法はあるの?
私が色々試行錯誤した結果、ある程度決まり切った手順で機械的に「ほぼほぼ安全確実に」分離メッシュを結合する方法を見つけることができました👍
それはまた別の記事でご紹介いたします😍
まとめ
PMXをBlenderにインポートすると、PMX特有のクセがあることが分かった。
- PMX形式のメッシュは無駄にメッシュ分離されている
- 分離の法則は「UV島」に対応するように分離している
- 分離メッシュのままでの編集にはたくさんの罠がある
- 安易な重複頂点の結合はとても危険
これ、MMD以外の3DCGモデリング経験がないと気付けない罠だらけ。初心者がMMDから3DCGに入って、しかもPMXで編集経験がないと、まったく意味不明な罠だらけでモデル改造を諦めてしまうだろう。
次の記事では早速メッシュ結合したいところだが、その前にやっておくと効率的な「別のメッシュの下処理」がある。それをやってからメッシュ結合する方が作業効率が何倍もUPするのだ。
次回からようやくモデルのメッシュを編集する工程に入っていきます。お楽しみに😊
今回の創作活動は約2時間30分(累積 約3,951時間)
(986回目のブログ更新)