Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】Advanced Animation Framework (AAF)へのアニメーション(ポーズ)追加実験

スポンサーリンク


Lexington
色々模索状態なので、わかる範囲でのアニメーション追加手段をまとめてます。怪しいことしてるかも知れないので(嘘もあるかも!)、その前提でお願いします。アニメーションやポーズ自体の作成は扱いません。
より詳しい内容は、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を確認。全部作ると掲載量が半端無いので一部だけ。
プラグインのIDLEアニメーション

確認した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"/>

微妙に紛らわしいですが、positionnodeのidとは別にpositionIDというattributeもあるので注意。

アニメーションの動作確認

ゲームを起動してAAFを動かします。うまく設定できてれば、WizardにTHPosesが表示されます。
AAFへのアニメーション追加

再生モードでは、カーソル上下でポーズを逐次変更できます。同一MODのポーズに限らず、選択可能な全ポーズが対象です。なかなか便利。
AAFによるアニメーション再生

アニメーション中の装備を変更

アニメーション再生中のみ、装備を変更します。エロ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を変更。animationnodeに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

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com