Behavior関連の情報、グーグル先生に聞いてもあまり出てこないので、自分なりにちょっと覗いてみました(僕が情弱で探せないだけかもしれませんが・・・)。
手探り状態でのチラシの裏的内容で、全然纏まって無い上に推測だらけです。僕の理解が、図解するのはほど遠いレベルなので・・・。
そもそも明後日の方向走ってる可能性もあるので、嘘も多いかもしれません。用語もすごく怪しいと思います(そもそも全くの専門外なので・・・)。
それでも良ければ眺めてみてください。
Havok Behavior Tool 6.6
Skyrimでも使われているツールです。
ですがプロジェクトファイルが公開されていないので、Skyrimのアニメーションを作ることにおいては何の役にも立たない、と思います。xmlでやるしかないんですね。
Behaviorの構造理解には使えそうな気がします。ドキュメントは僕にはちょっと難解です。
SSの例では4つの状態(State)があります。今は左上の「Fight Idle」。
このStateそれぞれにアニメーションファイルが設定されている?
「Fight Idle」のStateからは、
Fight Punch
Fight Kick
Fight Step Left
のいずれかに遷移することが出来る模様。
SSで青い矢印になっているFightIdle_to_FightPunchの状態遷移をすると・・・
「Fight Punch」に遷移して、パンチのアニメーションが再生されます。1回こっきりだったりループしたりとか、再生の仕方を設定できそうな気がします。
FightIdle_to_FightKickの遷移をしてみると、同様に「Fight Kick」にStateが遷移します。おもいっきり蹴りが出てますね。
このStateからはFightIdleにしか矢印が伸びていない為に、遷移としてはFightIdleに戻る以外に無い、ということだと思います。蹴った後に、右の「Fight Step Left」のStateに遷移して横っ飛びをしたいと思っても、この状態では不可能ということじゃないでしょうか。
こういった状態遷移や、それぞれのStateでの個々のアニメーションファイルの紐付け、あとは再生方式の設定色々とか?そういった物を管理しているのが「Behavior」とよばれるファイル群ですかね。アニメーションファイル単体だけじゃ、どう使っていいのかわからない的な。
単体のStateのループ再生だったり、状態遷移込みのアニメーション等を「Anim Event」として登録することで、CK上からesm、espから見える形にして、スクリプト制御可能になる、といった形でしょうか。憶測だらけですが・・・ノウハウ不足です(汗)
Havok Behavior ToolはFreeでダウンロードできます。下のリンクで、いきなりダウンロード始まります。
本来はこっちが正式な窓口?海外サイトだと上のリンク良く見るので、そっちを貼ってみましたが。
SkyrimにおけるBehaviorファイルの構成
いざSkyrimではどうなってるか?です。Race情報で設定されている2つのファイル、
Defaultfeale.hkx
Defaultmale.hkx
この中で「0_master.hkx」が指定されてます。
0_master.hkxが唯一のBehaviorファイルという訳ではなく、更に階層があるっぽいです。State次第で色々な所に渡している?
何してるのか何となく想像つきそうなファイル名が多い感じです。
Defaultfemale/male.hkx
0_master.hkx
├ 1HM_Behavior.hkx
│ ├ 1HM_Locomotion.hkx
│ │ └ SprintBehavior.hkx
│ ├ BashBehavior.hkx
│ ├ BlockBehavior.hkx
│ ├ Bow_Direction_Behavior.hkx
│ ├ CrossBow_Direction_Behavior.hkx
│ ├ MagicBehavior.hkx
│ ├ Shout_Behavior.hkx
│ ├ SprintBehavior.hkx
│ └
├ 1HM_Locomotion.hkx
│ ├ SprintBehavior.hkx
│ └
├ BashBehavior.hkx
├
├ BlockBehavior.hkx
│ ├ 1HM_Locomotion.hkx
│ │ └ SprintBehavior.hkx
│ ├ SprintBehavior.hkx
│ └
├ HorseBehavior.hkx
├
├ MagicBehavior.hkx
│ ├ Shout_Behavior.hkx
│ ├ SprintBehavior.hkx
│ └
├ MagicMountedBehavior.hkx
│ ├ ShoutMounted_Behavior.hkx
│ └
├ MT_Behavior.hkx
│ ├ IdleBehavior.hkx
│ ├ Shout_Behavior.hkx
│ ├ SprintBehavior.hkx
│ └
├ ShoutMounted_Behavior.hkx
├
├ SprintBehavior.hkx
├
├ StaggerBehavior.hkx
├
├ Weapequip.hkx
│ └ 1HM_Locomotion.hkx
├
├
├
├ FNIS_FNISBase_Behavior.hkx
├
└ FNIS_cpkp_Behavior.hkx
FNISで追加されるBehaviorは、FNIS本体、MODでの追加共に、全てこの0_master.hkx内に追加されています。昔は0_master.hkx内にFNISのルート階層のBehaviorを1つ追加して、その下にMODで追加されるBehaviorが追加されてたみたいです。
※PCEAの0_master.hktを見ると、この古い構造でFNISが登録されてました。
これじゃ整合とれないのでは?と思って色々見てみた所、現行バージョンのFNISによるGenerateFNISforUsersで作られる2つのDefaultFile(PCEAオプション使用時)、
Defaultfemale.hkt
Defaultmale.hkt
では、0_master.hktではなく0_master.hkxが指定されていました。
上記2つ以外の.hktファイルは使われていないです。
つまり、別の0_masterを用意しないと実現できないモーション分けは不可、ということじゃないでしょうか。
Defaultfemale.hkxの中身
ウェイト関連っぽい?情報もあったりしますが、僕にはさっぱりです。
「AnimationNames」として、Femaleで使うであろうアニメーションのファイル名とパスが羅列されてます。
アニメーションの追加をする際、ファイルの総数と「numelements」の数が一致してないと、hkxに戻す時に失敗する気がします。
FNISを使っている場合は、新規アニメーションもここに登録されてます。
下の方にいくと、スケルトン関連でしょうか。「rigName」にskeleton_female.hkx、「BehaviorFilename」に0_master.hkxが設定されてます。
0_master.hkxの中身
滅茶苦茶行数多いです。このSSはxml変換しただけですが、7万行以上ありました。
このままだと見づらいので、CondenseBehavior使った方がいい気がします。FNISと同じ作者のfore氏作なこともあり、非常に見やすくなります。
子のBehaviorだけでなく、この中に直接Stateや状態遷移、アニメーションファイルの情報も一部あるっぽいです。
「eventNames」で羅列されてる物が、CKで見られる「AnimEvent」な気がします。並び順の上から順番にIDが割り付けられていて、各State(?)ではその番号が使われてるっぽいです。
片手剣の納剣(納刀)アニメーションが書いてあります。これだけ見ても僕には全然わかりません。
更に続きます。何がtrueで何がFalseなのか・・・
コンデンスしたら超スッキリしました。注釈までついてます。#2178のAnimEvent「Unequip_Out」をトリガにして、1HM_Unequip.hkxが発動する?
そんな気がしますが、全然違うかもしれません。
他にも前述のように「子」になると思われるBehaviorもありました。
FNISの追加Behaviorも同様に。
その他
GenerateFNISforUsersを実行した場合は、
Defaultfemale.hkx
Defaultmale.hkx
0_master.hkx
の3つが変更されることになります。PCEAを使っている場合は、
Defaultfemale.hkp
Defaultmale.hkp
の2つも変更されます。.hktではないので注意。前述の通り、0_master.hktは変更されません。HBTのプロジェクトファイルと同じ拡張子ですが、関係無いですね。
気になってることが。FNISで男女別化をした場合、アニメーションファイルのパスが変わるので、Defaultfemale/male.hkxに変更が反映されます。けれどもBeheviorで変更されるのは0_master.hkxのみで、かつこの中のアニメーションファイルのパス自体は書き換えられません。
つまり、男女別でファイルのフォルダを変更しても、Behavior内におけるアニメーションファイルのパスはそのままということです。DefaultFileで指定しておけば、Behaviorの中は変更せずとも、Animation以下のフォルダから探してくれる?だからPCEAでの0_master.hktが無くても正常に動くのかも?
また、これらをマニュアルで中身を変更した後にGenerateFNISforUsersを実行すると、全部潰れてしまうので、うっかりミスに注意したいところです。
なんか纏まりのない垂れ流し記事になってしまいましたが、なにぶん模索中ということで(汗)
色々遊んでいた所、納剣(刀)/抜剣(刀)動作のPCEA対応っぽい差別化と、一刀流時と二刀流時の納刀/抜刀モーション切り替えあたりが出来た気がするので、そのうちまとめるかもしれません。(気のせいだった!ってオチがあるかもしれませんが・・・)
こんなとこで終わります。僕の理解度に応じて記事更新するかもです。