【sdPBRマテリアル配布】無調整でモデルの色を忠実に再現するマテリアル。透過の奥に影が出ないときの対処法

この記事は約5分で読めます。

【2026/6/7追記】
Material Importer用、アクセサリ用、肌用マテリアルを用意しました。

今回は「PMXモデルの色を極限まで再現しつつコントローラーで微調整できる」sdPBRマテリアルを配布する。
また、「透過材質がらみの影表示の不具合」への対処法を解説する。

以前Ray-MMDを試し、「モデル本来の色が出ない」とか「透過材質が重なると奥が消える」という致命的な仕様に悩まされた。
その経験をsdPBR(v4.80)に活かそうと戻ってきたら・・・sdPBRも同じやないかいっ!
このように!

マテリアル初期値では色が死んでいる
マテリアル初期値では色が死んでいる

思えばここから色を整えるのに以前は大変な思いをした。
とは言え、なんとか解決策を講じることができた。
このように!

今回配布のマテリアルで生き返す
今回配布のマテリアルで生き返す

肌用マテリアルにもこの仕組みを取り入れた。
リアル肌にもできる。
このように!

Material Importerで好きなマテリアルを作って取り込むこともできる。
このように。

ノーマルのマテリアルを適用した服
ノーマルのマテリアルを適用した服
布テクスチャを適用した服
布テクスチャを適用した服

もう一つ、「透過材質の奥の影が描画されない」という問題がある。
こちらは解決策というより対処法でなんとかできた。
このように・・・

そのままだと影が消える
そのままだと影が消える
影が見えるよう改善
影が見えるよう改善

マテリアル配布

sdPBRにおいて「調整しなくてもPMXモデルの色を再現する」ことを目標に、色補正を組み込んだマテリアルファイル。
汎用、肌用、アクセサリ用同梱。
調整用PMXコントローラ対応。
トーンマッパーを適用することを前提とした初期値を設定している。
動作確認には「sdToneMapper_ACEScg.fx」を使用した。

sdPBRフォルダにファイルを配置セヨ。

マテリアルの内容

モデルの材質データを元にsdPBRの次の設定項目を自動化している。

共通

  • baseColor: テクスチャにToonマップを合成する。高輝度の彩度を補強する。
  • roughness: 反射強度から変換した値を反映する。
  • specular: 反射色は反映させない。標準的な固定値を初期値とした。

肌用マテリアル

  • clearccoat,clearcoatGloss: sdPBR作者に倣い皮脂感を出すため初期値を設定した。
  • subsurface: sdPBR作者に倣い「表面化散乱」(血色)を表現するため初期値を設定した。

比べると汎用マテリアルではくすんだように見える。
肌用マテリアルでは直接照明の境目に赤みが出る。やりすぎな気もする。
リアル肌では肌テクスチャを材質の色にばっちり置き換えているところがポイント。

Material Importer用マテリアル

sdPBR付属のMaterial Importerで好きなマテリアルを作成して取り込める。
ただの布の場合はよーく近づかないと違いがよくわからないが、金属や石や木目なんかもできる!はず。
Material Importerの#define部分をコピペするだけでコントローラーまで使えるのがいいところ。
テクスチャの模様を材質色で再現することもできる。

コントローラの使い方

標準コントローラに独自の項目を追加した。
マテリアルを適用してコントローラファイルを読み込み、目モーフ内で設定する。
1超えの数値も手入力で適用可能。

  • ModelColor+: 全体の色の濃さを調整(初期値は0.2)
  • Toon+: Toonマップの適用量(初期値0.8)
  • TextureLoops: 合成用テクスチャの繰り返し回数(100倍)。0なら合成用テクスチャを適用しない
  • NormalScale: 法線マップの強さ
  • Brightness: 色の明るさ
  • roughness: 0のとき自動設定
  • specular: 初期値0.1
  • subsurface: 肌マテリアルでは0のとき自動設定

透過材質と「影」の不具合回避策

検証の結果、必ずどこかを犠牲にしなければならない
「見た目を優先」すると次のような対処法となった。
原則、キャラモデル自体にはこの対処法は適用しない。

sdPBR_Depthタブでオフ設定

sdPBRでは、「非透過度0.5以上」のとき「その材質の背後の影を表示しない」設定になっている。
表示させたい場合は、エフェクト割り当ての「sdPBR_Depth」タブで透過材質のほうのチェックをオフにする必要がある。

これをすると「透過しない材質の背後の影」までもが透過して見えるようになってしまう。
例えばこれを「髪の毛」に適用すると、頭蓋骨内部のメッシュ構造が影として浮かび上がってしまう。
このように・・・

グラデーションのように徐々に透過度が変わっていく材質では、透過させるかどうかを状況に応じて自分で判断する必要がある。
この条件は数値化できないため、sdPBRのコード修正では対応できない。

マテリアルを適用しない

背後の影を表示描画するだけなら「sdPBR_Depthタブ」の設定だけでよいのだが、これが今度は新たな不具合として「背景の輪郭がドット状にガタガタした表示になる」という現象を呼び起こしてしまう。

背景がギザギザで、後ろのほうの影も強調される
背景がギザギザで、後ろのほうの影も強調される

これへの対処として、該当の透過材質には「マテリアルを適用しない」ことで透過の奥の描画がキレイになる。
材質数が多いと、どれが対象の透過材質なのか調べるのも大変になる。
その場合は逆に、影を落とすべき床など「必要な部分にだけマテリアルを適用」すると楽。

これらの対処をせず、「影が落ちないのを容認する」のも一つだ。

不要な影を消す(室内の場合)

これは今回の問題とは関係ないが、ステージ上部の骨組みなどが不要な影を落としてしまう場合、エフェクト割り当ての「sdPBR_SD0~3」「sdSSDO」タブでチェックを外すことで非表示にできる。
これで画面がスッキリする。

光線メッシュまでもが影を落としてしまう
光線メッシュまでもが影を落としてしまう
影を落とす材質をはずしてスッキリ
影を落とす材質をはずしてスッキリ

終わりに

今後はsdPBRの主要なマテリアル設定にも色補正機能を適用して、使えそうであれば配布する予定。

今回の使用モデル

左から順
姫森ルーナ:ホロライブ
IA:1st PLACE/お宮
冴子(仮):VRoid自作
ペル崎ひな子:自作
初音ミク:Crypton Future Media/ISAO
ダリア:MiHoYo

コメント

タイトルとURLをコピーしました