見出し画像

MMDモデルの影がおかしい(一部の面に影が無いみたいに見える)件&エッジが切れる件


1、影がおかしい

metasequoia4で玩具の剣をモデリングをして、PMXエディタでセットアップ。MMDに持って行くと何故か影がおかしい! 影に・・・空きがある? なんだこれ? 面の一部に影が無いの???( ゚Д゚)???(下図)

上のモデルは実際に問題に直面した時のモデルです。
その後検証用にテストモデルを作りましたのでそれで解説を進めます。
テストモデルの影の空きは小さいですが、やっぱりありますね!(下図)

この謎がやっと解けました!
タイッツーで先輩モデラー様方に教えて頂いたのです!

問題は―――【 エッジ(輪郭) 】!!!

PMXエディタでこのモデルのエッジは有効にチェックを入れていません。エッジ非表示の状態なんです。(下図)

なのでモデルにはエッジが見え無くて気付かないのですが・・・サイズには「10」と入ってるんですよ。表示されてないだけでエッジ「10」入ってるんです!!
エッジを有効にして表示してみると下図の右の様になっていました。

上の図をみればお分かりの通り、右のモデルはエッジ黒線とモデルの間に空きがありますね!!その空きが影に出ていた―――言いかえれば、エッジが影に表示されているってことなんですよ。
エッジ非表示であっても、陰にはエッジが繁栄されているんです。

なお、PMXエディタでこのモデルを見てみると、下図のように影に空きはありません。
だからPMXエディタでセットアップ中は気付かなかったんですね(´・ω・`)

私はてっきり、エッジのチェック無し(非表示)にしてあれば、サイズに数字が入っていようが表示しないのだからモデルに影響しないと思っていたのですね~!
でもこのサイズ「10」が影に出ていたのです。

もう一つ分かりやすい見本をお見せしましょう。
下のイヤリングはエッジを非表示にしてます。影をご覧ください。なんだかすごくシッカリした影じゃないです? これ、エッジに数字が入ってました(確か「5」くらい)。

続いて下図をご覧ください。
エッジの数字を「0.1」にしました。勿論エッジは非表示のままです。
影がスッキリしましたね!上図の影と見比べると一目瞭然です。

――という感じで。PMXエディタでエッジを非表示にしてても、サイズに数値が入っていればソレが陰に出るんですね~( ゚Д゚)ノ
エッジ非表示は「”エッジ無し”では無い」ということですね。見えないだけでエッジはあって影に影響するってことです。
なのでエッジのサイズ数値はちゃんと考えないと!!って訳です!ハイひとつお勉強になりましたーヾ(*´∀`*)ノ

2、エッジの角に隙間が出来るのは何故?

さて、今までの画像を見てお気づきだと思いますが・・・次の問題があります。
エッジを表示にした際の「隙間」はなんだ?ってヤツです!(下図)

エッジってモデルに沿って出る輪郭線じゃないの?なんで隙間が空いてるの???
今回はたまたまサイズ「10」という大きな数字で分かりやすく隙間が見えてますが、これがサイズ「1」とかだとこんな感じになります。(下図ピンク)

サイズ「1」のピンクのモデルは、一見角に隙間があるようには見えません。数値を小さくしてあるとその辺ハッキリ見えない。
MMDで見た場合は下図のようになって、そちらでも一見問題無い様に見えます。

ですが・・・よ~~~っく影を見ると、隙間が空いてるんですよねーーー!

エッジの数値が小さいので分かりにくいですが、モデルとエッジの間に隙間があるというのがコレでわかります(´・ω・`)

―――で、この隙間はなんじゃらほい???

実は。
この隙間・・・頂点が重なって複数あることで起きているとのこと。
法線表示で見てみると下図のように法線が3本出ていました。

下図のとおり、この角は3辺の頂点が3つ重なっていて、それぞれ別方向に法線が向いているということです。

この頂点3つは重なっているだけで「結合されていない」状態の様です。
試しにPMXエディタ上で近接頂点を結合してみました!
下図はわかりやすい様にエッジ「10」のモデルでやっています。

上図のとおり、頂点を結合したら・・・隙間は無くなりましたね!!ヾ(*´∀`*)ノ
ということは、頂点を結合すれば良いのです!

―――が、ここで疑問がひとつ。
メタセコで作っている時にはオブジェクトは1つで頂点を分けているという意識はありませんでした。なので頂点が3つ重なっている状態というのは全く予想外( ゚Д゚)ノ
頂点が分かれるとは一体なんぞや??? となります。
しかしこの問題は一度置いといて。
先に書かねばならない事があります。

【頂点をPMXエディタで結合出来るんだから原因は別にいいよ!頂点が分かれてるっていなら結合しちゃえばいいじゃない(≧▽≦)】

――と思いますよね。今までの流れだと。
でもそれは、間違いです!!!

メタセコでUV展開をしますよね。そのUV展開が、PMXエディタで頂点結合することによって壊れる可能性があるのです!!

実際テストモデルでやったらですね・・・UV壊れたwww(下図)

なので【頂点結合すりゃいい】っていう感じでやるとUVが壊れてテクスチャも壊れるって事なんですよ! 恐ろしいですねーーー:;(∩´﹏`∩);:

ではどうするか。
話は戻りますが―――メタセコで造形してる時にこの辺の問題を解決しないといけないってことなんですよ。
わたしは造型中「頂点が重なっているだけで、結合されていない」とは全く自覚していませんでした。
これについて、タイッツーで教えて下さる先輩モデラー様が居たのです。
画像付きでしっかりと解説下さって本当に有り難かったです。本当はリンクを貼りたいところですが、タイッツーはクローズドなのでリンクが貼れません。そのため私が分かる範囲で書こうと思います。
(正直、難しすぎてまだ良く分かってないので・・・わかる点だけ書きます)

メタセコで造形した場合、面の向き毎に法線が設定されてて、その向きによって同じ場所にある頂点でも向いている方向が違う。3方向に法線がある場合は、そこの頂点は1つでは無く3つになっているんです。
例えば下図は、メタセコで正方形オブジェクトを作った場合です。1つの頂点に3方向の法線が出ています。メタセコ上では頂点は結合されて1つの状態でカウントされているのですが、これをPMXエディタに持って行くと頂点は3つ重なった状態になるということです。

順を追って図解します。
まずメタセコで正方形オブジェクトをつくると、下図のとおり頂点数は8です。

しかしそれをPMXエディタに持って行くと、頂点数は24になっています。(下図)

8つある角の頂点が、法線3方向の向き毎に1つずつ頂点があって3つ重なった状態・・・8×3=24個の頂点になっているのですね!

要するに、頂点が法線の方向毎に切れた状態になっちゃうのは仕様ということです!
ということは、メタセコで法線方向を単一(1つ)にすればいい。

・・・んでここで、法線とはなんぞや?とか色々解説出来れば良かったのですが、どうもあやふやにしか理解出来ていないんですよね(;゚Д゚)
なので、不確かな事は書かず、対策を書きます!

まず、正方形オブジェクトの設定を見てみると【スムージング59.5】となっています。(下図)
これはデフォルトでオブジェクトを作るとこうなっているのです。
この数値を【180】にしてみましょう!

下図は8頂点をスムージング180にした場合です。
法線が1つ(単一)になりました。

お気づきの通り、オブジェクトの陰影の出方が違ってきます。(下図)

テストしていた剣オブジェクトでも見てみると、陰影は随分違います。(下図)

法線の向きは、モデルの陰影に影響しているんですよね。
スムージング180にするということは球体の陰影と同じになるのです。結果、面毎のキッパリした影にはならない・・・ということです。

私が最初にモデリングを勉強した時、オブジェクトで正方形を作り【曲面制御&スムージング180】をして造型していくと覚えました。(下図)
これをやると法線は単一化され、PMXエディタに持って行っても頂点は切れません。
この方法で曲線のモデルを作っていた時はエッジの問題はあまり気付いていなかったのはスムージング180にしてて、頂点が切れていなかったからです。

下図のような、曲線の無い、直線のカッチリしたモデルを作るようになって、でも曲面制御していなかったのでスムージングは59.5のままで。
だからこんな問題が起きるようになったのですね~( ゚Д゚)ノ

【じゃぁ、全てのモデルのスムージングを180にすりゃいいじゃん!】

・・・ってなりますよね。
でも上記で図解したとおり、陰影がカッチリしてくれないんですよね。
法線は向きが変えられるのですが、頂点全部やるとかムリゲーです(@_@;)
そこで、先輩モデラー様方のアドバイスは以下。

アドバイス①辺の両側(左右)に辺を作る。

下図は、上段右がスムージング180の正方形です(陰影が球体と同じでパッキリしてない)。
下段右が、各辺の左右に新たに辺を作った場合です(コマンド「ナイフ」の連続切断)。

辺の両側(左右)に辺を作る事で球体の陰影よりかは、正方形のキッパリした陰影に近くなりますね!
この方法も1案だと思います。
ただデメリットは・・・細かい造型だと辺を作るのが大変ってこと(;゚Д゚)
剣でテストしましたが、結構面倒でした(´・ω・`)

アドバイス②エッジ用の裏ポリゴンを作る。

エッジを付けたいスムージング180のオブジェクトを重ねて作っておいて、テクスチャは透過の状態にしてPMXエディタでエッジだけ表示させる方法ですね。(下図の2つを重ねておく訳です)

これならエッジが綺麗に出て影に空きは出なくなります。
しかしデメリットとしては、ポリゴンが増えるので頂点数が増えますし、PMXエディタで頂点移動したりするとき色々わからなくなりそう(@_@;)
初心者にはちょいと危ない橋だな~と思いました。

アドバイス③テクスチャにエッジを書きこむ。

材質にエッジを入れることは諦めてエッジサイズを「0」にし、テクスチャに輪郭線を書きこむ・・・という方法ですね!
これも確かに手だな!と思います(≧▽≦)
デメリットは、テクスチャ描くのが苦手な人には結構苦行かもってことかな~('ω')

――ていう感じで、先輩方のアドバイスを受けつつやっとこ色々理解した次第です!!
今後どうやっていくかはその都度違うと思いますが、とりあえず影の問題はコレでクリアです!

教えて下さった諸先輩方、ありがとうございましたヾ(*´∀`*)ノ