Skyrimをアニメ化してみた

環境構築

Skyrimをアニメ化してみたときのまとめ。

アニメ化とは

顔の造形がしいて言えばリアル調のゲームをアニメ風にかえることを指しています。アニメ化に関してはFallout 4のAnimeRace Nanakochanが有名かと思います。

今回は、手始めにプレイヤーと、既存のフォロワーをアニメ化してみました。

NPCのアニメ化が難しい理由

Skyrimの場合、顔のデータはFaceGenDataと呼ばれる、言ってみればキャッシュのようなものが必要です。ないと顔が表示されません。このFaceGenDataを作るのがかなり面倒な作業になります。

一方でFallout 4の場合、FaceGenData自体はあるのですが、CKやFO4Editで顔を変更するとFaceGenDataが使われなくなり、ゲーム内で動的に処理されるようになっているようです。つまり、FO4Editでスクリプトを使って一括処理したあと、そのまますぐにゲームを開始できるので、とても楽だということです。

使ったもの

Beofuledさんという方がアニメ風のスタンドアロンフォロワーを数多く作成されています。それらを使いました。それ以外は特に使っていません。

既に環境がある程度整っているという前提です。

  • XP32 Maximum Skeleton Special Extended(スケルトンの拡張)
  • Caliente’s Beautiful Bodies Enhancer -CBBE-(体型)
  • CBBE 3BA(CBBEの派生)
  • Faster HDT-SMP(揺れの実装)

これに加えて、CBBE用高品質スキンテクスチャを入れています。

とりあえず始める方法

Modをダウンロードしたら、Modマネージャでインストールして、ゲームを起動したらshowracemenuで種族を変更、これだけです。

BeofuledさんModは大抵、プレイヤー用のプリセットが用意されており、フォロワーがどこかに配置されています。場所はModによって異なります。

調整する

必要に応じて調整を行います。

ESPFE化

ほとんどがESP形式で、Form IDが4桁になっています。ESPFEにするには、以下の手順で作業します。

  • NPCのForm IDを記録しておきます。
  • SSEEditでForm IDを振りなおします。800からにするのが無難です。
  • Record Header – Record FlagsでESLにチェックを入れます。プラグイン名.espをクリックして右ペインの一番上、Record Flagsを右クリックしてEditです。
  • Check for Errorsを実施して問題がないか確認しておくと安心です。
  • NPCのForm IDがどう変化したのかまとめます。
  • アセットに含まれるFaceGenDataのメッシュとテクスチャをリネームします。
  • FaceGenDataのメッシュの中にFaceTintのテクスチャ指定があるのでリネームします。

フォロワーの配置場所

フォロワーの配置場所はまちまちですが、LeafRyz.espのReisalin Stoutがドラゴンズリーチにいますので、CellとData – Position/Rotationを合わせると同じ場所に集められます。

素体のメッシュ

素体のメッシュはArmor Addonで指定されていますが、これは全フォロワーで共通化しました。CBBE 3BAなら問題ないようです。

既存のフォロワーをアニメ化する準備

動作確認を行う

基本中の基本です。Modが問題なく動作することを確認します。

必要なツールを用意する

以下のツールが絶対に必要です。

  • SSEEdit
  • NifScope

データ構造を理解する

Actorを構成するレコードを理解します。

  • Race
    • NPC (ActorBase)
      • Armor
        • Armor Addon
          • Texture Set
      • Voice Type

既存のフォロワーをアニメ化する – ラビ編

例として、Rabi Follower_Japanese Custom VoiceのRabiをLeafMar with followerの宝鐘マリンにしてみます。

方針

Rabiはフルボイスで会話が用意されています。LeafMarの方は見た目だけです。よってLeafMarの見た目をRabiに移植します。この方が格段に楽だからです。

Rabi側のレコードを編集する際、レコードそのものを置き換えることはできるだけ避けます。動作不良や互換性の低下に繋がるからです。

  • RabiのForm IDは変更しない
  • Rabiの種族は変更しない
  • Rabiのボイスタイプは変更しない

レコードの移植作業

SSEEditで両者のプラグインを読み込みます。

まずパッチを作ります。そうすればいつでも簡単に元に戻せるからです。

RabiのRaceである aaaRabiRace を右クリックしてCopy as override intoを選択、新規プラグインを作成します。名前は MyPatch – Rabi Follower – LeafMar.esp としました。ESL形式で大丈夫です。以降はこのプラグインを編集していきます。

MyPatch – Rabi Follower – LeafMar.espを右クリックしてAdd Mastersを選択、LeafMar.espを指定します。

MyPatch – Rabi Follower – LeafMar.espの aaaRabiRace とLeafMar.espの 11MarRace を比較します。aaaRabiRaceをクリックしたら、11MarRace をCtrlを押しながらクリック、右クリックしてCompare Selectedです。すると右ペインに並びます。

以下をコピーしていきます。ドラッグ&ドロップです。

  • Data – Female Height
  • ANAM – Female Skeletal Model
  • Head Data(ツリーをまるごと)

これが容姿になります。身長、使用するスケルトン、顔パーツと顔テクスチャになります。

Rabi Follower.espのArmor Addonの3をすべて、パッチにCopy as override intoでコピーします。

NAM1 – Female Skin textureをLeafMar.espのものに置き換えます。

変更前変更後
aaaRabiSkinBodyFemale11SkinBodyFemale_Mar
aaaRabiSkinHandFemale11SkinHandFemale_Mar
aaaRabiSkinBodyFemale11SkinBodyFemale_Mar

使用するボディテクスチャになります。

Rabi Follower.espのNPCをパッチにCopy as override intoでコピーします。

NAM6 Heightが0.9なので1.0にします。

FaceGenDataの移植作業

LeafMarに含まれるFaceGenDataをRabiに上書きコピーします。

LeafMar側は 00001DA0.NIF を選びました。設置されているフォロワーのデータです。プレイヤーのプリセット分もありますが、多分どちらでも一緒です。

コピー先はRabiのパス、名前にします。その際、上書きするまえにバックアップをとっておきます。MO2ならMod化して上書きされるように配置するのがオススメです。

コピーしたメッシュをNifScopeで開き、顔全体のノードを探します。大抵はFemaleHeadという名前がついています。今回のケースでは 11FemaleHeadMar でした。

このノードを展開していき、BSShaderTextureSetを探します。上から7番目がFaceTintの指定になりますので、バックアップしておいたRabiの値をここに上書きします。

補足

身長を決めるHeightですが、複雑に重なり合って決定されます。

  • RaceのHeight
  • ActorBase (NPC)のHeight
  • スケルトンのデータ
  • ゲーム内での動的変更

どれか1箇所のみで指定することをオススメします。私はRaceだけにしました。

幸い、LeafMar付属のスケルトンは身長はいじっていないようです。ですので、すべてを標準の1.0にすると、バニラのNPCと比較して顔がかなり大きくなります。

既存のフォロワーをアニメ化する – ジェイ・ザルゴ編

バニラフォロワーのジェイ・ザルゴをLeafKorの戌神ころねにしてみます。

方針

種族と性別をかえてみます。

  • ジェイ・ザルゴのForm IDは変更しない
  • ジェイ・ザルゴの種族をカジートから 11KorRace に変更する
  • ジェイ・ザルゴの性別を男から女に変更する

レコードの移植作業

Rabiの時と同じように作業します。

Skyrim.esmのNPCから Jzargo を探し出してCopy as override intoでコピー、名前はMyPatch – Jzargo – LeafKor.espとしました。

MyPatch – Jzargo – LeafKor.espの Jzargo とLeafKor.espの 11KorFollower を比較します。

以下をコピーしていきます。ドラッグ&ドロップです。

  • ACBS – Configuration – Flags – Female
  • RNAM – Race
  • NAM7 – Weight
  • FTST – Head Texture
  • QNAM – Texture lighting
  • NAM9 – Face morph

それから、以下は空にして 11KorFollower 側と合わせます。

  • Head Parts
  • Face Parts
  • Tint Layers

しっぽですが、カジートは種族としてしっぽが設定されているようです。一方で 11KorRace にはありません。装備としてしっぽが用意されているので、それを装備させることにしました。

FaceGenDataの移植作業

Rabiの時とまったく同じです。

声をなんとかする

ここまでの作業で見た目だけは戌神ころねになります。ですが、声は元のままです。

Skyrim.esmのVoiceTypeの MaleKhajiit をCopy as new record intoで複製コピーします。名前を MaleKhajiitKorone としました。

MyPatch – Jzargo – LeafKor.espの Jzargo のVoiceTypeを変更します。

カジートの声を取り出してボイスチェンジャーで変更します。詳しい手順については声を作ってみた・ボイスチェンジャー編で解説しています。

作成した音声ファイルは以下のパスに配置します。

sound\voice\skyrim.esm\malekhajiitkorone

一部のセリフは条件を調整しないと話しません。

Skyrim.esmのVoiceTypeの MaleKhajiit をクリックして右ペインのReferenced Byを選択、ソートしてINFOをCopy as override intoでコピーします。

条件式を調整していきます。条件式の書き方を覚えないとなかなか難しいです。

変更前変更後
Subject.GetIsVoiceType(MaleKhajiit) = 1Subject.GetIsVoiceType(MaleKhajiit) = 1 OR
Subject.GetIsVoiceType(MaleKhajiitKorone) = 1
Subject.GetIsVoiceType(MaleKhajiit) = 1 OR
Subject.GetIsVoiceType(FemaleKhajiit) = 1
Subject.GetIsVoiceType(MaleKhajiit) = 1 OR
Subject.GetIsVoiceType(MaleKhajiitKorone) = 1 OR
Subject.GetIsVoiceType(FemaleKhajiit) = 1
Subject.GetIsVoiceType(MaleKhajiit) = 1 AND
hogehoge
Subject.GetIsVoiceType(MaleKhajiit) = 1 OR
Subject.GetIsVoiceType(MaleKhajiitKorone) = 1 AND
hogehoge
Subject.GetIsVoiceType(MaleKhajiit) = 0 AND
hogehoge
Subject.GetIsVoiceType(MaleKhajiit) = 0 AND
Subject.GetIsVoiceType(MaleKhajiitKorone) = 0 AND
hogehoge

既存のフォロワーをアニメ化する – セラーナ編

ジェイ・ザルゴと同じです。(以下略)

屋外ではフードを被りますが、これが合わないため、サングラスに変更しました。

余談ですが、私の環境ではセラーナが棺に入っておらず、話しかけてもクエストが進行しないため、アニメ化による不具合と勘違いしたのですが、正しくは棺をアクティベートでクエストが進行します。

不具合

頭が大きい

Scaleを下げて低身長にしているようです。デフォルトの1.0だと、バニラのNPCと並んだ時に、明らかに頭が大きいのです。大体0.7~0.9がいいようです。

家具を使うと埋まる

家具を使用したときに埋まってしまうのはHeels Fixで解決できるようです。

Improved Camera SE

Improved Camera SEでカメラが低すぎるのは、設定を調整するしかないようです。

プロファイルを作って切り替えられるので、うまく活用します。

ヘッドトラッキング

ヘッドトラッキングで目線が相手の顔まで上がらないのは、修正するModを見つけられませんでした。

Tiny Headtrackにて自前で修正しました。

頭装備

埋まったりします。丁寧になおすしかないようです。

Outfit Studioでスライダーを用意してゲーム内で適用するのがオススメです。

首に隙間ができる

ActorのWeightの初期値はNPCレコードのWeightで設定されています。0.0で0%、1.0で100%です。大抵は0.0になっているようです。ヘッドメッシュはこの値に合わせて作られているようです。

ゲーム内でのWeightを現在値とします。ニューゲーム直後は初期値がそのまま現在値になっています。現在値を変更すると首に隙間ができます。拙作のActor Weight Managerを使うと、隙間を作らずにWeightを変更できます。

アニメ化するなどしてActorのデータをゲームの途中で変更した場合、初期値が合わなくなることがあるため、正しい初期値を手動で設定する必要があります。

タイトルとURLをコピーしました