NPCの頭部に関するお話です。
本来はメッシュやテクスチャがプレイヤキャラと切り離されてる為、プレイヤキャラは独立しています。MODで変更しても、NPCには影響出ないってことですね。
ところが環境次第では頭部を共用化してしまうNPCが出現し、意外と面倒です。ちょっと実験してみたので、簡単にまとめておきます(長い・・・ですが)。
プレイヤキャラ用の頭部や、NPCを含む体型に関しては、こちらをどうぞ。
f4mod.hatenablog.com
NPC用頭部の基本構造
NPCの頭部はFaceGenDataとして、顔、後頭部、目、髪等がすべて1つにパッケージされてます。ゲーム中でキャラメイクする必要も無いですしね。NPCの頭部メッシュ
001BCEA4
のガンナー専用の頭部メッシュ(FaceGenData)。倒れてますが気にしないでください。
勿論他のNPCも持っていて、ファイル名はForm IDと一緒。
NPCの頭部テクスチャ
顔のテクスチャも、NPCごとに専用化されてます。Skyrim同様、FaceGenDataのBSShaderTextureSetで設定。マテリアルファイル(.BGSM)は有りません。
テクスチャパスを見ての通り、FormIDをファイル名としたテクスチャ3種があります。
_d:ディフューズ
_msn:ノーマル(”msn”でも、オブジェクトノーマルでは無くタンジェント)
_n:皺用ノーマル(SkyrimでのDetailmapみたいな物かも、これは共用)
_s:スペキュラ
ここからテクスチャを剥がせば、このガンナーはテクスチャ無しの紫になります。
後頭部はプレイヤキャラと同じで、胴のテクスチャを共用します。このガンナーはdirty版を使いますが、そうでなければプレイヤキャラと共用。
FaceGenで設定された、NPC用の顔テクスチャ(001BCEA4_d.dds)。化粧ファイルがディフューズと合体してるように見えます。
Fallout4.esmで顔のTexture Setが設定されてますが、上記の通りFaceGenから読む為、これは使われないです。
以上から、NPC頭部のメッシュやテクスチャはFaceGenDataに依存しており、プレイヤキャラの顔とは独立状態にある訳です・・・少なくともバニラではその筈。
ところがMOD環境によっては、この独立状態が崩壊してしまうようです。
NPCによるFaceGenDataの無視
本来はFaceGenDataに依存したNPC頭部ですが、MOD環境だと怪奇現象が起きるんですね。何がおかしくなるか?というと・・・ちょっと実験していきます。
FaceGenDataからテクスチャを剥がす
先程の001BCEA4
のガンナーさん。FaceGenDataのテクスチャ(ディフューズ)外したままなので、顔色悪いです。
ガンナーの上書きespを作成
この状態のまま、001BCEA4
を上書きするespを作ります。ただしFallout4.esmからコピペするだけで、レコードは一切変更しません。
背景緑の、完全同一なIdentical to Master edit。競合の無い状態で使うので、書き戻しリスクも無いです。つまり何の影響も及ぼさない、完全無害なespの筈なのです・・・本来は。
作成したespを有効化
ところが、この状態でゲームを起動すると・・・ご覧の有様。
テクスチャが復活しちゃいました。FaceGenDataから剥がしたままなのに、何故かテクスチャがマッピングされてます。
テクスチャの参照先を確認
さて、どこからテクスチャを読んでるんでしょうね。FaceGenDataのパスを削除してる以上、プラグインのTexture Setを使うしか無さそうです。
そこで、このTexture Setで設定されたディフューズマップを、赤いテクスチャと差替えてみることに。
※Texture Setはそのまま置いておきます。espのレコードを変更すると、実験の信頼性が無くなってしまいますので。
見事に赤くなりました。やはりFaceGenDataのパスを無視して、Texture Setから読み始めたようです。Texture Set次第では、プレイヤキャラと同じテクスチャを使います。
この状態で「何も変更してないesp」を無効化すると、テクスチャ無しに巻き戻り。同じTexture Setでも、Fallout4.esm上からは読まれないようです。
どうでもいいですが、なんか玄人志向を思い出しました。
メッシュファイルの使用確認
テクスチャをFaceGenDataから読まなくなったことは判りました。では、メッシュはどうですかね?
顔のメッシュを削除しました。ちょっとスプラッター。
変化無し。これもFaceGenDataから読んでないようです。プレイヤキャラと同じメッシュを使い、プラグインから顔作ってる予感。
「何も変更してないesp」を外せば、テクスチャ同様にFaceGenDataが復活です。
ちょっとespに変更を加えます。このガンナーにパイパーのFace MorphとHead Partをコピーすると・・・
パイパーの顔になってしまいました。やっぱりプラグインから顔作ってますね。つまりテクスチャパスだけでなく、FaceGenDataを一切使わなくなったようです。
FaceGenDataをNPCが無視するトリガ
何が原因でこのFaceGenDataガン無視が起きるかというと、
- レコードを上書きされたバニラNPC(変更が無くても)
- MOD追加のNPC全部(esm、esp共に)
これらのNPCのFaceGenDataが無効化されるようです。
変更の一切無いプラグインでも、レコード更新された時点で無視するようなので、恐らくゲームエンジン的な問題ですね。moddingしたらFaceGenDataは破棄するよ!的な仕様でしょうか。
もっともFallout4の大半のNPC追加系MODには、FaceGenDataが同梱されてないので(一応CKで出力は可能)、この辺は周知の事実な気がします(僕が浦島太郎なだけで!w)。
FaceGenDataの無視で困ること
Skyrimのように顔黒現象も起きないので、そこら辺は支障無さそうです。むしろテクスチャの共用化により、VRAM的にはありがたい位なのかも?プレイヤキャラ用顔テクスチャの問題
上書きされたNPCは、Texture Set次第ではプレイヤキャラと同じテクスチャを使い始める為、プレイヤキャラの顔テクスチャが独立状態でなくなります。後頭部は元々同じテクスチャを使いますが、Head Partからプレイヤキャラと同じ物を使い始める為、CBBE環境だと更に厄介になる場合も。
NPCの頭部構成の混在化
バニラNPCのレコードを1つも書換えないMOD環境はレアだと思うので、大抵はFaceGenDataを使うNPCと、プレイヤキャラと頭部を共用するNPCが、混在することになります。管理上、すごく面倒です。NPCによって、独立してたり共有してたり、ごっちゃになるので・・・
これを解決するには、プレイヤキャラ用の頭部を独立化するのが一番だと思います。胴や手の独立化ほど楽じゃないですが、可能です。肌の部分をNPCから完全に切り離してしまうことで、相互に影響しあうリスクを潰せます。これはまた別記事にて。
f4mod.hatenablog.com
以上、おしまいです!