Advanced Animation Frameworkへのアニメーション追加ネタの続き。今回は家具を対象にしたり、複数キャラを指定したアニメーション追加を試します。実験的な内容なので、あくまで参考程度ということで。
基本の動作やxml記述は、過去記事参照してください。
f4mod.hatenablog.com
f4mod.hatenablog.com
f4mod.hatenablog.com
AAFに家具用アニメーションを追加
家具を使ったアニメーションを追加します。今回はPose Itを使用。xmlファイルが同梱されたAAF対応版もあり。
着席ポーズの『RequestedPose4』。地面で再生するポーズな為、デフォルトだと空気椅子。
これを椅子用アニメーションに変更します。SS撮影用途には空気椅子の方が便利かもですが・・・実験ということで!
対象家具をグループ化
アニメーション適用対象の家具をグループ化します。今回は椅子を集めたグループを作成。グループに設定された椅子に対してのみ、『RequestedPose4』が使えます。
PoseIt_furnitureData.xmlを作成。
<meta title="PoseIt_furnitureData.xml" version="1.0" dataSet="furniture"/> <defaults source="Fallout4.esm"/> <!-- 家具のグループ設定 --> <group id="Vanilla Chair"> <!-- グループに入れる家具のForm IDを指定 --> <furniture form="000DF45C" id="NPCChairMemoryLoungeSit01"/> <furniture form="001A721C" id="NpcChairLounge01BWeathered01OttomanSit01"/> <furniture form="00149E92" id="NpcChairAirplaneSit01"/> <furniture form="001A6E52" id="NpcChairHighTechOfficeChairDirtySit01"/> </group>
全ての椅子に対応させるのは結構大変。実験なのでとりあえず4個だけで。それと、xmlファイル毎に1つのプラグインしか指定できません(多分)。DLCやMODの家具をグループ化したい場合は、プラグインごとに別のxmlファイルが必要です。
家具とアニメーションを紐付け
Posit_positionData.xmlを変更します。元々xmlファイルがあるので、部分的な抜粋のみで。
position
node内に、location
で家具のグループのidを指定。
<position id="RequestedPose4" location="Vanilla Chair"/>
ちなみにこれはanimation
が省略されていて、実際は、
<position id="RequestedPose4" animation="RequestedPose4" location="Vanilla Chair"/>
ということですね。position
とanimation
のidが同名なら、animation
を省略しても平気みたいです(省略してるMODの方が多いかも)。
本来id重複はマズい筈なんですが、これはOKのようです。Wizardからしか参照しないのかも?
アニメーションの座標補正
必要であれば、animation
node(animationData.xml)で座標補正できます。offset
で指定。少し椅子の手前に引っ張りました。
※僕が変なスケルトン使ってるせいだと思います、バニラのスケルトンなら多分補正要らないです。
<!-- offset=”x,y,z,angle”で、キャラの座標補正 --> <animation id="RequestedPose4" offset="0,5,0,0"> <actor> <!-- RequestedPose4のForm ID --> <idle form="1F01"/> </actor> </animation>
angle
は、z軸回転の角度補正(yaw、水平状態で回転)。actorが複数いる場合は、:
で区切って追記可能。
椅子に座ったポーズの動作確認
実際に動かしてみます。グループに設定した椅子が見つかれば、Wizardに表示されます。
椅子用を選択すると、変更した『RequestedPose4』が選択可能に。
うまく椅子に座ってくれました!
動くには動くんですが、時々動作に時間掛かります。Furniture animationでない物を、強引に設定したせいかも?
AAFで複数キャラを指定したアニメーション
今度は複数キャラ用を試します。Pose Itに『お姫様抱っこ』のポーズが入ってます。抱っこする側される側、それぞれの単体ポーズ。
これを合体させて、2人用のポーズに変更します。
Pose It用のanimationを変更
PoseIt_animationData.xmlの最後に、お姫様抱っこの2人用ポーズを追加します。RequestedPose33とRequestedPose35を合体。offset
のルールは、家具の時と同じ。
<animation id="RequestedPose33and35" offset="1,15,7,90"> <!-- 1キャラ目、 姫抱っこされる側を女性に限定 --> <actor gender="F"> <idle form="1F1F"/> </actor> <!-- 2キャラ目、姫抱っこする側を男性に限定 --> <actor gender="M"> <idle form="1F21"/> </actor> </animation>
Pose It用のpositionを変更
PoseIt_positionData.xmlの最後に、合体させたポーズを追加させれば完了。
<position id="RequestedPose33and35"/>
お姫様抱っこの動作確認
2キャラ用なので、ガービーとマママーフィーを選択して『RequestedPose33and35』を実行。actorの性別を制限してるので、選択順序に関係無く男が抱っこする側になります。
この設定だと頭の向きが逆だとは思いますが・・・動作自体は問題無いようです。見つめ合う2人になるのが本来でしょう。y軸回転して(マママーフィーの状態を起こす感じ)、腕に収める想定だと思います。
けれども現バージョン(10b)のAAFでは、y軸回転の補正ができません(z軸回転のみだと思います)。なので、逆向きにして強引にガービーの両腕位置に合わせましたw おかげでマママーフィーの左腕が、ちょっと微妙な感じですが。
アニメーションファイル側で座標調整されてたり、z軸回転だけで補正できる物であれば、問題なく使えると思います。
SSにプレイヤキャラを使わなかったのは、別に俺の嫁云々じゃなくて、変なスケルトンを使ってる影響で他のNPCと相対的な位置が合わない為。
とりあえず、AAFで遊んでみたシリーズはこれで一旦おしまいです。ゲームに組込んだMODは少ないですが、SS撮影のポーズMOD管理用としても便利だと思います。また何か遊んだら記事にするかもです。