「Nif Tips」の編集履歴(バックアップ)一覧に戻る
Nif Tips - (2016/06/22 (水) 02:01:44) のソース
NIF Tips #contents *BSLightingShaderPropertyのデータ Skyrimのマテリアル設定ノードである[[BSLightingShaderProperty>BSLightingShaderProperty]]についてのデータベースです。 自己発光やグロスの強さなど設定できます。 *NifSkopeの解説 Nameのところにマウスを乗せておくと、その項目が何を意味するのか表示されます。 当然英語なのですがわかりやすいです。 *ノード番号の変更 Ctrl+矢印キー下か上 * ノードの追加 右クリック→Node→Attach Node *特定の部位(ノード)につける 右クリック→Node→Attach Node→NiStringsExtraData NameをAttachT、DataをNamedNode&ノード名にする。 例えばNamedNode&NPC Head [Head]だとこれを追加したnifは頭につく(xyz軸の基準点が頭になる)。 *BSDismemberSkinInstanceからNiSkinInstanceに変換 たまにオブジェクト(口や目など)がNiSkinInstance場合があって、これをあわせないと表示されなかったり乱れたりします。 NifSkopeでBSDismemberSkinInstanceを選択→右クリック→Block→Convert→NiS...→NiSkinInstance *nifskopeでのエフェクトアニメーション調整 本格的なエフェクトアニメーションの改変は難しいですが、位置やサイズ、速度の調整ならできます。 **基礎知識 &bold(){NiControllerManager}がアニメーション設定の親玉です。 &bold(){NiMultiTargetTransformController}はここで登録したものを一括してトランスフォーム操作(移動・回転・拡縮)できます。最初にあるのはBSFadeNodeとNiNodeを指定するのが通例。 &bold(){NiControllerSequence}は各シーケンスの設定です。エフェクトアニメーションはたいていシーケンスという区切りで分かれています。 &bold(){NiDefaultAVObjectPalette}はアニメーションさせるオブジェクトの指定です。この一覧にないオブジェクトはアニメーションできません。 この四つは必須です。 ***エフェクトの再生方法 &color(#0b5394){&bold(){BSBehaviorGraphExtraData}}の&bold(){Behaviour Graph File}にBehaviorファイルを指定することで再生方法を変更できます。 |再生方法|Behaviorファイル|シーケンス名など解説| |開始と終了のある持続|Magic\BeginLoopEnd.hkx|&bold(){mBegin},&bold(){mLoop},&bold(){mEnd}の各開始、持続、終了のシーケンスを持つもの。例えば灯火の魔法エフェクトなど| |自動再生|&bold(){GenericBehaviors\Autoplay.hkx}|シーケンス名は&bold(){AutoPlay}。または&bold(){AutoLoop}もつけれる。ドラゴンのブレスなど| |ロード時再生|&bold(){Magic\IdleOnLoad.hkx}|ロード時に再生される。| ***シーケンスの中身 &color(#0b5394){&bold(){NiControllerSequence}}下のツリーを分解すると、 &bold(){Controller(制御)}と&bold(){Interpolator(補完)}の2つのタイプに分けられます。 ひとつのノードにつき、この2つが必要になります。 どのノードが何を割り当てられているかはツリーを見たただけではわからないですが、 NiControllerSequenceにあるControlled BlocksはどのNiNodeがどのControllerとInterpolatorが付いているかを確認できます。 &color(#0b5394){&bold(){NiTextKeyExtraData}}はシーケンスの再生時間を指定できます。Text Keys→Text Keys→EndのTimeが再生時間です。 リロードしないと反映されないので一旦Saveしてリロード(Alt+X)します。 ※エフェクトがEndの時間でも消えない場合 物によっては勝手に消えるんですが、エフェクトそのものの終了はNiTextKeyExtraDataで&bold(){AnimEnd}を指定しないといけません。 ***シーケンス全体の速度の調節 NiControllerSequenceにあるFrequencyは頻度というよりは周期なのでエフェクトの再生速度が変わります。 これもリロードしないと反映されないので一旦Saveしてリロード(Alt+X)します。 2.0にした場合、2倍速く再生されますが、アニメーションの総再生時間は変わりません。 これはStopTimeまでの時間を基準にした場合の周期です。 例えば1.3秒のアニメーションを倍速く半分の時間にしたい場合はFrequencyは2.0 NiTextKeyExtraData→Text Keys→Text Keys→EndのTimeの指定を0.65。 シーケンスのStopTimeはそのままです。 ***エフェクトの動きやタイミングの変更 Block Listのウィンドウ内のNiControllerManager→NiControllerSequenceのツリーを開く BlockDetailsのウィンドウに移って編集したいオブジェクト名のControlled Blocks→Interpolatorの青矢印をクリック。 移動したツリー(NiTransformInterpolator)下のNiTransformDataを選択→Block DetailsのScalesが大きさ、Translationsが移動です。 Keys→Keysと開いてTimeが時間、Valueが大きさまたは座標軸です。 時系列順にKeysが並んでます。ここを変更してどのタイミングでどれだけ大きさ・移動を変更するか決めれます。 Timeが0.0秒の時にScalesのValueが1.0倍で、Time1.0秒で2.0倍なら、Time0.5秒は1.5倍になります。Keyがなくても勝手に補完してくれます。 ***表示/非表示のアニメーションノード NiVisController→表示非表示のコントロール 直前のノードのNiBoolInterpolator→NiBoolDataでタイミングの編集可能。 KeysのところにTimeとValueがあるのでそこで。Value 1が表示、0が非表示です。 **Staticオブジェクトのコリジョン作成 ※ここに書かれているのは古い方法で、古いBlenderとMorrowind形式を使わなくてもできます。 [[Nifにコリジョンを追加する方法 2015年版>>http://s1925.blogspot.jp/2015/02/nif.html]] NifSkopeで生成できるコリジョンは自動生成なので、自由な形にすることはできません。ですが、いくつかのツールを併用して自由な形のコリジョンを作成する事ができます。 ここではすでに完成したNifファイルに、自由な形のコリジョンを追加する方法を解説します。 この方法ではStaticつまり建物やイス等の固定されたオブジェクトのコリジョンしかできません。 Staticオブジェクト以外のコリジョン作成はこの下の項目で解説します。 (Staticオブジェクト以外のテンプレート設定するとそのテンプレートのコリジョンが出力してしまいます。) [[ツール]]の項目を参照に、ChunkMergeをダウンロードしてください。 ***コリジョンメッシュの作成 最初にBlenderでコリジョンメッシュを作成。Box等で簡単なコリジョンメッシュ用のモデルを作ります。 #ref(img197.jpg) 完成したらLogicからコリジョンの指定。 #ref(img199.jpg) Objectから詳細の設定。 #ref(img202.jpg) うまくコリジョンの設定ができていれば、Texturedモードでこのように表示されるはずです。 #ref(img200.jpg) コリジョンとオブジェクトの両方を選択して&u(){&bold(){Morrowind Nif}}でエクスポート。設定は下記の通り。 #ref(img201.jpg) すでに完成しているNifファイルと区別するため、***Morro等の名前を付けておきます。 ***ChunkMergeによるコリジョンの差し替え。 ChunkMergeを起動。 +最初にNif.xmlファイルを読み込みます。これはNifSkopeのフォルダにあるのでそれを指定。 +templateディレクトリの指定。自作Nifに近いSkyrimNifを選択。(StaticならStatic、ActiverならActiverのNif) +TESV.exeを選択。 #ref(img204.jpg) Nif-Fileは自作のNif(既存のコリジョン流用版)、Collision-Fileに先ほど出力したMorrowindのNif、Templateは自作したNifに一番近いファイルを指定。ChunkMergeはコリジョンメッシュのみをMorrowind Nifから移植するものなので、その他のコリジョンノードはSkyrimのものをそのまま利用します。ですので、Templateで指定するNifが重要になってきます。座れるイスのNifはmeshes/furniture下にあるので、今回はそれを指定しています。 Convertボタンを押してNif converted successfullyと表示されたら完成。 CKで配置し、F4キーでコリジョンの形を確認できます。 #ref(Collision2.jpg) 左が既存のコリジョン流用版、右が自作コリジョンです。 まだ開発途中のツールですので、エラーが起きる可能性もあります。バックアップをとりながら作業を進めていってください。 &bold(){・うまくいかない時} 原因が全く不明ですが、Blenderで作ったコリジョンによってはChunk MergeでNif converted successfully.まで辿りつけずに、途中で止まってしまう場合があります。 正常に出力できるコリジョンのblenderとnifファイルを用意しました。ボックス状のものがコリジョンなのでそれを好きな形に変えて使ってください。 [[正常に出力できるコリジョン>http://cyclotron.moe.hm/up/skyrim/fileup/src/cysk0603.7z.html]] **動くオブジェクトのコリジョン作成 皿や果物などの動くオブジェクトのコリジョンを自由に作ることは出来ないですが、上記のStaticオブジェクトでコリジョンを生成してから、動くオブジェクトに改変することはできます。 上記Staticオブジェクトのコリジョン作成を参考にChunkMergeでnifにコリジョン移植するまで進めます。&bold(){テンプレートは必ずイス(meshes\furniture\common\commonchair01.nif)等のStaticオブジェクトを指定してください。} ※Staticオブジェクトではないテンプレートの場合はテンプレートのコリジョンを持ってきてしまいます。 形や材質の近いオブジェクトを探して用意します。(FO3 Archive等でSkyrim - Meshes.bsaから探す) 例えばティーカップを作ったなら、コップのnif(meshes\clutter\glazedcup01.nif)やジョッキ(meshes\clutter\dining set\basictankard01.nif)を元にします。 元にするnifのbhkRigidBodyの設定を動くオブジェクトにしたいnifのbhkRigidBodyT()の設定をほとんどすべて移植します。 #ref(collision_nifsetting.png) 合わせなくてもいいのは、Shape、TranslationとCenter(この2つは数値すべてを0にしないとコリジョンの位置がおかしくなる)です。 重要なのは&bold(){Inertia(イネーシャ、慣性)}でここの設定をしないと風に流れるかのごとく等速直線運動繰り出します。 Massは物理エンジン上の重さ。ゲーム内で動きが軽すぎると思ったらここはいじっても良いです。 Motion Systemが基本的な挙動の違いを決めてます。 固定オブジェクトは&bold(){MO_SYS_BOX_STABILIZED}、動くのは&bold(){MO_SYS_SPHERE_INERTIA}がほとんどだと思います。 落としたり触ったりした時の音などのマテリアルの設定はbhkCompressedMeshShapeData→Chunk Materials→Chunk Materials→Skyrim Materialです。 bhkMoppBvTreeShapeもおそらく設定する必要があります。 例えばSKY_HAV_MAT_SOLID_METALを設定すると金属音(金属皿やゴブレットなどはこの設定)になります。