CC4 のフォトリアル系人物モデルを VRM アバターに変換しようとすると、理科室の人体解剖モデルのように透明になってしまうという謎の事象が発生していたが、ノーマルテクスチャ・アルファハッシュでの出力を止めることで概ね解決した。
今回は ActorCORE で無償提供されている ActorSCAN (ActorBUILD) のモデルで試した。
左手のメッシュが少しおかしいが、これはボーン埋め込み作業をいい加減に行ったことによると思われるので、後で修正することにする。
前回までのトラブル事象
VRM で再生したときに、眼球や歯が半透明に透けて表示される事象となっていた。
シェーダー Shading ノードの処理を最低限に変更すればよい
VRM のシェーダーはフォトリアル系を目指しておらず、アニメ調 Toon を目指しているらしいので、ベースカラー以外にメタリック、スペキュラー等々を出力しているのがオーバースペックだと考えられた。
もはやフォトリアル系の出力にはならないと思われるが、もう一気に割り切ってしまい、ベースカラー以外の出力を全て切断してしまう。
ブレンドモードがアルファハッシュとなっている場合、必ず半透明の妖怪人間が出力されることが分かっている。
- 不透明またはアルファクリップのどちらかに設定する
アルファブレンドは Blender の表示の時点で半透明の妖怪人間となる。
不透明とアルファクリップには違いはないように思える。 - 裏面を非表示は、オンでもオフでも違いは無いように思える。
ここから、なるべく元のシェーダー設定に戻していく
ベースカラーだけの鉄板マテリアル構成で、少なくとも半透明ではない VRMアバターが出力されることが分かったので、欲が出てきた。
さきほど外した他のマテリアル出力を元に戻していく。
犯人は誰だ?
粗さは復活させてよい
いちばん安全そうな粗さを復旧させてみた。全然問題ない。
ノーマルは復活させない
ノーマルを復活させたところ、あからさまにテカった。
これはおそらく復活させるべきではない。
メタリック、スペキュラー、放射を復活させる
だいぶ健康そうな感じになった。
もし、ここでノーマルを復活させると、テカリが復活する。
ここで実験。ノーマルを残したままで、他の3つのうち、1つまたは2つを残す努力をするとどうなるのか?知識ゼロでも実行できる悉皆調査を行ってみる。
どれか1つだけ外す
- 放射を外してみたがテカりは消えなかった
- メタリックを外してみたがテカりは消えなかった
- スペキュラーを外してみたがテカリは消えなかった
どれか1つを残して2つ外す
- 放射とスペキュラーを外した(メタリックのみ残す)
だいぶ様子がおかしいのでメタリックは怪しい - 放射とメタリックを外した(スペキュラーのみ残す)
だいぶ様子がおかしいのでスペキュラーも怪しい - 放射のみ残す
3つとも残した場合と同様だったので、解決にはなっていない。そもそも人体内部から発光することもないだろうから、もともと関係なさそうではある。
以上のことから、やっぱりノーマルがテカリの真犯人らしいと思えた。
アルファは復活させても問題ない
一番の危険人物、アルファを復活させてみた。
しかし、マテリアルプロパティ - 設定 の不透明の設定が勝っているらしく、半透明になったりはしなかった。
- アルファを接続したまま、マテリアルプロパティ - 設定 をアルファハッシュにすると半透明の解剖人形になった
- アルファを切断したまま、マテリアルプロパティ - 設定 をアルファハッシュにしてもやはり半透明の解剖人形になった
ノーマルの出力は切断、アルファハッシュは禁じ手とする
以上のことから、
- ノーマル出力は切断すべき
- マテリアルプロパティ - 設定 をアルファハッシュにはしないべき
だと分かった。
但し、今回の変換作業においては、VRMリグを actorBUILD 人物モデルのメッシュに埋め込むリギング(ボーン埋め込み、スキニング、リギング)作業でエラー(ボーンのヒートウェイト異常)が発生しており、そのさいに、actorBUILD 人物モデルのメッシュの法線(ノーマル)を修正して対処した経緯があるので、いちがいにノーマル出力が共犯者であるとは特定できない。
後日、シェーダー Shading ノードの処理を最低限に変更する方法が Blender Auto Setup Add-on にもともと用意されていることに気付いた
今回はシェーダーノードの構成を手作業で簡略化したが、同じようなことをボタン一発で行える方法がもともと用意されていることに後日気づいた。