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.xmlのdefaults
nodeに、装備変更設定を追加します。
startEquipmentSet
にアニメーション開始時、stopEquipmentSet
に終了時のidを設定。
<meta title="Posit_positionData.xml" version="1.0" dataSet="position"/> <defaults startEquipmentSet="unEquipTest" stopEquipmentSet="reEquipTest"/>
プレイヤキャラでPose Itを再生すると、万能ゴーグル眼帯が外れました!Pose Itで追加された全てのポーズに適用されます。このまま別のポーズに切り替えても外れたままですが、AAFを終了すれば元に戻ります。
ガービーはNPCですから、Pose Itを使ってもグラサンそのまま。
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さんは、適合する条件が無いので変化無し。プレイヤキャラのようにグラサン外さず、ガービーみたいに脱ぐことも無いです。
ちなみに再装備設定を書いてないので、AAFを終了してもガービーはマッパのまんま。
conditionに使えるattributeは、AFF Wiki参照してください。
dagobaking / Advanced Animation Framework / wiki / XML / conditionNode — Bitbucket
スロットの設定方法
装備変更で設定可能なスロットは、以下の通り。unEquip
もreEquip
も同じ。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をターゲットにすることも可能です。
(おまけ)標準で用意された装備変更設定
装備変更設定用にAAF_equipmentSetData.xmlが標準で同梱されており、id unEquip
とreEquip
の2つが定義されてます。記述方法は同じなんですが、用途が実質的に制限されてます。
AAF_equipmentSetData.xml
この用途ですが、事実上エロMOD専用設定ですw。大抵のAAF対応エロMODから、unEquip
とreEquip
が呼び出されてると思います。
<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を見てみます。defaults
nodeから、unEquip
とreEquip
が呼び出されてます。開始時に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