色々模索状態なので、わかる範囲でのアニメーション追加手段をまとめてます。怪しいことしてるかも知れないので(嘘もあるかも!)、その前提でお願いします。アニメーションやポーズ自体の作成は扱いません。
より詳しい内容は、AAF Wikiを参照してください。
もっと基本的なxml記述及びバニラアニメーションのAAF対応化は、以前の記事にて。
f4mod.hatenablog.com
f4mod.hatenablog.com
アニメーション用xmlファイルの基本構成
最低限、2つのxmlファイルが必須です。
- xxx_animationData.xml
- xxx_positionData.xml
命名規則を無視しても動きますが、管理上統一した方が良いと思います。xxxにはMOD名を付けるのが一般的。
animationData.xmlは、プラグインのIdle AnimationをAAFに登録します。positionData.xmlは、アニメーションの再生設定。他にも機能がありますが、大体はこんな感じ。
基本動作はこの2つだけで可能です。あとは拡張に応じてxmlファイルを追加します。
AAF Wizardのリストから一時的にアニメーション(ポーズも)を撤去したい時は、xxx_positionData.xmlだけ移動orリネームすればOK。
THPosesをAAF対応化
例として、THPosesをAAF対応化します。以前の記事でesl変換した物をベースに使います。オリジナルのespで作業する場合は、読み替えてください。
f4mod.hatenablog.com
※試した限りではeslでも正しくForm IDを取得できてます。eslロードオーダー(上位3-5桁目)を振っても正常に動作するので、恐らく問題無いと思います。
animationData.xmlを作成
まずはプラグインから、Idle AnimationのForm IDを確認。全部作ると掲載量が半端無いので一部だけ。
確認したForm IDから、THPoses_animationData.xmlを作成。これも全部載せるとキツいので、3つだけで。
<meta title="THPoses_animationData.xml" version="1.0" dataSet="animation"/> <defaults source="THPoses.esl"/> <!-- animation設定開始。idは他のxmlも含めて重複の無いように --> <animation id="THPinup11"> <!-- 適用するキャラの条件(種族や性別等)。無条件なら<actor>で括るだけ --> <actor> <!-- Idle AnimationのForm ID。FO4Editの表示そのまま --> <idle form="FE000800"/> </actor> </animation> <!-- 以下、必要なだけ同様に記述 --> <animation id="THPinup12"> <actor> <idle form="FE000801"/> </actor> </animation> <animation id="THPinup13"> <actor> <idle form="FE000802"/> </actor> </animation>
4つ目以降も同じように追加します。
positionData.xmlを作成
設定したアニメーションを再生する、THPoses_positionData.xmlを作ります。
<meta title="THPoses_positionData.xml" version="1.0" dataSet="position"/> <defaults /> <!-- このidがWizardでの表示名。再生するアニメーションのidをanimationで指定 --> <position id="THPoses Pinup11" animation="THPinup11"/> <position id="THPoses Pinup12" animation="THPinup12"/> <position id="THPoses Pinup13" animation="THPinup13"/>
微妙に紛らわしいですが、position
nodeのid
とは別にpositionID
というattributeもあるので注意。
アニメーションの動作確認
ゲームを起動してAAFを動かします。うまく設定できてれば、WizardにTHPosesが表示されます。
再生モードでは、カーソル上下でポーズを逐次変更できます。同一MODのポーズに限らず、選択可能な全ポーズが対象です。なかなか便利。
アニメーション中の装備を変更
アニメーション再生中のみ、装備を変更します。エロMODに必須の重要機能ですが、ポーズMODにも勿論使えます。
前回のpositionData.xmlのdefaults
に仕込む方法では、MOD毎(厳密にはxml毎)の装備着脱設定ができました。今回は、アニメーション単体に適用できる装備変更を試します。便利なことに、インベントリに無い装備でもOKです。
アニメーション中に使う装備を設定
引き続きTHPosesにて。アニメーション中だけマリーンアーマーヘルメットを被る設定を作ります。インベントリに無くても無理矢理被らせます。
装備変更設定であるTHPoses_equipmentSetData.xmlを作成。
<meta title="THPoses_equipmentSetData.xml" version="1.0" dataSet="equipmentSet"/> <!-- Far Harbor装備なのでDLCをソース指定 --> <defaults source="DLCCoast.esm"/> <!-- アニメーション開始時の装備設定 --> <equipmentSet id="addTHPosesApparel"> <condition> <!-- マリーンアーマーヘルメットを追加&装備 --> <addEquipment form="01009E58"/> </condition> </equipmentSet> <!-- アニメーション終了時の装備解除設定 --> <equipmentSet id="removeTHPosesApparel"> <condition> <!-- マリーンアーマーヘルメットを装備解除&削除(?) --> <removeEquipment form="01009E58"/> </condition> </equipmentSet>
Form IDの上位2桁(eslなら上位5桁)ですが、おそらく何でもOKです。この例だと
00009E58
と書いても01009E58
でも、共に正しくマリーンアーマーヘルメットを使います。source
で指定したプラグインと、下6桁(eslなら下3桁)しか読んでないかと。なのでFO4Editで見たまま入れておけば、正常動作すると思います。actionに装備変更を設定
前回のようなMOD単位(xmlファイルごと)の装備変更であれば、defaults
に装備変更を記述すれば良いです。しかし今回はアニメーション単体に適用したいので、装備変更をするaction
を使います。
THPoses_actionData.xmlを作成。
<meta title="THPoses_actionData.xml" version="1.0" dataSet="action"/> <defaults /> <action id="THPoses_activity"> <!-- アニメーション開始時と終了時の装備変更設定 --> <self startEquipmentSet="addTHPosesApparel" stopEquipmentSet="removeTHPosesApparel"> </self> </action>
まだ詳しく見れてないんですが、action設定で表情も変更できそうな感じ(
reaction
設定)。ただし指定方法がちょっと厄介かも?animationにactionを追加
『Pinup1』再生時だけ、ヘルメットを被らせることに。
THPoses_animationData.xmlに設定を追加します。
<!-- id『Pinup1』だと重複リスクがあるので『THPinup1』にしてる --> <animation id="THPinup1"> <actor> <idle form="FE000F99"/> <!-- actor node内でactionを設定。targetで何番目のactorに適用するかを指定 --> <value path="action" value="THPoses_activity" target="0"/> </actor> </animation>
装備変更の動作確認
元は何も被ってません(左)。THPosesの1番を再生すると、ポーズと同時にメット装着(右)。アニメーションを終了すれば、自動的に装備外します。
ここでちょっとトラブルが。アニメーション終了後に装備は解除されますが、インベントリに装備が残ってしまいました。削除処理の指定等、何かミスってるのかもですが、現状不明。
アニメーションのグループ化
複数のアニメーションをまとめてグループ化します。Wizardへの登録数が多い時には、削減できて便利かも。
アニメーションの再生時間を設定
グループ化したポーズを、2秒ごとに連続再生することにします。目的のポーズで対象キャラのAI止めれば、SS撮影にも多分支障無いと・・・思います( プレイヤキャラもNPC化するのでtai
効きます)。
THPoses_animationData.xmlを変更。animation
nodeにframes
またはtime
を追加します。
<meta title="THPoses_animationData.xml" version="1.0" dataSet="animation"/> <defaults source="THPoses.esl"/> <!-- framesで再生時間設定。1s=30frame換算 --> <animation id="THPinup11" frames="60"> <actor> <idle form="FE000800"/> </actor> </animation> <!-- timeで秒数設定も可 --> <animation id="THPinup12" time="2"> <actor> <idle form="FE000801"/> </actor> </animation> <animation id="THPinup13" frames="60"> <actor> <idle form="FE000802"/> </actor> </animation>
グループ化用xmlを作成
連続再生するアニメーションごとにグループ化します。THPoses_animationGroupData.xmlを作成。
スケルトンや性別等、設定の異なるアニメーションがある時は、混ぜるとエラーになると思います。
<meta title="THPoses_animationGroupData.xml" version="1.0" dataSet="animationGroup"/> <defaults /> <!-- animationData.xmlで設定したanimationを、animationGroupに纏める --> <animationGroup id="THPoses01_10" sequential="true"> <stage animation="THPinup1"/> <stage animation="THPinup2"/> <stage animation="THPinup3"/> <stage animation="THPinup4"/> <stage animation="THPinup5"/> <stage animation="THPinup6"/> <stage animation="THPinup7"/> <stage animation="THPinup8"/> <stage animation="THPinup9"/> <stage animation="THPinup10"/> </animationGroup>
10個づつ、1つのグループにまとめました。
再生順は、sequential
で設定できます。
true:並び通りに連続ループ再生
false:グループ内からランダム再生
positionからanimaionGroupを指定
positionで指定する再生対象を、アニメーション単体からグループに変更します。
THPoses_positionData.xmlを書換えます。
<meta title="THPoses_positionData.xml" version="1.0" dataSet="position"/> <defaults /> <!-- positionで、再生対象のanimationGroupを指定 --> <position id="THPoses Pinup01_10" animationGroup="THPoses01_10"/> <position id="THPoses Pinup11_20" animationGroup="THPoses11_20"/> <position id="THPoses Pinup21_30" animationGroup="THPoses21_30"/> <position id="THPoses Pinup31_40" animationGroup="THPoses31_40"/> <position id="THPoses Pinup41_46" animationGroup="THPoses41_46"/>
グループ化の動作確認
THPosesの項目が、5個だけになりました。
設定通りに各10個づつのポーズが入っており(最後は6個)、選択すると2秒づつ連続再生されます。
今回はここまで。
次回はPose Itを使った椅子用ポーズと、2人選択しての『お姫様抱っこ』ポーズを設定します。
f4mod.hatenablog.com