既存NPCの顔を改造する簡単な方法 その2 -esp作成編-
Skyrimの既存NPCの顔変更方法の続き。いわゆる美化MODの自作方法です。前回はnifのみで顔を変更する方式でしたが、今回はespを作成してキャラデータも含めて改変・改造する方法になります。
開始
はい、前回のnifのみ編から続きました。
今回はespを作っての移植を解説していきます。 対象は、前回で改造の本命と言っていたエズバーンです。
美化MODのデルフィンと並んでも違和感のないように改変していきます。 パーサーナックス関連のイベントでの態度がアレなせいで「デルフィンよりは多少マシだけど、所詮はスカイリムのブレイズ」という扱いのエズバーンですが、見た目が変われば印象も変わることはデルフィンが証明してくれたので、きっと彼にも変化があるはずです。
また、こうして記事という形にすると、使うツールが多く大変そうに見えますが、手順さえ覚えてしまえばキャラメイクを除けば十分程度で終わる作業です。 NPCの改造は、方法さえ理解してしまえば簡単にゲームの楽しみ方が増えるのでおすすめです。
キャラメイク
まずは、何はともあれ移植する顔データを作るためのキャラメイクです。 私は前回の記事と同様に元のNPCと体重と肌の色を合わせましたが、今回はespを作るのでこちらも自分の好みに設定することも出来ます。 その場合は前回と逆で、キャラメイクした時の値を控えておいて、espを作成する時点でステータスに反映させるわけですね。
結果こうなりました。
エズバーンは書記官なので、バニラと同じくweight0。 逃亡生活が長いので、伸ばした長髪とやせた頬。 精神的疲労の神経質さを出す為に目の周りに隈を追加。 そして、ロアフレンドリーにヒゲはバニラと同じものを使っています。
ここで使用している髪の名前を記録しておきしょう。 (重量、肌の色合を変更した場合はそれも必要になるので控えておきます) このエズバーンの場合は、使用している髪はKS Hairdo'sのSiameseです。 それでは前回説明したように、ECEのキャラメイク画面でF1を押してnifを出力しましょう。
もしもespを作らなかったら
ここで「前回のようにnifのみでの移植は出来ないのか?」と疑問を持った方がいるかもしれないので、その場合について書いておきます。 エズバーンのバニラの髪は前回のオーグナーと違いノードが一つしかないので、MODの髪と比べて二つもノードが足りません。
ですが逆にヒゲが二つのパーツに分かれていているので、これを削除すれば髪 + ヒゲで空きノードが三つとなり、nifのみで移植することは可能そうに見えますね。
その結果がこちら。
ヒゲがなくなってしまい、まるで別人のようではありますが、顔は問題なく移植されています。
しかし、服を着ているのでぱっと見は気がつかないかも知れませんが、首から下が大問題です。 明らかに顔と体のテクスチャが合っていません。
これはエズバーンの初期設定種族が、Elderという通常の人間とは別枠の老人種族だからです。 Skyrimでは種族を割り当てることで、老人のシワのある体を表現しているわけですね。 このElderというのは通常プレイヤーは選択できない種族なので、どんなキャラメイクをしても絶対に体のテクスチャは合いません。
なので、顔改変でこれを合致させる為には
- Elder種族をプレイアブルに変更するMODを使って、そこから顔nifを作成する
- エズバーンの種族を他の種族に変更する
のどちらかの対処が必要になります。
1は老人のままで顔変更する場合の対処法です。 今回は当然、上記でキャラメイクした顔に合わせる為に2の種族変更をします。 そして、これを行うにはespによるキャラクターデータの変更が必要になります。 だからエズバーンの場合はespを作る必要があったんですね。
Tes5Editで新規espへ髪をコピー
起動時の設定
今回、Tes5Editでマスター指定を解除するので、使用しているTes5Editが最新のv4の場合、起動時に「-AllowMasterFilesEdit -IKnowWhatImDoing」という引数をつけておくようにしてください。 デフォルトだと初心者のミス防止のために解除できないようになっています。
MOD読み込み
まずはTes5Editを起動して、使用した髪MODのみを読み込みましょう。
今回はNPC改変用に作成するespに、使用する髪のデータを複製します。 元のMODをマスター指定する方法もありますが、espをマスター指定できないCreation Kit(以下CK)とは大変相性が悪いので、間にCKでの作業を挟む場合は新しくレコードを作った方が楽かと思います。 (CKで作業したespを保存する度に勝手に指定が解除されるので、毎回忘れずにTes5Editで修正する必要が出てしまいます) 先んじて、マスターなしで単独動作するように設定してしまえば、CKで操作するのも簡単です。
髪のレコードを探す
使用した髪パーツを探す場合、Form IDが分からない場合は、Editor IDで検索する方法と、名前順にソートして目視で探す方法があります。
ただしEditor IDでの検索は、Form IDでの検索と違い、かなり表示までに時間がかかり、しかも部分一致検索ではないので名前が正確でないとヒットしないので、正直使いづらいです。 例えば今回の髪の場合は「Siamese」と入力しても引っかかりません。 「0Siamese」や「0Sia」と正確な名前を前方一致で入力する必要があります。 なので髪のForm IDが分からない場合は、名前順にソートしてから目視で探した方が早いかもしれません。
まずは髪のメインとなるパーツを探しましょう。 KS Hairdo'sの命名規則の場合、HIがついていない方の「0Siamese」が髪のメインパーツとなります。
補足・Skyrimの髪の構造
先程、「髪のメインパーツ」と仮称しましたが、髪に限らずキャラデータに設定される顔のパーツは、目や肌などそれぞれ一種に対して一つであり、それに二つ目以降の部品がある場合はExtra Partsという設定で紐付けられる構造になっています。
なので、このメインの髪のExtra Parts設定を見れば、コピーする時に必要になるパーツが分かるわけです。
文字だけだと分かりづらそうなので、KS Hairdo'sのSiameseを使って簡単な図を用意しました。 青い枠がそれぞれの髪のパーツで、メインとなる0SiameseのExtra Partsの設定から、他の二つがリンクされている状態です。
髪以外の顔のパーツも同様で、Extra Partsが設定されているものがあります。 逆にヒゲのないキャラには「Facial Hair」が「none」と設定されていたりもします。 このようにしてキャラクターによってノードの数が変化するわけです。
髪をコピーする
使用した髪が見つかったら、そのレコードを新しいespへとコピーします。 今回のメインの髪の設定を見ると、Extra Partsが二つあるので、合計三つのパーツをコピーする必要があります。
またレコードをコピーすることで、Tes5Editによって自動的に元の髪MODがマスター指定されますが、正常な動作なのでそのまま続けて下さい。
この時に、先に説明したように「Copy as override into」ではなく、「Copy as new recored into」で行います。
「Copy as override into」は元のデータを上書きし、一部改変するespを作る時に使い、MOD競合時のパッチ作成で頻繁に利用します。 これで作成したレコードの設定を変更し、その優先度が元のespより高い場合、コピー元のアイテムの設定がゲーム上で上書き変更されます。
逆に「Copy as new recored into」は元のデータを引き継ぎつつ別のアイテムになります。 これでコピーしたアイテムは、ゲーム上で元のデータに干渉せずに同時に存在することが出来ます。
新しいレコードの名前は、ユニークで自分が分かりやすければ良いので、今回は元の髪の名前の後に「_Esbern」とつけることにしました。
そのまま次のウィンドウが自動で開くので、手順通りに進めていきます。
後は新規espを作成にチェックして、espの名前を入力すれば一つ目の髪パーツのコピー終了です。 今回は「Blades_Male_Replacer」というeps名しました。
残りのパーツも同様の手順で、作成したespへとコピーしていきます。
今回の場合三つ目のパーツの「0_HAIRLINE_Male_Human_CurlyScalp」は共有パーツのために命名規則が違い、リストで横に並んでいません。 この場合もメインの髪さえ分かっていれば、Extra PartsのIDを左上の入力欄にコピペすれば検索できるので活用しましょう。
Extra PartsのID変更
全てのパーツをコピーし終わったら、必ずメインの髪に設定されているExtra PartsのIDを、新しく作ったespの髪のIDに変更します。 これをしないでマスター指定を解除すると、存在しない参照が出来てしまい問題が起こります。
コピーしたものはIDの先頭の二文字はロードオーダーを表しているとので、それを目安に設定しましょう。 例の場合では、ロードオーダーは「00」がSkyrim.esm、「01」がUpdate.esm、「02」がKS Hari's.esp、そして「03」が自作したespとなります。 つまり、IDの先頭の二文字が「03」になっているのがコピーしたパーツです。
そして、「02」から始まる参照が全てなくなったのを確認したら、KS Hairdo's.espへのマスター指定を解除します。 (ロードオーダー「00」のSkyrim.esmは、全ての環境で必ず存在するものなので、解除する必要はありません)
マスター指定の解除
最初に書いたように、ちゃんとTes5Editの起動時に「-IKnowWhatImDoing -AllowMasterFilesEdit」と引数をつけていれば、項目の右側空欄を右クリックするとマスター指定を解除する為の「Remove」の選択肢が出ます。
これで、髪のデータのみが入った単独espの完成です。 次はこれに合わせてエズバーンのキャラクターデータを改変します。 改変作業はTes5Editで出来るのですが、最終的にCKから顔のnifを出力する必要があるので、以降の作業はCKで行います。 (もちろんTes5Editでやってしまって、最後にCKから顔データだけ出力しても構いません)
Creation Kitでの設定と顔出力
ファイル読み込み
まずはCKで先程作成したespを読み込みます。
メインウィンドウ上の並んだアイコンの一番左、フォルダアイコンをクリックすると読み込み用のウィンドウが表示されるので、そこで作成したespを選択します。
きちんとマスター指定を解除できていれば、ウィンドウ右のParent Mastersの枠にはSkyrim.esmのみが表示されるはずです。 作成したespを編集するので、Set as Active FileでStatusをActive Fileにすることを忘れないようにしましょう。 CKはTes5Editと違い、こうしてActiveフラグを立てた一つのファイルだけが編集対象になります。
種族変更
続いて、Object Window左のリストでActorをクリックしてから、左上のFilterでエズバーンのキャラクターデータを検索します。 この時、Filterに入力する値は、Base IDの「00013358」と英語名の「Esbern」のどちらでも大丈夫です。大文字、小文字も問われません。 結果が無事に表示されたら、エズバーンの名前をダブルクリックすることでActor編集ウィンドウが開きます。
最初に、TraitsタブでRaceを人間種族のレースに変更します。 エズバーンは元が老人種族だけあって若い頃の種族が分からず、ブレイズなのでインペリアルにしました。 (オブリビオンでシロディール皇帝の親衛隊のような登場をした影響で、ブレイズ=インペリアルというイメージがあり、デルフィンも最近になって衣装改変をするまで種族がブレトンだと知りませんでした) もちろん、もし顔作成時のキャラメイクをアルゴニアンやカジートで行っている場合は、ここもその種族に合わせる必要があるでしょう。
また、キャラメイク時に重量の変更をした場合は、Raceの二段下にある、Weightの値を作成したキャラクターに合わせて下さい。 種族変更も、体重変更も必要ない場合は、このタブでの処理を飛ばしてください。
この時、最終的にはnifを移植するので関係ないので別物になるのですが、もし気になるなら、下段中央のPreviewの右横のチェックボックスを押すことで、上の画像と同じように顔や体のプレビューが表示されます。
髪の設定変更
続いて、髪の変更をします。
Character Gen Partsタブに移動し、画像のようにHairをクリック、下のメニューから新しいespに複製して自分で名前をつけた髪を指定します。 これによって、今回の場合なら髪のノードが一つから三つに増えて、Nif Mergeを使って全てのパーツを移植することができるようになります。
続いて、同じくCharacter Gen Partsタブで肌の色の設定を確認します。 キャラメイク時に元の肌の色とは違う色に設定した場合は、その色に合うように変更してください。 また、最初に種族変更を行っている場合は、自動で変更される場合があるので必ず確認しておきましょう。
以上の行程でデータに不備がないことが確認できたら、Actorウィンドウの左下のOKを押して完了です。 メインウィンドウ左上二番目のフロッピーアイコンを押して、変更をespへ保存しましょう。
CKから顔データの出力
最後にCKから移植元となる顔データを出力します。 これが必要になるのは髪の設定を変更したので、bsaに含まれている顔データとはノードの数が異なっているからです。 こうしてCKから再出力するので、前回のようにBSA Browserを使ってバニラの顔nifを解凍する必要がなかったわけです。
Object Windowの表示は最初に検索した時のままでしょうから、そのままキャラクターデータを一度クリックして選択肢、Ctrl + F4でFaceGenデータ(顔nifと化粧テクスチャのセット)を出力します。 しばらく処理に時間がかかり、ウィンドウが出てDoneと表示されれば完了です。
この時に、顔のnifだけでなく、バニラの低解像度のテクスチャがCKから出力されるので、ECEからの高解像度なテクスチャデータに置き換えておきましょう。
Nif Mergeで顔移植
CKから出力されたnifを確認すると、種族変更の影響を受けたバニラは違う新しい顔が生成されているのが分かります。 ここで重要なのは髪を変更したことで、ノードの数が作成した顔と一致していることです。
後は、前回の記事で解説したのと同じようにNif Mergeで顔を移植するだけです。
ノードの数も一致しているので、espなしの場合と違いどのパーツを移植するか悩む必要もありません。 「Merge Child Nodes」と「Match by Vertex」を選択すれば、手動で設定するべきは髪のみになるので、例と同じ命名規則なら「_Esbern」の有無だけが違う同じ名前の髪パーツを一致させるだけ済みます。
移植後のnifは、前回と同じく顔のBSShaderTextureSetのテクスチャパスだけはECE出力時の設定が引き継がれているので、正しいパスに設定し直します。
Data\SKSE\Plugins\CharGen\Prisoner.dds ↓ Actors\Character\FaceGenData\FaceTint\Skyrim.esm\00013358.dds
これで顔が完成しました。
完成
後は、espを有効化してゲームを起動するだけです。
ちゃんとヒゲもバニラのままに移植されて、どこからどう見てもエズバーンです。 種族を修正したので、体のテクスチャも問題なく表示されています。
会話シーンのイベントも問題なく進行できたので、そのままリバーウッドへと向かい……
ブレイズの生き残り二人を再会させて無事、目標達成です。
長かった……顔移植の作業は一回目で慣れたので凄く早かったんですが、ブログ記事を書くのがやっぱり長かったですね。 今回は「人に説明する」ということの難しさを実感しました。 プログラムならコード張って終わりでも、読める相手には伝わるんですが、こういうGUIツールとなるとそうも行かないので、適切なスクショがないと何も伝わりませんからね。
一応、このシリーズは後もう一つ予定してます。予定は未定ですが。
余談
今回の記事を書いている途中に調べるまで、Form IDとBase IDの呼称をごっちゃにしてました。 Base IDとRef IDを合わせたものがForm IDなんですね。
Base IDs and reference IDs (BaseIDs/RefIDs) are two types of Form ID that are used to identify the various NPCs, creatures, and items within the game.
// Google翻訳 ベースIDと参照ID(BaseID / RefID)は、ゲーム内のさまざまなNPC、クリーチャー、アイテムを識別するために使用される2種類のフォームIDです。 https://en.uesp.net/wiki/Skyrim:Form_ID#:~:text=4%20Notes-,Base%20and%20Reference%20IDs,an%20object%20in%20the%20game.