Dynamic Animation Replacerのすすめ
プレイヤーやNPC個々にアニメーションの差別化を可能にするDynamic Animation Replacer(DAR) v2の紹介です。
単純にプレイヤーやNPCのアニメーションを差別化するだけでなく、性別・種族・装備・ステータスの状態など条件に応じた差別化も行えます。
このMODの特徴はスクリプトを使用せずSKSEプラグインで動作するため動作が軽く遅延もないため非常に安定します。
自作フォロワーMODを作成している人であれば個々にキャラクターのアイドルモーションや攻撃モーションなど差別化も出来るのでキャラクターに個性を演出する事が出来ます。
■インストール方法
現在の最新バージョンはGreenTeaという名前のMODに統合されています。
下記のページからGreenTea for Skyrim LEをDLします。
https://www.patreon.com/posts/greentea-v1-2-5-27747981
インストールしただけでは何も起きません。
ユーザーが作成したプリセットを導入するか自分でアニメーションを割り当てる必要があります。
自分でアニメーションを割り当てる場合は二種類の方法があります。
Expand
【ActorBaseによる割当て方法】
アクターごとに異なるアニメーションを割り当てます。
以下のフォルダにアニメーションファイルを配置してください。
既にFNISやNemesisでプレイヤーにアニメーションを割り当てている場合も同様に再配置してください。
●プレイヤー 三人称アニメーション
meshes/actors/character/animations/DynamicAnimationReplacer/Skyrim.esm/00000007/(アニメーションファイル)
●プレイヤー 一人称時アニメーション
meshes/actors/character/_1stperson/animations/DynamicAnimationReplacer/Skyrim.esm/00000007/(アニメーションファイル)
●NPC
meshes/actors/(対象の種族)/animations/DynamicAnimationReplacer/(esp名)/(BaseID)/(アニメーションファイル)
例:プレイヤー限定のアニメーション
●FNIS
meshes/actors/character/animations/1hm_attackpowerleft.hkx
↓
●DAR
meshes/actors/character/animations/DynamicAnimationReplacer/Skyrim.esm/00000007/1hm_attackpowerleft.hkx
例:セラーナ限定のアニメーション
meshes/actors/character/animations/female/mt_idle.hkx
↓
meshes/actors/character/animations/DynamicAnimationReplacer/Dawnguard.esm/00002B6C/female/mt_idle.hkx
BaseIDはプレイヤーの場合「00000007」になり、セラーナの場合は「00002B6C」になります。
性別でアニメーションを分けたい場合は「BaseID」フォルダ内に「male」または「female」のフォルダを作成しその中にアニメーションファイルを入れます。
例:女性プレイヤー限定
meshes/actors/character/animations/DynamicAnimationReplacer/Skyrim.esm/00000007/female/1hm_attackpowerleft.hkx
ただしリディアのように女性でありながら男性モーションを使用する「Opposite Gender Anim」オプションが有効になっているアクターは「male」フォルダへ入れる必要があります。
NPCのBaseIDの確認はTes5EditからFormIDをコピーしてください。
【条件による割当て方法】
カスタム条件を指定してアニメーションを割り当てます。
例えばプレイヤー/NPCのステータス・装備・戦闘スタイル・場所などに応じてアニメーションを変更することが出来ます。
以下のフォルダにアニメーションファイルと「_conditions.txt」を配置してください。
meshes/actors/(対象の種族)/animations/DynamicAnimationReplacer/_CustomConditions/(優先度)/(アニメーションファイルと_conditions.txt)
優先度フォルダは-2147483648~2147483647の範囲で0以外の数値で指定します。
数字が大きいほど優先度が高くなります。
ちなみにNexusで配布されているプリセットの大半が1000番代の値で指定されているのでそれ以下にならなければ問題は起きないはずです。
ActorBaseによる割り当ては優先度0として扱われるようです。
条件の設定にはDAR専用の関数があります。
またAND、OR、NOTによる条件分岐も可能でありより限定的にすることが出来ます。
関数と聞くと難しく思えるかもしれませんが、IfやForなどの制御文はありませんのでマクロを組めるくらいの知識があれば複雑なアニメーション制御が可能です。
関数リストはこちらに記載されています。
https://www.nexusmods.com/skyrim/mods/101371/?tab=forum&topic_id=8433408
■Conditionファイルの作り方
上記で作成した「_conditions.txt」を開き下記の形式に関数を当てはめて条件を設定します。
(NOT) Function name("esp name" | formID) (AND or OR)
関数リストの引数はespの指定が端折られているため明示的に設定する必要があります。
例: IsEquippedRight(Form item)
↓
IsEquippedRight("skyrim.esm" | 0x0001397E)
DARはMODで追加したespにも対応しています。
esp名は""で括った後、" | "で仕切り、FormIDを16進数で表記するために0xをつけます。
またロードオーダーを示す先頭2桁は削除するか0に置き換えます。
例: IsEquippedRight("aaa.esp" | AA123456)
↓
IsEquippedRight("aaa.esp" | 0x00123456)
関数の先頭にNOTをつけると否定条件にできます。
例: 右手にダガーをしていない時
NOT IsEquippedRight("skyrim.esm" | 0x0001397E)
ANDとORで複数の条件を連結できます。
例: 右手と左手にダガーを装備している時、または10%の確率で適用
IsEquippedRight("skyrim.esm" | 0x0001397E) OR
Random(0.1) AND
IsEquippedLeft("skyrim.esm" | 0x0001397E) OR
Random(0.1)
引数がGlobalVariableの場合はグローバル変数のFormIDを指定するか値を直接指定します。
例:IsEquippedRightType("skyrim.esm" | 0x00123456)
または
IsEquippedRightType(3)
DARの論理演算は下記のようになります。
括弧で優先順序を指定出来ないためANDとORの複合時には注意が必要です。
例1:「AまたはB」かつ「C」である場合
↓
A OR
B AND
C
例2:「AかつB」または「C」である場合
↓
A OR
C AND
B OR
C
例2では「(A && B) || C」というようにANDを括弧で括れないので、「A || C」 AND 「B || C」と見方を変えて設定する必要があります。
●抜剣モーションを1/3の確率で適用
IsEquippedRightType(1) OR
IsEquippedLeftType(1) AND
IsWeaponDrawn() AND
Random(0.33)
●納剣モーションを1/3の確率で適用
IsEquippedRightType(1) OR
IsEquippedLeftType(1) AND
NOT IsWeaponDrawn() AND
Random(0.33)
●剣の攻撃モーションを1/3の確率で適用
IsEquippedRightType(1) OR
IsEquippedLeftType(1) AND
IsAttacking() AND
Random(0.33)
●特定の装備を着ている時、または特定のキーワードを持つ装備を着ている時に適用
IsWorn("skyrim.esm" | 0x00123456) OR
IsWornHasKeyword("skyrim.esm" | 0x00123456)
●特定のアクターを雇用中のみ適用
IsActorBase("aaa.esp" | 0x00123456) AND
IsPlayerTeammate()
●屋外で特定の天候の場合のみ適用
CurrentWeather("Skyrim.esm"|0x00123456) AND
NOT IsInInterior()
●体力が30%以下の場合のみ適用
IsActorValuePercentageLessThan(24, 0.3)
●スタミナが30%以下の場合のみ適用
IsActorValuePercentageLessThan(25, 0.3)
●マジカが30%以下の場合のみ適用
IsActorValuePercentageLessThan(26, 0.3)
※DARはアニメーションの追加・変更以外の事は出来ないので、体力に応じて移動速度を減速させるといった効果を持たせたい場合はスクリプトでの対応が必要です。現在DARに対応したQuick Menuにその機能が実装されています。
条件を設定して思い通りに動かない場合はANDとORの設定に誤りがあるので再確認してください。
それでも正しく動作しない場合は指定したFormIDが存在しない等のエラーが発生していている場合があります。
その場合は「C:/Users/アカウント名/Documents/My Games/Skyrim/SKSE/DynamicAnimationReplacer.log」を開くとエラー内容を確認できます。
●5種類のアイドルモーションからランダムに適用するには
同種のアニメーション(同ファイル名)をランダムに適用したい場合はアニメーション数に合わせてフォルダを作成する必要があります。
①5つのフォルダを作成しそれぞれに「1hm_idle.hkx」を入れ「_conditions.txt」を作成する。
②優先度の高いフォルダ順から「_conditions.txt」に確立を低く設定したRandom関数を追加する。
↓
優先度 確率 条件
5 1/5 Random(0.2)
4 1/4 Random(0.25)
3 1/3 Random(0.33)
2 1/2 Random(0.5)
1 1/1 なし
優先度の高いフォルダ順から実行されるので4つのフォルダともランダム条件にヒットしなかった場合は優先度1フォルダのアイドルモーションが再生されます。
もしバニラのアイドルモーションも抽選させたい場合は1のフォルダにも確率条件を設定してください。
●自作MODにアニメーション差別化の有効・無効機能を備えるには
①CKで自作espに適当なグローバル変数を作成して「_conditions.txt」の一行目に下記の条件を追加する。
ValueEqualTo("mymod.esp" | 0x00123456, 1)
②スクリプトから①で作成したグローバル変数を変更する。
GlobalVariable Property EnableRandomMotion Auto
EnableRandomMotion.SetValue(1) ;有効
EnableRandomMotion.SetValue(0) ;無効
これでゲーム内で有効・無効の切り替えが行えるようになります。
■アニメーションスロットの切り替え方法
V2からプレイヤー限定でアニメーションの切替えスロットを最大10個まで追加できます。
"DynamicAnimationReplacer/Player/(0から9までの数字)"のフォルダにDynamic Animation Replacerと同じようにファイルを配置します。
アニメーションを切り替えるためには以下のコンソールコマンドを入力します。
●指定スロットを有効にする
AddPA [SlotNumber]
●指定スロットを無効にする
RemovePA [SlotNumber]
●全てのスロットを無効にして指定のスロットを有効にする
SetPA [SlotNumber]
●現在有効になっているスロットを表示する
GetPA [SlotNumber]
●指定スロットは複数のスロットを指定できます。
例:0123のスロットを同時に有効
↓
AddPA 0123
例:0123のスロットを同時に無効
RemovePA 0123
※複数のスロットに同名のアニメーションが含まれていた場合はスロット番号の数値の高いアニメーションが優先されます。
■Dynamic Animation Replacerを使用する上での注意点
DARのアニメーションの割り当ては 「_conditions.txt」 にesp名とForm IDを直接指定して参照しています。
そのためユーザーが対象のesp名を変更したりマージをしてFormIDが変わってしまった場合は動作しなくなるので注意が必要です。
■最後に
DARは条件を上手に設定する事で無限の可能性を秘めたアニメーション制御MODです。
既にDARが必須になっているMODもあるのでまだFNISでモーションの差別化をしている人はこの機会にDARで再構成してみてください。
【DARとFNIS/Nemesisの違い】
Dynamic Animation Replacerはプレイヤー・NPC個別にアニメーションを差別化できます。
DARを導入する事でFNIS+PCEA2を導入しなくてもプレイヤー・NPCのアニメーションを差別化することができ、またSKSEプラグインのみで動作するため遅延もなくespによる競合問題も起こません。
FNIS及びNemesisはSkyrimのアニメーション枠を拡張するMODです。
アニメーションを追加するMOD(ポーズMODやSexlab等)を導入する場合はFNISまたはNemesisの導入も必要になります。
またXPMSEスケルトンを導入している場合も腕のアニメーションに起因した問題が出るためSKELETON Arm Fixを有効にするためにもFNISまたはNemesisの導入が必要になります。
プレイヤー・NPC個別にアニメーションの差別化のみ行いたい場合はDARのみで、XPMSEスケルトンやアニメーション追加MODも使用したい場合はDAR+FNISまたはNemesisのどちらかでOKです。