引き続き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 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への遷移条件設定。
Index108番、"NPC_Applaud2.hkx”への遷移条件設定。
animation event "IdleApplaud2"がトリガされること、です。
StateMachineInfo
個々の「状態」です。単にstateと言うと、おそらくこれを指すと思います。
先ほどの「ID:63」が見えます。同名のgenerator(ClipGenerator)が子nodeとして接続されてます。
node名は同名でも問題無いです。xmlからでないと確認できないですが、各nodeにはuniqueな名前が別に付いてる為。
バニラやFNIS追加だと"#xxxx"の4桁番号、NEMESIS追加だと"#MOD名$xx"で番号が付与されます。
ClipGenerator
個々のアニメーションファイル(clip)を再生します。今回はブレンド要素が無いので、clip単体=最終出力アニメーションです。
再生するアニメーションファイルや、再生速度等の設定があります。前回のlocomotionでは、移動速度別にここで再生速度が調整されてます。
再生開始or終了時刻を起点に、animation eventをトリガできるようで、この例だと"IdleStop"をトリガします。
設定詳細。終了0.5秒前にトリガするようです。
ここまで走りきると、拍手アニメーションの再生となります。
(おまけ) 降参アニメーションの状態遷移例
mt_behavior.hkxのrootから、Idleアニメーション"IdleSurrender"までの流れの遷移を抜粋しました。ちょっとよくワカランことも多いので、よかったら参考までに。本来はこれも勿論左から右に遷移するんですが、収まりきらないんで切り貼りしてます( ; ゚Д゚)
左から右にジグザグに辿ってみてください。
4番のStateMachineが先程と同一のnode "NonOffsetIdlesBehavior”です。
以上、今回はこれでおしまいです!
次回、今回見たIdleApplaud2までの流れを、xmlファイルで追いかけます。
続きはこちら
skmod.hatenablog.com