前回はNEMESISで、クロスボウのブレンドを変更する改造behaviorを試しました。behaviorを自由に改変できるのがNEMESISの強みですね。そこで今回は、FNIS同様の新規アニメーション追加を試します。
FNIS用ポーズMODであるKinoko Poseの一部を、NEMESIS専用に改造します。楽しいポーズが多いので、なかなかお勧め度の高い一品。3つほどNEMESIS専用化します。behaviorファイルを作り直すだけなので、同梱の指輪で動作可能です。
やっぱり今回も結構長いですぬ。ポーズMODはFNISの方が簡単だろうと思う位には長い('_')
NEMESISには手作業ならではの高い自由度がありますが、こういうアニメーションorポーズ追加は、MOD固有のbehaviorファイルを自動生成できるFNISの方が向いてそうです。NEMESISでも動きますし。
※人様のMODなので、今回はサンプルファイル無しです。ご了承を。
環境準備編はこちら。
skmod.hatenablog.com
前回と同じ内容は基本飛ばしますので、こちらも参照をば。
skmod.hatenablog.com
NEMESIS専用化した76番ポーズ。AnimObject付きですが問題無さそう。
- 実験前の下準備
- xmlで新規アニメーションファイルの追加
- Skyrim Behavior Toolでbehaviorファイルを改変
- オブジェクト付きポーズの設定
- NEMESIS用のパッチ作成
- NEMESISでのengine取り込み確認
- Skyrimでの動作確認
実験前の下準備
Kinoko Poseをそのままインストールした状態だと、FNIS用アニメーションとしてNEMESISに組み込まれてしまいます。今回これは困るので、
data\meshes\actors\character\animations\cpkp\FNIS_cpkp_List.txt
data\meshes\actors\character\behaviors\FNIS_cpkp_Behavior.hkx
の2つをどかしておきます。behaviorファイルの方は入れっぱなしでも問題無い筈ですが(テキストファイルどかしておけば0_master.hkxと繋がらない)、まあ一応位な。
もう1つ。FNIS_cpkp_Behavior.hkxを、Skyrim Behavior Toolで触るbehaviorフォルダに入れておきます。動作面では無くても問題無いんですが、node設定をFNIS for Moddersが生成したbehaviorからパク・・・いや参考にする為('_')
んでは、作業開始でござる。
xmlで新規アニメーションファイルの追加
SBTを起動する前に、Kinoko Poseで使う新規アニメーションファイルをxmlで追加しておきます。僕が試した限りでは、SBTで新規アニメーションファイルの追加をすると、パスが正しく設定されない為。xmlで追加した後、hkx変換して、SBTの作業フォルダに上書きします。
defaultmale.hkxとdefaultfemale.hkxに追加します。characterフォルダ直下の2KBのやつではないので注意。
Data\meshes\actors\Character\characters\defaultmale.hkx
Data\meshes\actors\Character\characters female\defaultfemale.hkx
の2つ。
原因は、Bone Weightがnumelements=99なのにパラメータが100個ある為、不整合起こしてると思われます。ただNEMESIS同梱のxmlも同様なので、何かしら変換する手がある筈とは思うんですが・・・
まあアニメーションファイル追加のみの差分抽出なので、問題ないでしょう。
defaultmale.xmlで作業します。defaultfemale.xmlもまったく同じ構造してるので読み替えてください。
登録済のアニメーションファイルが大量にリスト化されてるので、最後尾に新規アニメーションファイルを追加します。何かと並び順が肝心なxml。今回は3つ試すので、3行追加。
すいません、SSで行番号抜けてますが21行目からです。
追加が終わったら、アニメーションファイルの総数を変更します。3つ足したので"1659"に変更。
defaultfemale.hkxにも同様に変更します。男女別にしたい時はパス変えても問題無いですが、今はDARやOARで性別条件書けば済むので不要でしょう。
終わったら、SBTの作業フォルダへ上書きを忘れずに。忘れるとバニラのアニメーションしかSBTから見えません・・・。
Skyrim Behavior Toolでbehaviorファイルを改変
いよいよSBTでの作業です。
FNISのように外部に専用behaviorファイルを作る方が安全度が高い気がするんですが、今回はmt_behavior.hkxに混ぜることにします。バニラやDLCのidleアニメーションが登録されてるStateMachineがあるので、そこにぶら下げてみます。安全かどうかは・・・
(Havok)神のみぞ知る( ゚Д゚)
・・・もうこのネタいらんですよね、すいません。反省はしてません。
追加したアニメーションファイルの確認
"Character Data"タブの"Animations"に、xmlで追加したアニメーションファイルがあることを確認します。無いとこの先の作業ができないので、その時はもろもろ再確認を。
SBTの作業フォルダに、アニメーションファイル自体は無くても大丈夫です(errorっぽい赤枠は付くかもだけど)。
OKなら、左上のBehaviorファイル一覧から"mt_behavior.hkx"を選択。ここでないとダメという訳ではないので(むしろここが良くないかもしれない('_'))、変えてもいいです。ただし0_master.hkxの先頭nodeに下げてしまうと、他の遷移にうまく入らなくてポーズ取ったまま固まるかも。
Animation Eventの作成
忘れないうちに、ポーズの遷移に入るトリガ用のanimation eventを作っておきます。Kinoko Poseのプラグインで設定されたanimation event名と合わせないと、ポーズ選択&実行の指輪が動かないです。
設定項目は何も無いので、名前だけ付けておけばOK。
Kinoko Pose用のnodeを作成
"Find Generator"から"NonOffsetIdlesBehavior"を検索して、飛びます。このStateMachineにぶら下げます。
新規Stateの作成
このStateMachineの子nodeとして、新規State(StateMachineStateInfo)を作ります。"Append Generator"から”State”。
別のnodeに繋げる際も、必ずStateMachineの子nodeとして作ります。でないと多分動かないです。
線を辿ってずーーーーーーっと下の方にスクロールすると、さっき作ったStateが出てきます。
新規ClipGeneratorの作成
この新規Stateに、今度はClipGeneratorを繋ぎます。
こんな感じになります。StateMachineからStateを繋ぎ、さらにClipGeneratorを接続。Idle系の基本の型だと思います。
ほかの2つも、大枠は同じに作ります。中身の設定がちょこっと違うだけ(あとでやります)。
ClipGeneratorの設定
次は各nodeの設定をします。どこから始めてもいいですが、このままClipGenaratorからやってくことに。
ぶっちゃけStateのID番号以外は、FNIS_cpkp_Behavior.hkxからまるまる写せば問題無いです。
node名は何でもいいです、重複してもOK。自分のわかりやすいやつで。僕も勝手に付けてます。Find Generatorから検索しやすいのが良いかと。あとはアニメーションファイル設定(登録済のから選択)と、ループ再生の設定。他はデフォルトのままで良いかと思います。
Stateの設定
1個戻ってState設定。
ここは必須の設定は特に無いです。node名もデフォルトのまま変更しなくても大丈夫。
ID番号だけは、遷移条件設定で使うので控えておきます(とはいえStateMachineからでも確認可能)。
同様に残りの2つも作ります。こんなんなりました。
それっぽい形にはなりましたが、まだこのStateに遷移する条件がありません。このままだと完全ステルス状態です。なのでStateMachineでそれぞれの遷移条件を設定します。
StateMachineの設定
最初のStateMachine "NonOffsetIdlesBehavior"に戻り、新規の遷移条件を作ります。緑色の"Add Trandition"から作成。いかにも新設な名前ではなく、デフォルトの遷移先が作成されるので、既存の遷移条件と混ざらないように注意。作る前に末尾の番号を確認しておくと安全。
右のeditから詳細設定に入ります。
"eventId"と"toStateId"で、animation eventと対応するStateを設定。いちばん大事なとこ。
その下、"flagGlobalWildcard"と”flagLocalWildcard”をチェック。これが無いと多分animation eventをトリガしても遷移しない(できない)と思います。
一番上の"taransition"は、多分遷移直前のアニメーションと遷移後のアニメーションを、シームレスに繋ぐ為のブレンド設定・・・な気がします。違うかもですが。
ポーズMODだと別にカクついてポーズ取ってもあまり影響無さそうですが、FNISは必ずこれを設定してそうなので、安全のため合わせておきました(僕が根本的に勘違いしてる可能性もありますし!)。
これはクリックして更に詳細設定があります。それ以外はデフォルトのままで平気だと思います。心配だったらFNIS生成のbehaviorファイルと照合すると安心。
transitionの詳細設定です。赤枠内、おそらく完全にアニメーションが変化しきるまでのブレンド時間でしょうか。FNISと同じ0.6に合わせておきました。他は変えてなかった・・・かと。
他も同じように設定して、遷移条件設定完了。
オブジェクト付きポーズの設定
指先に蝶が飛んでるポーズにAnimObjectが付いてるので、そこの設定をします。
StateMachineから、子nodeのStateにまた戻ります。Kinoko Pose76番目のポーズ。
赤枠2か所、このStateの開始時と終了時にトリガするanimation event設定、だと思います。最初これがStateに入る条件かと思ったんですが、多分違いそうな(animation eventをそういう状態チェックみたいな使い方できない予感)。
赤枠内の、
AnimObjLoad
AnimObjDraw
AnimObjectUnequip
の3つを新設。
”AnimObjLoad"と"AnimObjDraw"の2つには、payloadも設定します。
これはプラグインで設定されたAnimObjectのeditor IDですね。
以上で終わりなので、mt_behavior.hkxだけ個別セーブして終了します。Projectでセーブすると吹っ飛ぶことがあるので避けた方がいいです。あとはNEMESIS用のパッチを作ります。
NEMESIS用のパッチ作成
HKX Extractorで抽出して、info.iniを書きます。前回記事も参考になるかも。
今回はただ抽出するだけでは終われないので注意。
mt_behavior.hkxのゴミパッチデータを確認
mt_behavior.hkxをSBTでセーブしたため、確実にゴミパッチが一緒に抽出されます。ゴミ除去手順は準備編の記事にて。
skmod.hatenablog.com
三人称用behaviorファイルだけ、ゴミパッチリスト作りました。
skmod.hatenablog.com
空セーブからのパッチ抽出で出てきたSBT由来のゴミパッチ。mt_behavior.hkxは結構多いです。
今回改変したmt_behavior.hkxからも、このゴミパッチが抽出されます。該当nodeを意図的に改変してない限りは、全部削除します。
パッチ抽出とゴミパッチの除去
今回改変したのは、
defaultmale.hkx
defaultfemale.hkx
mt_behavior.hkx
の3つです。これをeditsフォルダに放り込んでHKX Extractorから抽出開始。
予定通り3つのフォルダとinfo.iniが作成されました。
"defaultfemale"フォルダを見てみます。パッチは1個だけ。
アニメーションファイル追加分だけがパッチ化されてます。うまくいってそう。
"defaultmale"フォルダも同じです。
"mt_behavior"フォルダ。前述のゴミデータをマニュアルで除去した残りです。
これも個別確認した方がいいですけど、量が多いのでここでは省略。ポーズ3つでもこんだけあるので結構大変。
Skyrimでの動作確認
NEMESIS走らせて動作確認。実験とはいえnexusのurlと作者様の名前はちゃんと登録。
76番ポーズは冒頭に見てるので、残りの2つを。ちゃんと動いてるようです。
これはコンソールからNPCにanimation event投げましたが、プレイヤキャラで指輪からのポーズ選択&実行もしっかり機能します。
ちょっと作業量は多かったですが、こんなんで手作業での新規アニメーション追加ができるぽいです。
以上、実験おしまい!
関係無いですが、これ書いてる最中にSONYのブルーレイレコーダが壊れた_| ̄|○
水星の魔女に、アストリッドとラファエルが・・・
2011年製AT950W。今のSONYのレコってUIの使い勝手どうなんだろ・・・