Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】Advanced Animation Framework(AAF)の簡単なxml記述

スポンサーリンク


パイパーダンス
AAFには、ゲーム内で設定できる項目が一切有りません。全ての設定はxmlで記述する必要があります。ちょっと大変ですが、MCMやholotapeでは実現できない程に複雑な設定を作れます。

今回は初歩的な設定のみ扱うので、更に詳しいことはAAF Wiki参照。

初歩的な使い方&AAF対応MODはこちらにて。インストール方法やDescription和訳とかは書いてないです。
f4mod.hatenablog.com

AAF用xmlの構成

必要なxmlファイルは、全てData/AAFフォルダに格納します。ゲーム起動時に、フォルダ内のxmlファイルが全てロードされます。元からあるAAF_xxx.xmlも、Userが追加したxmlも、区別無く全部です。ロード表示がいつまでも消えない時は、xml記述にエラーがあります

各xmlファイルには、id管理された設定項目が記述されてます。任意のアニメーション再生時に呼出すことで、細かな動作設定を作れます。アニメーション再生時の設定も、xmlで記述します。

例えば、『AAF_actorTypeData_human.xml』からの抜粋。Wizardがキャラの走査で『人間(HumanRace)』の識別に使う設定だと思います。上2行は、今は流してください。

<meta title="AAF_actorTypeData_human.xml" version="1.0" dataSet="actorType"/>
<defaults source="Fallout4.esm" loadPriority="-1"/>

<group id="Human">
	<actorType form="2CB72" id="ActorTypeHuman"/>
</group>

まず『Human』というidのgroupを定義しています。グループメンバーは、Fallout4.esmの2CB72(ActorTypeHumanのKeyword)を持ったNPCで、これをid『ActorTypeHuman』と定義。まんまEditor ID名です。

id『Human』で呼出せば、他のxmlファイルからでも自由にこの設定を使えます。特に宣言みたいな事は不要です。したがって、id名は原則ユニークである必要があり、被ると競合します。プラグイン構造に似てますね。


2行目のdefaults nodeで設定された項目は、ファイル内だけに対するローカル設定になります。

<defaults source="Fallout4.esm" loadPriority="-1"/>
  • このファイル内でのformは、Fallout4.esmのIDであること
  • Priority-1により、id競合したら敗者になること

こんな設定になってます。

AAF用xml設定の基本書式

アニメーション時に装備を変更するxml設定を書いてみます。AAFの仕様上、装備変更記述はUserの環境設定の一環と言えます。出来ないと非常に使い辛いです。

1つ構造が分かれば、他に取り付くハードルも下がると思います。

装備変更用xmlの作成

『プレイヤキャラのアニメーション再生中は、グラサン系装備を外す』という設定を作ります。

Test_equipmentSetData.xml

<meta title="Test_equipmentSetData.xml" version="1.0" dataSet="equipmentSet"/>
<defaults source="Fallout4.esm"/>

<equipmentSet id="unEquipTest">
	<condition isPlayer="true">
		<unEquip bipedSlot="Eyes"/>
	</condition>
</equipmentSet>	

<equipmentSet id="reEquipTest">
	<condition isPlayer="true">
		<reEquip bipedSlot="Eyes"/>
	</condition>
</equipmentSet>


各項目の説明は、以下の通り。

<!--  『meta title』にファイル名、『version』は何でもOK、『dataSet』はこのxmlの設定内容  -->
<meta title="Test_equipmentSetData.xml" version="1.0" dataSet="equipmentSet"/>

<!--  初期設定。参照するプラグインをロード(1個のみ指定可能)  -->
<defaults source="Fallout4.esm"/>

<!--  装備設定の記述開始。この設定の名称(id)を『unEquipTest』と命名  -->
<equipmentSet id="unEquipTest">

	<!--  プレイヤキャラ用設定の記述開始  -->
	<condition isPlayer="true">
	
		<!--  グラサン系装備を解除  -->
		<unEquip bipedSlot="Eyes"/>
		
	</condition>
	<!-- プレイヤキャラ用設定ここまで -->

</equipmentSet>	
<!-- 装備設定『unEquipTest』ここまで -->


<!--  以下、終了後の再装備設定『reEquipTest』の記述  -->
<equipmentSet id="reEquipTest">
	<condition isPlayer="true">
		<reEquip bipedSlot="Eyes"/>
	</condition>
</equipmentSet>

xml内でプラグインのForm IDを参照する際は、defaultsのsourceでプラグインを指定します。
この例ではForm IDを参照してませんが、bipedSlot定義に必要なのかも(外すとロード失敗します)。

作成した設定をアニメーションに適用

変更設定を、アニメーション再生に適用します。MOD単位での適用が簡単です。Pose Itに使ってみます。
Poseit_positionData.xmldefaults nodeに、装備変更設定を追加します。
startEquipmentSetにアニメーション開始時、stopEquipmentSetに終了時のidを設定。

<meta title="Posit_positionData.xml" version="1.0" dataSet="position"/>
<defaults startEquipmentSet="unEquipTest" stopEquipmentSet="reEquipTest"/>

プレイヤキャラでPose Itを再生すると、万能ゴーグル眼帯が外れました!Pose Itで追加された全てのポーズに適用されます。このまま別のポーズに切り替えても外れたままですが、AAFを終了すれば元に戻ります。
ポーズ中に装備が変わるPC

ガービーはNPCですから、Pose Itを使ってもグラサンそのまま。
ポーズ中でも変わらないNPC

NPCの記述も追加すれば、更にバリエーション増やせます。『NPCかつ男キャラ』だったら、服を脱ぐ設定にしました。conditionに条件を並べれば、複数設定できるみたいです(AND条件で)。ツリー構造だとダメでした。

<equipmentSet id="unEquipTest">
	<condition isPlayer="true">
		<unEquip bipedSlot="Eyes"/>
	</condition>
	<condition isPlayer="false" isFemale="false">
		<unEquip bipedSlot="BODY"/>
	</condition>
</equipmentSet>


ガービーは条件に該当するので、グラサンそのままでクロスアウツ。NPC女性であるSierraさんは、適合する条件が無いので変化無し。プレイヤキャラのようにグラサン外さず、ガービーみたいに脱ぐことも無いです。
NPCの装備変更設定
ちなみに再装備設定を書いてないので、AAFを終了してもガービーはマッパのまんま。

conditionに使えるattributeは、AFF Wiki参照してください。
dagobaking / Advanced Animation Framework / wiki / XML / conditionNode — Bitbucket

スロットの設定方法

装備変更で設定可能なスロットは、以下の通り。unEquipreEquipも同じ。CKでの命名に倣っており、同名のスロットには番号が振られてます。

注意点として、デフォルト設定ではUnnamed5までしか変更できません。Shield以降を使うには、AAF_settings.xmlでclothes_scan_endslotを変更してください(例えば31に変更すれば、FXまで走査されます)。

<xxEquip bipedSlot="Hair Top/>
<xxEquip bipedSlot="Hair Long"/>
<xxEquip bipedSlot="FaceGen Head"/>
<xxEquip bipedSlot="BODY"/>
<xxEquip bipedSlot="L Hand"/>
<xxEquip bipedSlot="R Hand"/>
<xxEquip bipedSlot="[U] Torso"/>
<xxEquip bipedSlot="[U] L Arm"/>
<xxEquip bipedSlot="[U] R Arm"/>
<xxEquip bipedSlot="[U] L Leg"/>
<xxEquip bipedSlot="[U] R Leg"/>
<xxEquip bipedSlot="[A] Torso"/>
<xxEquip bipedSlot="[A] L Arm"/>
<xxEquip bipedSlot="[A] R Arm"/>
<xxEquip bipedSlot="[A] L Leg"/>
<xxEquip bipedSlot="[A] R Leg"/>
<xxEquip bipedSlot="Headband"/>
<xxEquip bipedSlot="Eyes"/>
<xxEquip bipedSlot="Beard"/>
<xxEquip bipedSlot="Mouth"/>
<xxEquip bipedSlot="Neck"/>
<xxEquip bipedSlot="Ring"/>
<xxEquip bipedSlot="Scalp"/>
<xxEquip bipedSlot="Decapitation"/>
<xxEquip bipedSlot="Unnamed1"/>
<xxEquip bipedSlot="Unnamed2"/>
<xxEquip bipedSlot="Unnamed3"/>
<xxEquip bipedSlot="Unnamed4"/>
<xxEquip bipedSlot="Unnamed5"/>
<xxEquip bipedSlot="Shield"/>
<xxEquip bipedSlot="Pipboy"/>
<xxEquip bipedSlot="FX"/>
<xxEquip bipedSlot="Possibly Weapons1"/>
<xxEquip bipedSlot="Possibly Weapons2"/>
<xxEquip bipedSlot="Possibly Weapons3"/>
<xxEquip bipedSlot="Possibly Weapons4"/>
<xxEquip bipedSlot="Possibly Weapons5"/>
<xxEquip bipedSlot="Possibly Weapons6"/>
<xxEquip bipedSlot="Possibly Weapons7"/>
<xxEquip bipedSlot="Possibly Weapons8"/>
<xxEquip bipedSlot="Possibly Weapons9"/>
<xxEquip bipedSlot="Possibly Weapons10"/>
<xxEquip bipedSlot="Possibly Weapons11"/>
<xxEquip bipedSlot="Possibly Weapons12"/>

※Unnamed1-5は、54-58のフリースロット。例えば54は、AWKCR準拠のバッグMODで使用。

Possibly Weaponsは、うまく設定できる武器とできない武器があったりで、ちょっと僕的には現状詳細不明。

アニメーション(ポーズ)の追加

今度はアニメーション追加を試します。AAF非対応のポーズMODや、新規アニメーションをAAFで使う為に必要な作業です。
詳しくは次回にするので、今回は簡単に。バニラのPsychoを使うアニメーションを、AAFに追加します。アニメーション設定(animationData.xml)と再生設定(positionData.xml)、2つのxmlファイルが必要です。

animation設定

まずはVanilla_animationData.xml。Fallout4.esmのIdle Animationを、AAFのanimationに定義付けします。ここではPsychoを設定。

<meta title="VanillaPoses_animationData.xml" version="1.0" dataSet="animation"/>
<defaults source="Fallout4.esm"/>

<!-- Psychoを使うアニメーション設定 -->
<animation id="IdleUsePsycho">

	<!-- アニメーションを適用するキャラ条件(種族、性別等。attribute無しなら無条件)-->
	<actor>

		<!-- Idle AnimationのForm ID(Fallout4.esmのIdleUsePsycho) -->
		<idle form="18AB52"/>
	</actor>
</animation>

position設定

次にVanillaPoses_positionData.xmlを作ります。positionに対してanimationを設定することで、AAFのWizardからも再生可能になります。

<meta title="VanillaPoses_positionData.xml" version="1.0" dataSet="position"/>
<defaults />

<!-- positionのid名がAAF Wizardの表示名。対象アニメーションのidを『animation』で指定。 -->
<position id="Vanilla UsePsycho" animation="IdleUsePsycho"/>


AAFのWizardに『Vanilla UsePsycho』が登録され、実行するとPsychoのアニメーションが再生されます。NPCをターゲットにすることも可能です。
Psycoアニメーション



(おまけ)標準で用意された装備変更設定

装備変更設定用にAAF_equipmentSetData.xmlが標準で同梱されており、id unEquipreEquipの2つが定義されてます。記述方法は同じなんですが、用途が実質的に制限されてます

AAF_equipmentSetData.xml

この用途ですが、事実上エロMOD専用設定ですw。大抵のAAF対応エロMODから、unEquipreEquipが呼び出されてると思います。

<meta title="AAF_equipmentSetData.xml" version="1.0" dataSet="equipmentSet"/>

<defaults source="Fallout4.esm"/>

<equipmentSet id="unEquip">
	<condition>

	</condition>
</equipmentSet>

<equipmentSet id="reEquip">
	<condition>

	</condition>
</equipmentSet>

通常のポーズMODでこれを呼び出すことは無い筈なので、安心してエロMOD用に調整してください!

『unEquip』と『reEquip』の呼出し

使い方は、最初の例と同じです。アニメーションMOD『Atomic Lust』のAtomic Lust_positionData.xmlを見てみます。defaultsnodeから、unEquipreEquipが呼び出されてます。開始時にunEquipして、終わったらreEquipします。

<meta title="Atomic Lust_positionData.xml" version="1.0" dataSet="position"/>
<defaults startEquipmentSet="unEquip" stopEquipmentSet="reEquip" startMorphSet="Erect" stopMorphSet="Flaccid" offset="0,50,180"/>

MorphSetを使って、アニメーション中のモーフ設定が可能です。ここではtntnの状態を”モーフ”してますね、エロMODの必須機能。

こんな感じで、xmlで各種設定をidごとに作り、その設定を呼出す記述もまたxmlで行う訳です。


以上、おしまいです。
次回はアニメーションの追加方法について。
f4mod.hatenablog.com

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com