Poser Hotkeys Plus(PHP)用ポーズMODの作成方法です。
主にポーズを作成した後にポーズMODとして配布されるモッダー向け資料です。
PHPでは既に主要なポーズMODのプリセットを公開しているのでポーズMODと対応プリセットをインストールするだけで使えますが、ポーズデータのみ配布されている場合は他のポーズMODに上書きして使用するしかありません。
これまでは指輪方式のポーズプレイヤーが主流だったのでリング方式のポーズMOD化にはCKとスクリプトの両方を使用しなければならず敷居が高かったのですが、今回はTes5Editを使ってPHP用のポーズMODが比較的簡単に作れるようになっています。
例として今回はポーズデータのみ公開している「Immersive Animated Poses」をポーズMOD化してみます。
上記にオブジェクトポーズは含みませんがついでなので一緒に記述します。
①ディレクトリの作成とファイルのコピー
- 初めにポーズMOD化に必用なディレクトリを構成します。
ここでは例としてポーズデータの格納フォルダに「IAPoses」というフォルダ名をつけていますが任意のMOD名に変えてください。 (アンダーバー等の記号は使わないこと)
ポーズ格納フォルダを作成後ポーズデータ(hkx)を「Meshes\actors\character\animations\MOD名」にコピーします。
- オブジェクトポーズを含むポーズの場合はオブジェクトデータ(nif)を「Meshes\AnimObjects\MOD名」にコピーしオブジェクト用のテクスチャも「Textures」にコピーてしてください。
②空のespを作成
- ポーズMODの作成に必要な空のespファイルを作成するためにCKを起動します。
- File→DataからSkyrim.esmにチェックを入れて読込みます。
- File→Saveから適当な名前を入れて保存し終了します。
③Tes5Editでアニメーション(ポーズ)を登録
- スカイリムのアニメーション関連はCKから追加する事が出来ないので②で作成した空のespをTes5Editで開きます。
- espを選択して右クリック→「Add」→「IDLE - Idle Animation」を選択します。
- 作成された「Idle Animation」の項目をクリックしてさらに「Add」→「IDLE - Idle Animation」を選択します。
- New FormIDの画面が出たらそのままOKします。
- 作成されたIDを選択して右画面Viewに以下を入力します。
EDID - Editer ID: 「FNIS_IAPoses_P1」 (任意の名前)
DNAM - FileName: 「Actors\Character\Behaviors\0_Master.hkx」
ENAM - Animation Event: 「IAPoses_P1」 (重要)
※入力時には空白の入力欄で右クリックして「Add」を押すと一度だけWarning画面が出るので「Yes I am...」を押して再度右クリックをして「Edit」を選択します。
※Editer IDは他のMODと被っても問題ないですが、Animation Eventは他のMODと被ると動作しないのでよく考えて決めてください。
- レコードを一個ずつ作ると大変なので、三ヶ所を入力したら左画面の編集中FormIDを右クリック→「Copy as new recode into...」を選択し
ます。
EditerIDの変更画面が出たら「FNIS_IAPoses_P2」(任意の名前)を入力しOKします。
コピー先のespを聞かれるので現在のespにチェックを入れてコピーを作成します。
これを編集中のespにポーズ分だけコピーしてください。(レコードを複数選択した状態でコピーを作ると早いです)
(コピー時は自動反映されないので一旦ツリーを閉開してツリーを更新する必要があります)
ツリーを更新すると上記で入力したデータがコピーされているので「ENAM - Animation Event」を忘れずに全て変更してください。
- オブジェクトポーズを含む場合はさらにAnimObjectsの登録作業が必要です。(ポーズのみの場合は飛ばしてください)
espを選択して右クリック→「Add」→「ANIO - Animated Object」を選択します。
- 作成された「Animated Object」の項目をクリックしてさらに「Add」→「IDLE - Idle Animation」を選択します。
- New FormIDの画面が出たらそのままOKします。
- 作成されたIDを選択して右画面Viewに以下を入力します。
EDID - Editer ID: 「FNIS_IAPoses_O1」 (任意の名前)
DNAM - Model Filename: 「AnimObjects\MOD名\オブジェクト名.nif」 (オブジェクトのパス)
BNAM - Unload Event: 「AnimObjectUnequip」 (ポーズ解除時にオブジェクトを消すイベント )
- 三ヶ所を入力したら(6.)と同じ要領で左画面の編集中FormIDを右クリック→「Copy as new recode into...」を選択します。
EditerIDの変更画面が出たら「FNIS_IAPoses_O2」(任意の名前)を入力し ます。
これを編集中のespにポーズ分だけコピーしてください。
ツリーを更新すると上記で入力したデータがコピーされているので「DNAM - Model Filename」を忘れずに全て変更してください。
④FNISのListファイルの作成
- ③で登録したアニメーションをFNISに関連付けするための定義リストを作成します。
「Meshes\actors\character\animations\MOD名」に「FNIS_MOD名_List.txt」を作成します。
例ではフォルダ名に「IAPoses」と付けているのでファイル名は、「FNIS_IAPoses_List.txt」となります。
※フォルダ名とListのファイル名が一致していないとFNISがエラーを吐きます。
またフォルダ名を「IA_Poses」などアンダーバーを使用した場合もエラーとなるので記号は使わないで下さい。
- 作成した定義リスト「FNIS_MOD名_List.txt」を開き下記の様に記述します。
オブジェクトポーズの場合はここを飛ばして(3.)を行ってください。
b -h IAPoses_P1 IAP01.hkx
「b」はベーシックで通常のポーズに使用し、「-h」はヘッドトラックを有効にするオプションです。
(PHPではこの「-h」オプションがある場合にポーズ時のヘッドトラッキングオプションが有効になります)
「IAPoses_P1」は③で登録した「ENAM - Animation Event」を入れます。
「IAP01.hkx」はポーズ格納フォルダにあるポーズのファイル名を入れます。【追記】
FINS v5.5以上ではポーズ中に移動する事ができません。
ただし「-h」オプションの後に「,md」を追加することでポーズ中に移動が可能になります。
b -h,md IAPoses_P1 IAP01.hkx
※,mdは-hの追加オプションなので-hは必須です。
- オブジェクトポーズの場合は下記の様に記述します。
o IAPoses_P1 IAP01.hkx FNIS_IAPoses_O1
「o」はオブジェクトポーズに使用するオプションです。
「IAPoses_P1」は③で登録した「ENAM - Animation Event」を入れます。
「IAP01.hkx」はポーズ格納フォルダにあるポーズのファイル名を入れます。
「FNIS_IAPoses_O1」は「AnimObjects」で登録した「EditerID」を入れます。
これをポーズ分だけ記述します。
【追記】
FINS v5.5以上ではポーズ中に移動する事ができません。
ただし「-h」オプションの後に「,md」を追加することでポーズ中に移動が可能になります。
o -h,md IAPoses_P1 IAP01.hkx FNIS_IAPoses_O1
※,mdは-hの追加オプションなので-hは必須です。
⑤Behaviorの作成
- 追加アニメーションをスカイリムに組込むために必用なBehaviorを作成します。
FNISのFNIS_for_Modders内にある「GenerateFnisforModders.exe」を起動します。
- Generate Mod Behaviorボタンを押して、④で作成した「FNIS_MOD名_List.txt」を読込みます。
- 下記のようなメッセージが出たらツールを閉じます。
81 animations for1 mods successfully included ()
FNIS_MOD名_Behavior.hkx successfully created.
「Meshes\actors\character\behaviors」に移動して「FNIS_MOD名_Behavior.hkx」が作成されていればOKです。
(MO経由の場合はoverwrite内に作成されています)
※GenerateFnisforModders V5.5以上で作成するとポーズジング中は移動できなるのでポーズ用途でBehaviorを作成する場合はV5.1.1で作成する事をお勧めします。(移動できなくなるのがBehavior本来の動作ではあります)
⑥JSONプリセットの作成
- Poser Hotkeys Plusで読込めるプリセットを作成します。
本家Poser HotkeysのOptionalファイルにある「PoserDataGen.exe」を実行します。
- ①で作成したMOD(フォルダ名)にチェックを入れて「Generate Poser Data」をボタンを押します。
「SKSE\Plugins\PoserHotKeys\PoserData」に「MOD名.json」が作成されていればOKです。
- この時点で使用する事は可能ですが、メニューを表示した際に表示されるポーズ名等がポーズデータの格納フォルダ名及びList.txtから抽出されたAnimEvent名で表示されるので分り易く編集します。
- 「MOD名.json」をテキストエディタで開きます。
自動生成したJSONはそのままでは編集が困難なのでJSON整形ツールを使って読みやすくします。
- 整形したJSONを以下のように編集します。
編集箇所は「ポーズMOD名」「カテゴリ名」、「ポーズ名」の三ヶ所です。
例:
ポーズMOD名:
"name": "IAPoses" → "name": "Immersive Animated Poses"
カテゴリ名:
"packnames": ["iaposes_p"] → "packnames": ["IA Poses"]
ポーズ名:
"iaposes_p" : ["IAPoses_P1"] → "ia poses" : ["IA Poses1|IAPoses_P1"]
↓編集後のサンプル↓
カテゴリ名(packnames)に大文字を含めた場合、対応するキー名は必ず小文字で入力してください。(キー名に半角大文字が含むと読込めません)
ポーズ名(packnames)の[]内とそのポーズ(AnimEvent)の前方に表示したい名前を追加したあと「|」で区切ることによりメニューのポーズ名の表記が前方の文字列で表示されます。
日本語も使用できますがその場合は保存時に「UTF-8」で保存してください。(そのまま保存するとゲーム内で文字化けします)
- 編集後のJSONに構文エラーがないかJSON整形ツールに再度出力しエラーが出ていれば修正してください。
問題がなければこのようなメニューが出るようになり独立化ポーズMODの完成です。
Comment