読者です 読者をやめる 読者になる 読者になる

Skyrim箱庭DIY

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

【Skyrim】Havok Behavior関連についてのメモ書き

アニメーション


スポンサーリンク

Behavior関連の情報、グーグル先生に聞いてもあまり出てこないので、自分なりにちょっと覗いてみました(僕が情弱で探せないだけかもしれませんが・・・)。

手探り状態でのチラシの裏的内容で、全然纏まって無い上に推測だらけです。僕の理解が、図解するのはほど遠いレベルなので・・・。

そもそも明後日の方向走ってる可能性もあるので、嘘も多いかもしれません。用語もすごく怪しいと思います(そもそも全くの専門外なので・・・)。

それでも良ければ眺めてみてください。

Havok Behavior Tool 6.6

Skyrimでも使われているツールです。

ですがプロジェクトファイルが公開されていないので、Skyrimのアニメーションを作ることにおいては何の役にも立たない、と思います。xmlでやるしかないんですね。

Behaviorの構造理解には使えそうな気がします。ドキュメントは僕にはちょっと難解です。

 

SSの例では4つの状態(State)があります。今は左上の「Fight Idle」。

このStateそれぞれにアニメーションファイルが設定されている?

HavokBehaviorToolのIdle

Fight Idle」のStateからは、

Fight Punch

Fight Kick

Fight Step Left

のいずれかに遷移することが出来る模様。

SSで青い矢印になっているFightIdle_to_FightPunchの状態遷移をすると・・・

 

Fight Punch」に遷移して、パンチのアニメーションが再生されます。1回こっきりだったりループしたりとか、再生の仕方を設定できそうな気がします。

HavokBehaviorToolのパンチ

 

FightIdle_to_FightKickの遷移をしてみると、同様に「Fight Kick」にStateが遷移します。おもいっきり蹴りが出てますね。

HavokBehaviorToolのキック

このStateからはFightIdleにしか矢印が伸びていない為に、遷移としてはFightIdleに戻る以外に無い、ということだと思います。蹴った後に、右の「Fight Step Left」のStateに遷移して横っ飛びをしたいと思っても、この状態では不可能ということじゃないでしょうか。

 

こういった状態遷移や、それぞれのStateでの個々のアニメーションファイルの紐付け、あとは再生方式の設定色々とか?そういった物を管理しているのが「Behavior」とよばれるファイル群ですかね。アニメーションファイル単体だけじゃ、どう使っていいのかわからない的な。

単体のStateのループ再生だったり、状態遷移込みのアニメーション等を「Anim Event」として登録することで、CK上からesm、espから見える形にして、スクリプト制御可能になる、といった形でしょうか。憶測だらけですが・・・ノウハウ不足です(汗)

 

 

Havok Behavior ToolはFreeでダウンロードできます。下のリンクで、いきなりダウンロード始まります。

 

http://software.intel.com/sites/havok/downloads/HBT.Installer.v660.Release.20090708-142144_Released.zip

 

 本来はこっちが正式な窓口?海外サイトだと上のリンク良く見るので、そっちを貼ってみましたが。

 

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が登録されてました。

PCEAの0_master.hkt

これじゃ整合とれないのでは?と思って色々見てみた所、現行バージョンの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に戻す時に失敗する気がします。

defaultfemale.hkxのアニメーションファイルのパス

 

FNISを使っている場合は、新規アニメーションもここに登録されてます。

FNISで追加されたアニメーションファイルのパス

 

下の方にいくと、スケルトン関連でしょうか。「rigName」にskeleton_female.hkx、「BehaviorFilename」に0_master.hkxが設定されてます。

rigと0_master.hkx

 

 

0_master.hkxの中身

滅茶苦茶行数多いです。このSSはxml変換しただけですが、7万行以上ありました。

このままだと見づらいので、CondenseBehavior使った方がいい気がします。FNISと同じ作者のfore氏作なこともあり、非常に見やすくなります。

子のBehaviorだけでなく、この中に直接Stateや状態遷移、アニメーションファイルの情報も一部あるっぽいです。

eventNames」で羅列されてる物が、CKで見られる「AnimEvent」な気がします。並び順の上から順番にIDが割り付けられていて、各State(?)ではその番号が使われてるっぽいです。

0_master.hkxのAnimEvents

 

片手剣の納剣(納刀)アニメーションが書いてあります。これだけ見ても僕には全然わかりません。

Unequipアニメーション1

更に続きます。何がtrueで何がFalseなのか・・・

Unequipアニメーション2

 

 

コンデンスしたら超スッキリしました。注釈までついてます。#2178のAnimEvent「Unequip_Out」をトリガにして、1HM_Unequip.hkxが発動する?

Unequipアニメーションコンデンス版

そんな気がしますが、全然違うかもしれません。

 

他にも前述のように「子」になると思われるBehaviorもありました。

0_master.hkxの子になるBehavior

 

FNISの追加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対応っぽい差別化と、一刀流時と二刀流時の納刀/抜刀モーション切り替えあたりが出来た気がするので、そのうちまとめるかもしれません。(気のせいだった!ってオチがあるかもしれませんが・・・)

 

こんなとこで終わります。僕の理解度に応じて記事更新するかもです。