SkyrimMOD作成wiki

GND.nif作成

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

GND.nif作成方法

GND.nifとは、装備を地面に置いた時やアイテムインベントリで表示するモデルの事です。
「helmetGND.nif」など、最後に「GND」という文字列が付いている事で区別している事が多いですね。
装備モデルそのままだとコリジョンがないので別に作る必要があります。
慣れれば簡単なので一緒に作ってみましょう。


必要なもの


Blenderで入出力を参照
Blenderでの最低限のnifの読み書きと、nifskopeでの編集が出来ればOKです。

モデル作り

まずGND.nif用のモデルを用意する必要があります。
今回はチュートリアルなので、簡単なモデルを使っていきましょう。

モデリング

分かりやすいモデルとして、Blenderから簡単に追加できるメッシュ「スザンヌ」に登場して貰いましょう。
Blenderを起動して要らないオブジェクトを削除します。(A→X→Delete)
Shift+Aキー→Mesh→Monkeyまたはツールシェルフ(Tキー)からCreateタブのMesh:からMonkeyを選びます。

これがスザンヌちゃんです、可愛いですね。
モデリングはこれで終了とします。

UV展開

これも重要な部分なのですが、今回は簡単にやっておきます。
スザンヌを選択してTabキーでエディトモードへ、Aキーで全選択します。

こういう画面になったと思います、可愛いですね。
次にUキーを押してから「Project from View (Bounds)」をクリックしてください。
これは、3Dビューから見た通りにUV展開し、その後で枠に合わせて拡大します。

こういうUV展開図になるはずです。
かなり問題があるUV展開の仕方なのですが、今回はこれでUV展開を完了とします。

Nif出力への準備

このままNifへ書き出すと色々と問題があるのでそれらを解決していきます。
GND.nifは基本的にウェイト付けやスケルトンは不必要です。

面を滑らかにする
念の為、面を滑らかにしておきます。
スザンヌを右クリックし、Editingパネルを選びます。
ここからSet Smoothで完了です。

マテリアルの設定
Buttons WindowのShadingをクリックしてください、マテリアル設定画面になります。
Add Newボタンでマテリアルを追加し、Texture buttonsをクリックしテクスチャ設定画面へ。
またAdd Newでテクスチャを追加し、Texture TypeをImageへ。
次に出てきたImageタブのLoadから適当な画像を読み込む必要があります。
不思議に思われるかもしれませんが、これをやらないとエラーが出ます。注意してください。

これで使う画像が設定された状態です、このようにDドライブ直下に適当な画像を置いておくのも便利かもしれません。
次にまたMaterial Buttonsでマテリアル設定画面に戻ります。
Map Inputタブをクリックし、UVをクリック。
これでマテリアル関係の設定は完了です。

モデルの位置と角度調整
まず3Dビューでテンキーの7を押してみましょう、スザンヌはちゃんとアゴが下ですね。
しかしこれではゲーム内での初期表示は上下が逆になります、つまり

これで正しい向きなわけです。
他にも位置が中心より離れすぎている場合などは真ん中に移動しておきましょう。

テクスチャ作り

少し早いですがテクスチャを作っておきます。
普通は装備のテクスチャを流用するのであまり意識する必要は無いです。
16×16のカラーマップ(Monkey.dds)とノーマルマップ(Monkey_n.dds)を作り、
Skyrimフォルダの Data\Textures\Testにでも放り込んでおきましょう。

Nif出力

いよいよNifScriptsでNifファイルを書き出します。
まずスザンヌを右クリックで選択し、左上の File > Export > Netlmmerse/Gamebryo (.nif & .kf & .egm)でスクリプトを起動。
出力先を選び Export NIF/KFをクリックします。

スクリプトの設定は上の通りですが、赤で囲んだ部分以外は特にいじる必要はないです。
左下のOkを押せば完了です。

NifSkopeでの編集

NifSkopeは出来るだけ最新のものを使いましょう。

出力したNifの編集

とりあえず先ほど書き出したNifファイルをNifskopeで開いてみましょう。
この開いた直後に Block Detailsの NiHeaderを編集してしまいます。

図の NiHeaderを開き、
User Version | 11 → 12
User Version 2 | 34 → 83
このように編集します。
次に Block Listの NiTriStripsまで開きます。

BSShaderPPLightingProperty、NiMaterialPropertyなど色々な子ノードがありますが、NiTriStripsData以外を全て消してしまいます。
BSShaderPPLightingPropertyは選択して Ctrl+Deleteキー、その他は右クリックして Block > Removeが確実だと思います。

上の図のようになりましたね。
最後に上のメニューから Spells > Batch > Update All Tangent Spaces をしてください、ゲーム内でノーマルマップが適用されるおまじないです。
これで一旦 File > Save Asで上書き保存してしまいましょう。
このNifファイルは次でも使うので開いたままにしておいてください。

メッシュの移植

バニラのBSAファイルを解凍している事を前提で進めます。
Skyrim - Meshes.bsaの meshes\armor\iron\male\gauntletsgnd.nifあたりを適当な場所へコピーしてください、先ほどのNifと同じ場所でも構いません。
これを「MonkeyGND.nif」とでもリネームしましょう。

次にこのNifを開きます。
先ほどのNifとこれ、つまり二つのNifファイルを開いた状態になります。
Blenderで作ったNifの NiTriStripsを選択し、Ctrl+Cキーを押してコピーしてください。
そして MonkeyGND.nifの BSFadeNodeを選択し、Ctrl+Vキーでペーストします。

このようになりますが、ペーストした NiTriStripsの名前を見てください。
BSXとなっていますね(違う名前の場合も多い)、このままだとゲーム内で予期しない時に落ちたりするので修正しましょう。
NiTriStripsを選択し、Nameの Txtと書かれたボタンをクリック。

テキスト編集画面が出てくるので、「Monkey」とでも名前を変更しておきましょう。

次に「GauntletsGND:0」という名前の NiTriShapeノードを開いてください。
BSLightingShaderPropertyというノードがありますね、それを選択しCtrl+Cで続けてCtrl+V。

上の図のようになり、「Monkey」という名前の NiTriStripsを選択し Block Detailsの一番下の Propertiesを開きましょう。
先ほど追加した BSLightingShaderPropertyの先頭に数字が書かれていますね、これを Properties下の Propertiesに書き込みます。

BSLightingShaderPropertyが NiTriStripsの子ノードになったのが分かるはずです。
これでメッシュの移植は完了です、もう最初にあった GauntletsGND:0は必要無いので選択しCtrl+Deleteで消してしまいましょう。

テクスチャの設定

このままだとスザンヌは鉄のガントレットのテクスチャのままです、修正しましょう。
NiTriStrips > BSLightingShaderPropertyと開き、BSShaderTextureSetを選択。
Block Detailsに詳細が表示されるので Texturesを開きます。
Textures下の Textures一番目を Textures\Test\Monkey.dds、二番目をTextures\Test\Monkey_n.ddsとします。

このぐらいでもう一度上書き保存しておきましょう。

コリジョンの編集

コリジョンとは当たり判定の事です。
装備を捨てた時にちゃんと床に着地しますね、これはコリジョンのおかげです。
別に流用でもあまり気にならないのですが、今回はスザンヌに合わせたコリジョンをNifSkopeで作ってみましょう。

Nifの保存
かなり重要ですから忘れないでください。
File > Save As です。

メッシュの縮小
NiTriStripsを右クリックしましょう。
Transform > Scale Verticesをクリックし、XYZ軸全てを 0.1にします。
(これはコリジョンがメッシュの1/10の為?)
最後に Scaleをクリックし適用してください、これでスザンヌが縮小されたはずです。

コリジョンの再生成
またNiTriStripsを右クリックしましょう。
Havok > Create Convex Shapeをクリックし、コリジョンを再生成します。
この時出てくる数値を入力できる欄は、コリジョンの細かさ・正確さです。
小さいほど正確で重くなるはずです、今回は 0.1にしてOkをクリックしましょう。
メッセージが出るのでもう一度クリック。

このようにメッシュの出っ張ったところに合わせて線ができると思います、これでコリジョンは作れました。

コリジョンの移植
このままだとメッシュが1/10のままです。
なのでコリジョンのみ先ほど保存した状態までコピーします、bhkCollisionObjectを選択しCtrl+Cでコピーしてください。
そして File > Loadから今のNifファイルを読み込み、つまりリロードですね。
読み込まれたら BSFadeNodeを選択しCtrl+Vでペーストします。
BSFadeNode以下の旧コリジョンは必要無いのでCtrl+Deleteで削除してしまいましょう。
再び BSFadeNodeを選択し、Collision Objectの欄をペーストしたbhkCollisionObjectの数字にします。
最後に念の為、NiTriStripsを右クリック > Flagsで Collision Detectionが Continueになっているのを確認しておきましょう。(違うなら修正?)
そして保存すればGND.nifの完成です。

ゲーム内での確認

実際に出来ているかどうか、ゲーム内で確認してみましょう。
出来上がったNifファイルをSkyrimフォルダの meshes\armor\iron\male\gauntletsgnd.nifの位置にコピーします。
これで鉄のガントレットのGNDファイルは上書きされたはずです、いよいよ確認してみましょう。


問題ないようです、地面に置いてもある程度形に沿って転がるはずです。
これで GND.nifを作れるようになりましたね、お疲れ様でした。


表示されない場合

例えば防具やアクセサリーを作ってモデルを流用した場合はGNDは(スケルトンでアニメーションさせない限りは)ウェイトなしで出力するので、設定が変わります。
nifskopeでGNDモデルを開いてBSLightingShaderPropertyのSLSF1_Skinnedのチェックを外してください。





――――――――――――――
(2021/08/12)
細かく手順を書けない人間ですが、共有したほうが良いと考えたので
メモ書き程度ですが記載させていただきます。
今後、このページを参考に新たなMODDerが出現することを願って。

SE用、Blender2.93+NIF2.0 Dev8 使用する場合
モデリング等の大筋は変わらず。

大きく変わるのは以下の2点です

  • Blenderの出力設定
Blender2.93では大きくインターフェースが変化していますがNif出力プラグインはちゃんと存在しており、それを使用して「LE用の」Nifファイルを出力できます。
出力する際に、「オブジェクトプロパティ」のNifRootNodeをNiNodeからBSFadeNodeに変更した上で出力してください。
その上でNifOptimizerやCathedral Assets Optimizerなどを使ってNifファイルをSE用に変換すればSEでも問題なく表示可能です。

  • NIFSkopeでの操作(出力したNifファイルをメインに実行する場合)
BSInvMarker(INV),BSXFlags(BSX),bnkCollisionObject(衝突判定)は他のGNDファイルからCopyBranchで持ってきたほうが早いです。衝突判定作成手順は既存のものと一緒。

出力ファイルに上記BranchをCopyで移植した場合、各Valueの名前と番号が変わってしまうと思います。
そしてゲーム内で表示されるけれど、床に落とそうとするとCTDしてしまう場合はこのValueの名前がおかしいことが原因になっていると思われます。
BSInvMarker(INV)
BSXFlags(BSX)
この2つのValueを各々INV[1]、BSX[2]にすると表示・床落として表示させる事が問題なく可能でした
普通、名前を変えるだけでは INV[9]のように数字が変わってしまいますが、
これはHeaderタブのStringsを開くと理由がわかります。(上から順番に0,1,2,3…と番号が振られている)
なので、上から2番めのStringsをINV、3番めをBSXに書き換え、この2つ以外を各種メッシュの名前に変更、
INV[2],BSX[3]の名前をValueに設定した上、
BlockList上のなにもないところでで右クリックし「Optimize>Remove Unused Strings」を実行すると不要なStringsが消えて他のGNDファイルと謙遜ない状態になるはずです。

Update All Tangent Spaceを忘れずに実施すれば、出力ファイルを軸にしたGNDファイルの作成も可能かと思います。
お試しあれ。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー