[テキトーメモ] Idleモーション(やポーズ)作成:NifScopeで整形→CSで設定


ゲーム内のモーション(主にIdle)作る時のNifScopeでの
整形→ゲーム内で動作確認までのメモだよ。

 [NifScopeで整形]
Blenderで適当にアニメを作って、kfファイルに出力するよ。
※出力前にプライオリティの設定を忘れずに

Nifscopeで出力データを開くよ。

NiControllerSequenceを選択してNameをSpecialIdleに変えるよ。
ついでにStopTimeの値をメモるかコピーしておいてね。

通常はCycleTypeをCYCLE_LOOPに変えるよ。
一度きりのモーション(あくびするとか)の場合はCYCLE_CLAMPのままでいいよ。

これで一応動くようになったけどモーション同士の切り替えを滑らかにしたい場合は、
NiTextKeyExtraDataを選択して次の作業をするよ。

NumTestKeysを2から3に増やすよ。
そしたらその下の緑色の矢印(リサイクルマークみたいなの)をクリックするよ。

TextKeyの横の+ボタンを押して展開するよ。

ValueがStartのものはいじらないでそのまま。
EndのものはTimeにさっきメモしておいたStopTimeの値を入れてね。

空白のものはValueにBlend:数値を入れてね。数値は10~20くらいでいいかな。
Timeには適当な数値を入れてね。たぶん切り替わりにかける時間だと思うよ。
0.0150~0.0300くらいでいいかな。そのあたりはモーション毎に調整してね。

※できればStart、Blend、Endの順に並べ替えたほうがいいのかもしれないけど、
そのまま最後にBlendくっつけても特に問題なく動いてるよ。

kfファイルに出力して完成!



[NifScopeでのテスト]
Skeltonか全身のメッシュをロードして、メニューのSpells→Animation→Attch.kfで
ダイアログを開き、作ったkfファイルを選択すればNifScope上でも動くよ。



[CSでIdleを設定する]
CSでモーション適応用の適当なespファイルを作るか読み込むかするよ。

メニューのGameplay→IdleAnimations...を選択するとダイアログが開くよ。

Characters¥_Male¥IdleAnimsを横の+を押して展開するよ。
それが選択されている状態で右クリック→InsertChildを選択するよ。
すると新しい名前の無いIdleができるので、それを選択して設定をするよ。

1.IDにIdleの名前を入れる(半角英数字)

2.SelectAnimationFileをクリック、作ったkfを選択する

3.その下の表みたいなところで右クリック、Newを選択

4.表に新しく出た項目(条件)を選択して、ダイアログ下の項目を設定
ConditionFunctionでGetRandomPercentを選択
ComParisonで<を選択
ValueにそのIdleが発動する確率(%)を入力(今回はテスト用に100を入力)
(ランダム性としては普通が30、たまに出るのが15くらいでいいと思います)

これで設定できたけど、とりあえずここで動きをテストするよ。
IdleAnimationsのダイアログは開いたまま、ObjectWindowのNPCから
適当なキャラのダイアログを開くよ。Argonianとか尻尾のある種族がおすすめだよ。

Animationタブを選択するよ。キャラクターの全身が表示されたら、IdleAnimationsの
ダイアログでさっき設定したIdleを選択すると表示されたキャラが動くと思うよ。
(動かない!って時は別のIdleを選択してからもう一度選択しなおすとたぶん動くよ)

動いたら、NPCの方は変更されないようにCancel(もしくは×)で閉じて、
IdleAnimationsの方はCloseで閉じて、それからespを保存するよ。

作ったespをアクティベートしてゲームを起動。
立っているキャラクターがそのモーションを行えば完成!



※今回はとりあえずゲーム内で動くかを確認するためなので、設定場所は超適当だよ。
LoiterIdleの中に追加するか、新しい分類を作るかした方がまとまりいいよ。
※Condition(条件式)の設定によって、特定条件化で行うモーションも作成できるよ。
※ちなみにIdleAnimations左枠の一覧は上から順に処理されるよ。条件式の設定に注意。 ​