主にMMDやBlenderの個人的なメモ用です。一部に成人向けの内容を含みます!未成年の方はご覧にならないでください!

MMDにMMDモデル(.pmx)を読み込んだ際に、意図しない線やちらつきが出る事があります。
原因によって、PmxEditor上では発生しないがMMD(MMEシェーダー未使用時)で発生する場合や、MMEのシェーダーを使用した際に発生する場合、ポストエフェクト使用時に発生する場合などさまざまです。

このページではそれらの原因と対処方法を記載しています。

原因を絞り込むにはモデルをMMDに読み込ませてMMDの画面/表示から各操作をする必要があります。(原因によってはPmxEditor上では発生しない場合もあるため)


MMDのアンチエイリアスをOFFにすると消える場合

発生事例@ニコニ立体ちゃん/アリシア・ソリッド(PMX)版アンチエイリアスをOFFにした場合
チラつく線(カメラを移動していないのに線が点滅したり動いたりする)がカメラを拡大すると現れ、カメラを引くと軽減、または消えるのが特徴です。

GeForceのMaxwell世代(700〜)のビデオカードを搭載しているPCで発生する現象です。(Radeon製のビデオカードを搭載しているか、intelの内蔵GPUのみを搭載しているPCでは発生しません)
どうもアンチエイリアス処理の関係で上記ビデオカードを搭載していると発生するようです。
(参考:【MMD】同じ材質の重なりで面に色が混じる現象

対処方法としていくつかの方法があります。
  • 1.MMDのアンチエイリアスをOFFにしてしまう
アンチエイリアス処理が原因なのでOFFにしてしまいます。
アンチエイリアスをOFFにする事を推奨しているMMEシェーダー(Ray-MMDなど)を利用する場合はこれが一番簡単な対処方法です。
また、MMEのシェーダーを利用しない場合や、アンチエイリアスをOFFにする事を推奨していないシェーダーを利用する場合は代わりにアンチエイリアス処理のできるエフェクト(MLAAなど)を使う事でジャギーを軽減しつつこの問題に対処できます。
  • 2.発生する材質の該当箇所などを別材質に分離し、両方の材質の”両面描画”をOFFにする
【MMD】モデルのエッジのチラつきの直し方を参考にPmxEditorなどで該当箇所を別材質に分離し、分離元材質と分離した材質の描画設定で”両面描画”をOFFにします。
最初から別材質に別れているモデルのメッシュオブジェクトが接する箇所に線やちらつきが発生する場合は、線やちらつきが発生する材質の両方の”両面描画”をOFFにします。
(例えば、顔と体に材質が別れており、首の付根に線やちらつきが発生する場合は顔材質と体材質の”両面描画”をOFFにする)
ただし、材質の両面描画をOFFにするとメッシュの裏面が描画されなくなるので、場合によっては問題となるかもしれません。
  • 3.エフェクトを利用する
【MMD】同じ材質の重なりで線が出る時の直し方から16bitTexDraw.xをダウンロードし、MMDに入れて描画順を一番最初(一番上)にします。
また、【MME】SSAA改配布を利用する方法もあります。こちらもアクセサリ順を一番上にする必要があります。
  • 4.ポストエフェクト使用時にだけ線やちらつきが発生する場合にポストエフェクトを改変する
筆者は経験していませんが、ポストエフェクト使用時にだけ、線やちらつきが発生する場合があるようです。
その場合は【MMD】同じ材質の重なりで線が出る時の直し方を参考に利用するポストエフェクトのアクセサリ(.x)と同じ名前の.fxファイルの拡張子を.txtに変更してテキストエディタで開きます。
OFFSCREENRENDERTARGET(大文字とは限らない)を検索して上記リンク先を参考にstring Format = "A16B16G16R16F";と一行追加(すでに”string Format”がある場合は置き換え)て保存し、拡張子を.fxに戻します。

MMDのアンチエイリアスをOFFにすると軽減し、さらにミップマップをOFFにすると完全に消える場合

発生事例(アンチエイリアスOFF)ミップマップをOFFにした場合(アンチエイリアスOFF)
見えづらいですが、左の発生事例の画像では黒いモデルの中心と左右の耳の付け根に白い線が出ています。
こちらは逆に、チラつかずカメラを引くと現れてカメラを拡大すると軽減、または消えるのが特徴です。

原因として、ミップマップ(異方性フィルタ、異方性テクスチャとも呼ばれる)の原理上の弱点とテクスチャの塗られ方です。

ミップマップの仕組みを簡単に説明すると、テクスチャの縮小版(低解像度版)を予め作っておいて遠くからモデルをカメラに写した場合などテクスチャが縮小状態で表示される時に、予め作っておいた縮小版(低解像度版)テクスチャを表示させる...という仕組みです。
リアルタイム描画時などに演算リソースを節約しつつテクスチャを滑らかな状態で描画できる、という利点があります。
(リアルタイムにテクスチャを高品質に縮小するのは負担が大きく、低品質に縮小するとテクスチャが滑らかでなくなる)
一方、欠点として描画した際にテクスチャの正確さ(鮮明さ)が多少劣る(ボヤける)、ビデオカードのメモリ容量を消費する...などが挙げられます。
このため、最終的なレンダリング時に速度よりも品質を重視する場合(3DCGソフトウェア等)ではあまり利用されず、ゲームエンジンなどリアルタイム性を求められる場合によく使われます。
テクスチャとUV展開図GIMPで元テクスチャの拡大表示GIMPで縮小処理(キュービック補間)した際の拡大表示
ただ、弱点としてテクスチャの縮小処理を行う際に、テクスチャに塗られた(ポリゴンに表示させる)部分の近接ピクセルの色が混じってしまい、ミップマップの(縮小されたテクスチャの)使用時にUVの切れ目(シーム)に混じった色が表示されてしまって結果として線として表示されてしまう事になります。
上記の画像では例としてGIMPで縮小処理を行い、拡大表示していますがポリゴンに表示される黒い色の部分と背景の白色の中間色である灰色が境目付近に出来てしまっています。
この灰色がこのモデルに出てくる線の正体です。
ほとんどのモデルの場合、テクスチャにはUVシームの外側に余白部分を確保していて、UVシームの内側の色などで余白部分を塗ってあるのでこのミップマップの問題は発生しません。

こちらも対処方法がいくつあります。
  • ミップマップをOFFにする
この方法はおすすめ出来ません。極端にカメラを引かなくても描画されるテクスチャが汚くなるからです。
ミップマップONミップマップOFF
上記画像を全画面表示で見比べるとストッキングの縦縞模様の白い部分が汚くなっているのがわかります。
  • UVを修正する
こちらの方法もあまりおすすめ出来ません。
PmxEditor(&どるる式UVエディタ)か、Blender(&mmd_tools)で、UVの島(アイランド,UVシームで区切られた塊)のサイズを一つ一つ縮小させる..という方法です。
手間がかかりますし、UVの島を縮小させるのでテクスチャに描かれた模様などが元のモデルと比べて大きくなったりします。
  • テクスチャを改変して修正する
GIMP等の画像編集ソフトを使い、テクスチャを改変、修正します。
他の方法と比べると簡単に行えるのでおすすめですが、MMDモデルの規約によっては改変(テクスチャ含む)を禁止しているモデルもあるのでご注意ください。
具体的な方法としては、上記のテクスチャとUV展開図の画像を例にすると背景の白色を実際にポリゴンに表示される部分の黒色で塗りつしてしまいます。
テクスチャにグラデーションがかかっていたり模様が書き込まれている場合は、UVの島の縁にあたる部分の色で塗り潰せばOKです。
厳密に同じ色でなくても近い色であればほとんどの場合、気にならない(実用上問題のない)程度にまで改善されます。(上記のテクスチャとUV展開図を例にすれば黒色で塗り潰さなくても、濃いグレーで白い背景を塗り潰せばミップマップによって生じる線が目立たなくなる)
  • Blenderなどで(場合によってはUVマップを作り直して)テクスチャをベイクする
他の方法と比べて非常に手間がかかる(場合がある)方法ですが、UVの島と島の間が無いか間隔を十分に確保でていないマテリアル(材質)を持つモデルに対して有効です。(例えば肌材質と衣服材質が同じテクスチャにまとめられていてそれぞれのUVシームが非常に近接している場合など)
また、UVシームの内側の色で外側(余白部分)を指定ピクセル数で自動的に塗ってくれるので、すでにUVの島の周辺に余白空間が十分に確保されている場合でも、”テクスチャを改変して修正する”方法と比べるとより正確な色でUVシームの外側が塗られます。
ただしこちらもMMDモデルの規約によってはMMDやその派生ソフトウェア、PmxEditor以外のソフトウェアにモデルデータをインポートしたり、改変を禁じているものもあります。ご注意ください。

編集メモ:Blenderへ改変するモデルをインポート→(場合によっては)UVマップを作り直す(ちゃんと余白があれば自動で良い)→改変元モデルを追加で(同じスケール値で)インポート→ディフューズ→”選択物→アクティブ”→”ベイク元(追加インポートした元のモデル)→ベイク先(改変するモデル)”の順に選択→ベイク(ノイズが乗る場合は”レイの最大距離”などを微調整)
近いうちにBlenderでベイクするページ作成してリンクを貼る

MMDのエッジをOFFにすると消える場合

発生事例修正例

エッジの大きさを大きくすると大きくなり、小さくすると小さくなってエッジをOFFにすると消える場合は頂点の位置がズレているのが原因です。
上記左側の画像のモデルは一つの材質ですが、中央で分割してわざと頂点の位置をズラしています。
また、孤立した単独頂点が存在する可能性もあるかもしれません。

対処方法として、PMXEditorで意図しないエッジの発生する付近の頂点を選択し、PmxViewから編集選択頂点近距離頂点の結合を実行します。
対象距離の値を適切な値にしないと頂点が結合されないか、意図しない頂点まで結合してしまいます。

また、孤立した単独頂点を消す場合はPmx編集ウインドウから編集頂点単独(面非参照)頂点を選択から孤立した頂点を選択し、PmxViewで[Shift]+[Delete]キーで削除します。

上記の操作をしても改善されず、”線状”の”影”が出る場合

発生事例修正例
チラつかない線でアンチエイリアス、ミップマップ、エッジをOFFにしても改善されず、照明(ライト)の位置操作を行う事で光の当たり具合によって改善したり悪化する場合は法線が揃っていない可能性があります。
上記の発生事例画像のモデルは球状の形をしており、橙色で塗りつぶしたテクスチャを使用していて材質は一つしかないのですが、球の真ん中に黒っぽい帯状の”影”が出来ています。(わかりやすいように照明の位置を操作しています)

修正方法としては、PMXEditorでモデルを開いて修正する材質のみを表示させてその材質の頂点を全選択し、PmxViewから編集法線関連選択法線の平均面法線設定を行えば修正されます。

上記の操作をしてもまだ”面にちらつき”が出る場合

Zファイティングと呼ばれる現象かもしれません。
同一座標に面が重なっていると発生するもので、”面”がチラつきます。
MMDでの対処方法は片方の面を少しだけ移動させるぐらいしかありません。
タグ

Menu

モデル/アクセサリ/素材など

Blender 2.9 LTS


※下記のページは古いものです

エンコード

コーデック

エンコード/動画編集ソフトウェアなど

その他

サウンド編集ソフト

AD

AD

管理人/副管理人のみ編集できます