乗り物チュートリアル 02
詳しい知識は全く無いので、最低限知っておいたほうがいいこと程度です。
nifファイル
nifファイルは、そのモデルの姿形のデータが入っています。NifSkopeで開いて編集したり、BlenderにImport、BlenderからExportしたりできます。
skeleton.nif
![horseのskeleton.nifをNifSkopeで開いたところ。多数の骨でできています。 skeleton.nif](img/skeleton_bone.png)
skeleton.nifはモデルを動かすための骨格であり、多数のBone(骨)で構成されています。これに肉体などのメッシュを取り付けることで初めて見れたモデルとなるわけですが、そのモデルの動きはこのBoneの動きによるものです。
ゲーム上でモデルを動かすために必ず必要で、もちろんヴァニラの生物なども全てskeleton.nifは用意されています。
Blenderでモデルの動きのデータ(アニメーション)を作る際は、このskeleton.nifではなくskeletonEdit.nifの方を使います。
skeletonEdit.nif
![サンプルのバイクMODのskeletonEdit.nifをBlenderにImportしたところ。カカシです。 skeletonEdit.nif](img/skeletonedit_bone.png)
skeletonEdit.nifはゲーム上では使われず、Blenderなどで編集する際に使われます。
モデルのアニメーションであるkfファイルを作りたい時は、このskeletonEdit.nifに肉体などのメッシュをImportして作業します。
skeletonEdit.nifはゲーム上では使われないため、ヴァニラの生物などには用意されておらず、その場合は自分で用意する必要があります。CS Wikiにて「clean skeleton」の作り方が書かれていますが、恐らくこれはskeletonEdit.nifのことだと思われます。
モデルのグラフィックのnifファイル
![horse.nifをNifSkopeで開いたところ。馬のグラフィックです。 horse.nif](img/skeleton_horse.png)
ゲーム上で目にするのはこれらのグラフィックでしょう。ゲーム上ではこれがskeleton.nifに取り付けられて動きます。
この馬のグラフィックには顔がありませんが、skeleton.nifと違い、CSで設定すれば複数のnifファイルを1つの生物に使うことができます。顔・目・体と分けたりできます。
バイクMODの場合、ハンドル周り・前輪・後輪・その他の4つに分け、各nifファイルを独立して動かすことによってハンドルを切ったりタイヤを回したりします。
kfファイル
kfファイルは、静止ポーズも含めたアニメーションのデータです。Boneの動きのデータだけなので、nifファイルに比べてファイルサイズは小さいです。BlenderにskeletonEdit.nifをImportする際にkfファイルを指定することによって、そのkfファイルを編集することもできます。
kfファイルにもいくつかの種類があり、NifSkopeで開いて「NiControllerSequence」のNameで確認できます。
各行動のkfファイル
名前が変ですが、何もしていない時の「idle.kf」や右を向く時の「turnright.kf」などのことを指しています。これらのファイルを置き換えれば、ゲーム上のその動きが変わります。
どうも複数のファイルが影響されることがあるようで、例えば「forward.kf」(歩き)の前進距離は「fastforward.kf」(走り)の距離にも影響します。
また、乗馬時に<a>や<d>で左右へ向きを変える処理はゲームが自動的に行われていたり、色々と仕様があります。
SpecialIdle
ポーズMODでお馴染みのkfファイルです。PickIdleというコマンドを実行することにより条件に合ったものが1つ選択されて再生され、モデルがそのポーズをとります。解除する時は「Player.Playgroup Idle 1」のようにします。
複数のSpecialIdleを同時に実行することはできず、違うSpecialIdleをPickIdleで再生した場合は、それまで再生されていたものは解除されます。右手を挙げるSpecialIdleを再生していたなら、右手はその場所から次のSpecialIdleのポーズの動きに入りますが、この際に右手がどの位置にあったかは別に次のSpecialIdleのポーズには影響しません。
ただし↑の各行動のkfファイルとは同時に実行することができます。ポーズMODの解除を忘れて歩いたらエクソシストになった…とかのアレです。これを利用すると複雑なアニメーションを再生できます。
kfファイル内のデータ
様々なデータが設定されていますが、よく使われる項目について少し説明します。
Priority
他に同時に再生しているkfファイルがある場合、そのBoneをどちらのkfファイルが動かすか、そのための優先度です。比較して高い方のkfファイルのアニメーションだけが実行されます。
Priorityの値はケースバイケースで様々な値をとります。「Idle」は全てのBoneが20で最低、「Forward」は30で「Idle」を全て上書きする。
「CastSelf」(スペルを唱える)なんかは上半身のPriorityが高く、下半身は低いので他のアニメーションを邪魔しません。「Stagger」(ふらつき)はかなり高めなので、これが再生されると他の多くの操作を受け付けなくなります。
また実はヘッドトラッキング(自動的に相手に顔を向ける機能)はThe show must go on様(の引用文)によると90ほどのPriority値で行われており、それより高い値でキャンセルできるとのことです。
例えばチョキを出すだけの(他のアニメーションと合成したい)SpecialIdleを作るとしたら、手のBoneだけPriorityを99とか高くして、それ以外のBoneを1にすればチョキのアニメーションだけ適用されます。
Cycle Type
最後のフレームまで再生した後どうするのかをここで指定します。これにはCYCLE_LOOPとCYCLE_CLAMPがあります。
CYCLE_LOOP
再び最初のフレームに戻りループ再生します。1フレームしかないkfファイルなら、その1フレームをずっと実行します。次のループに入ると、最初のフレームで設定された位置・回転・スケールに戻ってから同じ動きが繰り返されます。
CYCLE_CLAMP
1度きりの再生であり、最後のフレームまで行ったら終了、SpecialIdleは解除されます。CYCLE_CLAMPが繰り返された場合、次の周回では最後のフレームの位置・回転・スケールからスタートします。
Text Keys
開始フレームや終了フレーム、攻撃の当たり判定フレームなどをここで定義しています。「start」と「end」は必ず必要で、その間に他のValueを入れることができます。
start
開始のフレームです。必ず1となります。Blenderで出力されたkfファイルには「1/Idle: Start/Idle: Loop Start〜」のようなValueが入っていることがありますが、これらは「start」と「end」に変えます。
end
終了のフレームです。通常は一番最後のフレームを指定しますが、CYCLE_LOOPで開始と終了フレームが同じポーズの場合は同一の動きのフレームが2連続することになってしまうので、あえて-1するのもアリのようです。
blend: [n]
新しいkfファイルが再生される際はそれまでのkfファイルのポーズからの変化があるわけですが、その新しいポーズへの移行をゆっくり滑らかに行うというのがこの「blend: n」です。「n」には数字を入れ、滑らかさはその大きさで調整されますが、「nフレームかけて行う」のような厳密さはないようです。Priorityと「blend: n」についてはTipsで別に詳しく説明しています。
sound: [soundオブジェクトID]
CSの「Miscellaneous > Sound」で設定されているサウンドオブジェクトIDを指定することにより、音を出すことができます。音として使える音声ファイルの制約についてはTipsの音声ファイルの項目をどうぞ。
blendファイル
Blenderでそのまま読み込めるファイル形式です。モデルや作業中の内容はもちろん、メニューの表示状態、画面構成などありとあらゆるものが保存されます。
例えば複雑なnifファイルがあるとして、それを読み込むためにImportすると処理時間が結構かかったりするので、適宜blendファイルを保存しておけば作業効率が上がります。