Skyrim箱庭DIY

MODによる固有の環境不具合は自分で直して快適ゲーム。CTDにさようなら。Do It Yourself!!

【Skyrim】Skyrimにおけるbehavior graphの構造概要(idle animation編)



スポンサーリンク

引き続きHavok Behaviorの、behavior graphの話です。
今回は規模の小さいやつを見ていきます(こっち先の方が良かったかな( ; ゚Д゚))
今回もShikyo Kira様とDiscordの皆様には感謝です<(_ _)>
前回はこちら
skmod.hatenablog.com

よくあるbehavior graphの型

mt_behavior.hkxからの抜粋。拍手のidleアニメーション4つの状態遷移です。
animation eventを受け取ると、そのままアニメーション再生まで一気に走る、最もシンプルなアニメーション再生の遷移だと思います。FNIS対応ポーズMODも、こんな感じのが追加されます。
基本の型とも言える物で、"StateMachine"、"StateMachineInfo"、"ClipGenerator"の3要素で構成されます。
behaviorの基本形

behavior graph遷移の概要

前回やりましたが、もう1度ざっくりと。各nodeは左から右へ、

StateMachine(親) > StateMachineInfo(子) > ClipGenerator(孫) 

の順で遷移します。
コンソールからPlayIdle IdleApplaud2を実行すれば、薄赤枠のルートが選択されます。nodeの末尾に「.hkx」が付いてるので紛らわしいですが、node名とアニメーションファイルに因果関係はありません。そういう名前のnodeというだけ。
子node(StateMachineInfo)には各1つのClipGeneratorが接続されており、ClipGenerator毎に1つのアニメーションファイルが紐づけられてます。最後まで完走すれば、アニメーションファイルが再生されます。

StateMachine

親nodeです。この下に子nodeである"StateMachineInfo”が接続されます。
左側のIndex番号15~97が、このStateMachineに接続された子nodeのリストです。38~41にIdleApplaudxのStateMachineInfoもあります。
子nodeにはuniqueなID番号が振られており、 "NPC_Applaud2.hkx”は、ID:63
Index99番以降は、各nodeへの遷移条件設定。
StateMachine


Index108番、"NPC_Applaud2.hkx”への遷移条件設定。
animation event "IdleApplaud2"がトリガされること、です。
NPC_Applaud2.hkxへの遷移条件


StateMachineInfo

個々の「状態」です。単にstateと言うと、おそらくこれを指すと思います。
先ほどの「ID:63」が見えます。同名のgenerator(ClipGenerator)が子nodeとして接続されてます。
StateMachineInfo
node名は同名でも問題無いです。xmlからでないと確認できないですが、各nodeにはuniqueな名前が別に付いてる為。
バニラやFNIS追加だと"#xxxx"の4桁番号、NEMESIS追加だと"#MOD名$xx"で番号が付与されます。


ClipGenerator

個々のアニメーションファイル(clip)を再生します。今回はブレンド要素が無いので、clip単体=最終出力アニメーションです。
再生するアニメーションファイルや、再生速度等の設定があります。前回のlocomotionでは、移動速度別にここで再生速度が調整されてます。
ClipGenerator
再生開始or終了時刻を起点に、animation eventをトリガできるようで、この例だと"IdleStop"をトリガします。


設定詳細。終了0.5秒前にトリガするようです。
ClipGeneratorからのevent

ここまで走りきると、拍手アニメーションの再生となります。
拍手



(おまけ) 降参アニメーションの状態遷移例

mt_behavior.hkxのrootから、Idleアニメーション"IdleSurrender"までの流れの遷移を抜粋しました。ちょっとよくワカランことも多いので、よかったら参考までに。本来はこれも勿論左から右に遷移するんですが、収まりきらないんで切り貼りしてます( ; ゚Д゚)
左から右にジグザグに辿ってみてください。
4番のStateMachineが先程と同一のnode "NonOffsetIdlesBehavior”です
IdleSurrenderへの状態遷移

以上、今回はこれでおしまいです!
次回、今回見たIdleApplaud2までの流れを、xmlファイルで追いかけます。

続きはこちら
skmod.hatenablog.com