Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】NPCの頭部構造と、改変で発生するトラブルについて



スポンサーリンク

NPCの頭部に関するお話です。
本来はメッシュやテクスチャがプレイヤキャラと切り離されてる為、プレイヤキャラは独立しています。MODで変更しても、NPCには影響出ないってことですね。

ところが環境次第では頭部を共用化してしまうNPCが出現し、意外と面倒です。ちょっと実験してみたので、簡単にまとめておきます(長い・・・ですが)。
プレイヤキャラ用の頭部や、NPCを含む体型に関しては、こちらをどうぞ。
f4mod.hatenablog.com

NPC用頭部の基本構造

NPCの頭部はFaceGenDataとして、顔、後頭部、目、髪等がすべて1つにパッケージされてます。ゲーム中でキャラメイクする必要も無いですしね。


NPCの頭部メッシュ

001BCEA4のガンナー専用の頭部メッシュ(FaceGenData)。倒れてますが気にしないでください。
ガンナーのFaceGenData
勿論他のNPCも持っていて、ファイル名はForm IDと一緒。


NPCの頭部テクスチャ

顔のテクスチャも、NPCごとに専用化されてます。Skyrim同様、FaceGenDataのBSShaderTextureSetで設定。マテリアルファイル(.BGSM)は有りません。
FaceGenDataのテクスチャ指定
テクスチャパスを見ての通り、FormIDをファイル名としたテクスチャ3種があります。
_d:ディフューズ
_msn:ノーマル(”msn”でも、オブジェクトノーマルでは無くタンジェント)
_n:皺用ノーマル(SkyrimでのDetailmapみたいな物かも、これは共用)
_s:スペキュラ


ここからテクスチャを剥がせば、このガンナーはテクスチャ無しの紫になります。
FaceGenからテクスチャ削除


後頭部はプレイヤキャラと同じで、胴のテクスチャを共用します。このガンナーはdirty版を使いますが、そうでなければプレイヤキャラと共用。
FaceGenDataの後頭部テクスチャ指定


FaceGenで設定された、NPC用の顔テクスチャ(001BCEA4_d.dds)。化粧ファイルがディフューズと合体してるように見えます。
NPCの顔のディフューズマップ


Fallout4.esmで顔のTexture Setが設定されてますが、上記の通りFaceGenから読む為、これは使われないです。
使われないTextureSet

以上から、NPC頭部のメッシュやテクスチャはFaceGenDataに依存しており、プレイヤキャラの顔とは独立状態にある訳です・・・少なくともバニラではその筈。

ところがMOD環境によっては、この独立状態が崩壊してしまうようです。



NPCによるFaceGenDataの無視

本来はFaceGenDataに依存したNPC頭部ですが、MOD環境だと怪奇現象が起きるんですね。何がおかしくなるか?というと・・・ちょっと実験していきます。


FaceGenDataからテクスチャを剥がす

先程の001BCEA4のガンナーさん。FaceGenDataのテクスチャ(ディフューズ)外したままなので、顔色悪いです。
テクスチャの無いガンナー


ガンナーの上書きespを作成

この状態のまま、001BCEA4を上書きするespを作ります。ただしFallout4.esmからコピペするだけで、レコードは一切変更しません
Identical to Master editで上書き
背景緑の、完全同一なIdentical to Master edit。競合の無い状態で使うので、書き戻しリスクも無いです。つまり何の影響も及ぼさない、完全無害なespの筈なのです・・・本来は。


作成したespを有効化

ところが、この状態でゲームを起動すると・・・ご覧の有様。
テクスチャの復活
テクスチャが復活しちゃいました。FaceGenDataから剥がしたままなのに、何故かテクスチャがマッピングされてます。


テクスチャの参照先を確認

さて、どこからテクスチャを読んでるんでしょうね。FaceGenDataのパスを削除してる以上、プラグインのTexture Setを使うしか無さそうです。
ガンナーのTextureSet
そこで、このTexture Setで設定されたディフューズマップを、赤いテクスチャと差替えてみることに。
※Texture Setはそのまま置いておきます。espのレコードを変更すると、実験の信頼性が無くなってしまいますので。



見事に赤くなりました。やはりFaceGenDataのパスを無視して、Texture Setから読み始めたようです。Texture Set次第では、プレイヤキャラと同じテクスチャを使います
赤いガンナー



この状態で「何も変更してないesp」を無効化すると、テクスチャ無しに巻き戻り。同じTexture Setでも、Fallout4.esm上からは読まれないようです。
可逆性の確認
どうでもいいですが、なんか玄人志向を思い出しました。


メッシュファイルの使用確認

テクスチャをFaceGenDataから読まなくなったことは判りました。では、メッシュはどうですかね?
顔のメッシュを削除しました。ちょっとスプラッター。
顔面メッシュの削除


変化無し。これも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


以上、おしまいです!

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com