NPCの顔黒不具合の発生理由と対策について以前まとめてみました。今回はMODの競合を例に実際に修正してみます。
理屈まとめ記事はこちら。
NPCを美化するDecent Women - improve female npcs faceと、お年寄り種族の体型をバニラメッシュ&テクスチャに固定するSeniors Wear Vanillaの競合を例にします。
- はじめに
- 競合する2つのMODについて
- 競合発生までの過程
- 競合状態の確認
- 対策1.Decent Womenを優先
- 対策2.Seniors Wear Vanillaを優先
- (おまけ)Seniors Wear Vanillaの手袋修正
はじめに
顔黒問題に限りませんが、こうした競合はローカル環境への依存度が非常に強いです。同じMOD同士の競合ですら、状況次第で対処方法が変わってきます。ルーズファイルの上書きやロードオーダーの違い、更に他のMODとも競合している場合等、様々です。
MODの互換パッチ同士が競合するように、あらゆる環境に対応できる万能パッチを作ることは不可能です。自分の環境の競合状態をしっかりと自分で見極めて対策してください。TES5Editで使用中のプラグインを全部ロードして確認しないと見落とします。
この記事は一例にすぎないので、対策方針の参考程度に留めてください。
競合する2つのMODについて
そのまま導入した場合、espの各NPCに関するレコードと、ルーズフォルダにインストールされるFaceGenDataの両方が競合します。
MODの効果と大雑把な構造は以下の通り。良く分からなかったら流し読みでも大丈夫です。
Decent Women
NPCの美化MOD。一般市民やフォロワに敵性NPCと、変更対象が多いです。種別ごとにesp分割されてます、子供変更はesp無し。構造はシンプルで、
- 対象NPCのHead Parts変更
- 美化に伴うFaceGenData変更
だけになってます。Node構成工夫すればesp無しにできそうな気がします。
Seniors Wear Vanilla
通常、体型メッシュを導入するとお年寄りもせくしーばでぃになってしまいます。HDT全開でばるんばるんのBBAとか勘弁して欲しいですね。このMODはそんな悩みを解消してくれます。お年寄り種族(Elder Race)の体型メッシュとテクスチャを独立させます。中身はバニラメッシュ&テクスチャを使用。
Elder Raceは元々あるのですが、バニラだとノーマルマップのみの使い分けになってます。これをメッシュも分離してしまおうという構造です。やってることは、
- Elder Raceのマッパ及び装備(バニラのElder Raceが着てる物だけ)に専用Armor Addon追加
- Race情報のHead PartsとTint関連の変更
- 対象NPCのHead Parts変更
- 独立化に伴うFaceGenData変更
Head Partsは眉毛だけ老人用に変更してる模様。これもNode書き換えれば無くていい変更だと思いますが、数が多いのでちょっと大変そうです。
体型を独立化させている為、顔のテクスチャパスを変更したFaceGenDataが必要になります。これが無いと顔だけ従来フォルダのテクスチャ使うので、色が変わってしまいます。
Race情報の変更項目はPlayable種族で使う項目の筈なので、他のMODで上書きして潰しても問題無いと思います。競合避けたい場合は削除しても多分大丈夫。
競合発生までの過程
導入から黒顔に至る過程を見てみます。
Decent Womenの導入
とりあえずCommonersだけで。一般市民系の美化になります。導入されるファイルは、
- espプラグイン(DW Commoners.esp)
- FaceGenData(頭のメッシュ)
- FaceTint(化粧テクスチャ)
この時点でルーズファイルの上書き競合が発生しないことを前提にします。
Seniors Wear Vanillaの導入
次にお年寄りMOD。導入されるファイルは、
- espプラグイン(SeniorsWearVanilla.esp)
- FaceGenData(頭のメッシュ)
- Elder Race用体型メッシュ(バニラと同一)
- Elder Race用装備メッシュ(Elder RaceのNPCが着てる物のみ)
- Elder Race用体型テクスチャ(バニラと同一)
他にもテクスチャ結構多いのですが、体型用以外の物は使用されないと思います。FaceTintは同梱無し。
ここでFaceGenDataに注目です。Decent Womenでも一部のElder Raceが美化対象の為、すでに顔の造形を変更したFaceGenDataが導入されてます。
しかしSeniors Wear Vanillaも体型独立化に伴い、頭のテクスチャを独立化する必要があります(色が合わなくなるから)。よって新しいテクスチャパスに変更したFaceGenDataを導入します。お互い譲れません。競合の発生です。
ここではSeniors Wear VanillaのFaceGenDataで上書きしてみました。
競合状態の確認
LOOTを実行すると、ロードオーダーはDW Commoners.espが後になります。これはどういうことかと言うと・・・
Morthalのばば様を見てみます。
DW Commoners.espがロードオーダー優先なので、こうなります。Seniors Wear BanillaのHead Partsが潰されてます。
でもさっき、FaceGenDataはSeniors Wear Vanillaで上書きしたので、これがルーズファイルに入ってます。
結果、赤枠内の眉毛においてHead Parts名とNode名が不整合になってます。顔黒確定!
ゲーム内でのおばば様。大使館ではお世話になりました。
見やすいように庶民服を着て頂いております。見ての通り顔黒発生、首の境界線バッチリです。これはこれで迫力あるんですけどね(笑)
正直このままでいい気もしますが、一応異常なので対策してみます。
対策1.Decent Womenを優先
まず美化MODであるDecent Womenを優先した対策から。
Decent WomenのFaceGenDataを使う
頭部の形状は如何ともしがたいので、まずはDecent WomenのFeceGenDataに変更します。再インストールするも良し、000135EB.NIFだけ入れ替えるも良しです。
赤枠内のNode名、これなら不整合になりません。
比較用再掲載。
入れ替えました。Decent WomenのFaceGenが適用されて、ちょっと薄めのおばば様。でもやはり首の線でてますね。「顔黒」では無いですが。
FaceGenDataのテクスチャパスを直す
胴のテクスチャが独立化したものの、顔のテクスチャをバニラ種族フォルダから持ってきてることが原因です。この環境はSG入れてるので、胴はバニラテクスチャで顔だけSGという組合せになってます。違うテクスチャ入れてるんだから色違いになるに決まってます。
FaceGenDataのBSShaderTextureSetにあるテクスチャパスを変更します。
上から順に、ディフューズ(カラー)、ノーマル、サブサーフェイス、顔色、化粧、スペキュラ。とりあえずディフューズだけSenior Wear VanillaのFaceGenDataと同じにしました。ビジュアル的に気になるようなら他も直してOKです。
※espで設定されてる頭部のTextureSetは、プレイヤキャラにしか適用されてない気がします(SSマップ設定はプレイヤキャラにも機能してないようですが)。よってNPCの場合はFaceGenDataのパスで修正する必要があります。
修正後のおばば様。テクスチャの色が合わさって修正完了。
DW優先バージョン、これで終わりです。
対策2.Seniors Wear Vanillaを優先
Decent Women入れてるものの、おばば様に関しては迫力あるバニラ顔で!という場合の対策。
Seniors Wear VanillaのFaceGenDataを使う
対策1のように入れ替えず、最初のままこっち使います。再掲載。
Decent Womenにパッチを当てる
何となくパッチ作ってみましたが、ロードオーダー入れ替えるだけでもOKです。単にHead Parts名を上記のNode名と合わせたいだけなので。
これで終了です。が、せっかくだからもう1パターンの直し方も書いときます。
パッチを作らずNode名を変更する
LOOTの並べ順変えたくないけどパッチもヤダ!という場合。
Seniors Wear VanillaのFaceGenDataのNode名と番号をDecent Womenに合わせます。
Decent WomenのFaceGenDataと同じ名前、番号になりました。切り貼りしてないのでSanitizeしなくて大丈夫です。
ゲーム内で確認。どちらの場合も同じです。
形状はバニラなのですが、Decent WomenのFaceTintが入っている為、化粧が適用されてます。化粧もバニラに戻したい場合は、ルーズフォルダの000135EB.ddsを捨てればOK。
今回はBBAばっかりで楽しくないですぬ・・・楽しくないついでにもう1個。
(おまけ)Seniors Wear Vanillaの手袋修正
お年寄り用グローブのテクスチャ指定に変な所があって、おばば様の手が化けてしまいます。左が修正前、右が修正後。
グローブのArmor Addonで体のテクスチャが指定されてるのが原因です。装備で指定する必要が無いので削除すれば直ります。
以上、実例おしまいです。