Dynamic Animation Replacer

Modの紹介

アニメーションを状況に応じて切り替えることができます。

Dynamic Animation Replacerはアニメーションを状況に応じて切り替えることができます。

Feliskyさんの作品です。

新たに出来るようになること

これまで、アニメーションの新規追加はFNIS、プレイヤーの差別化はFNIS PCEA2がありました。

キャラクターごとの差別化

キャラクター(Actor)ごとにアニメーションをかえられます。FNISは男女別、FNIS PCEA2はプレイヤーとその他でしか変えることができませんでした。

対応アニメーションが増える

ほとんどのアニメーションを切り替えられるようです。FNIS PCEA2は座りポーズなど一部のアニメーションに未対応でした。

状況に応じて動的に切り替えられる

条件を設定することで、その場の状況に応じたアニメーション使えるようになります。

似たようなことはFNISでも出来なくはないのですが、MCMで手動で設定したり、Papyrusスクリプトを書く必要がありました。

FNIS PCEA2との違い

FNIS PCEA2はPapyrusスクリプトで動いているので、遅延がどうしても起こります。Dynamic Animation ReplacerはSKSEのDLLで動いているので高速です。

FNIS PCEA2はMCMがあって、自分でアニメーションを選べました。Dynamic Animation ReplacerにMCMはありません。Dynamic Animation Replacerのいいところは、条件の設定の自由度が高くて応用できることです。また、Dynamic Animation Replacerだけでは無理な条件も、他のModと連携させることでほとんどは実現できます。

FNIS PCEA2と併用もできますが、Dynamic Animation Replacerに移行した方がいいように思います。これから検証する予定ですが、The Ultimate Dodge ModのようにFNIS PCEA2と共存させるのが難しいModも、Dynamic Animation Replacerなら簡単に共存させられるかもしれません。

座りポーズを変えてみる

キャラクターを指定して座りポーズを変えてみます。あらかじめPretty Sit Idles SEをインストールしておきます。

プレイヤー(女性)の場合は、以下の場所にアニメーションファイルを置きます。

meshes\actors\character\animations\DynamicAnimationReplacer\Skyrim.esm\00000007\female

カスタムフォロワーのラビの場合は、以下の場所に置きます。

meshes\actors\character\animations\DynamicAnimationReplacer\Rabi Follower.esp\00000D69\female

左がラビで、右がバニラの子供です。

武器のアニメーションを変えてみる

Immersive Weaponsで追加される太刀を変えてみます。あらかじめ2H katana attack animations SSEをインストールしておきます。

まず、太刀を指定したいので、後々のことを考えて、武器にキーワードを持たせることにします。

SSEEditでImmersive Weapons.espだけを選択してESPFEのパッチを作ります。

キーワードとしてWeapTypeKatanaを作りました。フォームIDは0x800です。

太刀をImmersive Weapons.espのWeaponからoverrideで持ってきて、それぞれにWeapTypeKatanaを追加します。

以下の場所にアニメーションファイルと_conditions.txtを置きます。最後の1という数字は優先順位です。数字が大きいほど優先されるようです。

meshes\actors\character\animations\DynamicAnimationReplacer\_CustomConditions\1

_conditions.txtは条件を書いたファイルです。メモ帳でもなんでもいいので、自分で作ります。

_conditions.txt (txt)

IsEquippedRightHasKeyword("MyPatch - Immersive Weapons.esp" | 0x00000800)

これの凄いところは、すべてのキャラクターに適用されるということです。

ランダムに変えてみる

座りポーズをランダムに変えてみます。

  • 現在雇用中のフォロワー
  • 18種類の中から均等に選ぶ

Dynamic Animation Replacerの条件に使える関数にRandomというのがあります。これで出来ないか考えてみましたが、このRandom関数だけでなんとかするのは難しそうなので、別途Modを用意することにします。

CKでMyRandom.espというModを作ります。名前はMyRandom.espとします。Questを1つとグローバル変数を1つ用意します。Questに紐づけるスクリプトは以下の通りです。

ランダムに変化するグローバル変数 (papyrus)

Scriptname aaaQuestScript Extends Quest

GlobalVariable Property aaaRandom Auto


Event OnInit()
    RegisterForSingleUpdate(10.0)
EndEvent


Event OnUpdate()
    aaaRandom.SetValueInt( Utility.RandomInt(1, 18) )
    RegisterForSingleUpdate(10.0)
EndEvent

10秒に1回、1から18の乱数をグローバル変数に設定するというものです。

Dynamic Animation ReplacerのValueEqualToを使い、18個のフォルダを用意します。

meshes\actors\character\animations\DynamicAnimationReplacer\_CustomConditions\1001
meshes\actors\character\animations\DynamicAnimationReplacer\_CustomConditions\1002
meshes\actors\character\animations\DynamicAnimationReplacer\_CustomConditions\1003
....
meshes\actors\character\animations\DynamicAnimationReplacer\_CustomConditions\1018

各フォルダにはPretty Sit Idles SEのアニメーションファイルを入れておきます。また、条件を記述した_conditions.txtを入れます。

ランダムにアニメーションを選ぶ (txt)

IsInFaction("Skyrim.esm" | 0x0005C84E) AND
ValueEqualTo("MyRandom.esp" | 0x00000800, 1)

IsInFactionで指定しているFactionはCurrentFollowerFactionです。このFactionに属している、つまり現在雇用中のフォロワーとなります。ValueEqualToの方はグローバル変数の値が1であるなら、という意味です。フォルダの1001に入れるのは1に、1002に入れるのは2に、1018に入れるのは18にします。

注意する点がいくつかあります。

  • FNISで性別にわけている場合は、座りアニメーションはfemale(male)フォルダに入れること
  • 座りアニメーションは即座に反映されるとは限らない(おそらくSkyrim側の仕様)
  • MyRandom.espはSkyrim.esmの何も参照していないのでマスター指定は不要、ゆえにCKでのロードがとてつもなく速い(指定しても実害はない)

ころころ変わって面白いです。

ランダム選択は現状、Dynamic Animation Replacerのみだと難しく、別途Modを作る必要がありますが、それでもたいした量ではありません。色々と応用ができそうです。

条件の例

プレイヤーまたはフォロワー

プレイヤーまたはフォロワー (txt)

IsActorBase("Skyrim.esm" | 0x00000007) OR
IsInFaction("Skyrim.esm" | 0x0005C84E)

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