「GND.nif作成」の編集履歴(バックアップ)一覧に戻る

GND.nif作成 - (2015/01/08 (木) 19:56:55) のソース

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

#contents

**必要なもの
Blender 最新
nifskope

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

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

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

***UV展開
これも重要な部分なのですが、今回は簡単にやっておきます。
スザンヌを選択してTabキーでエディトモードへ、Aキーで全選択します。
&ref(EditMonkey.jpg)
こういう画面になったと思います、可愛いですね。
次にUキーを押してから「Project from View (Bounds)」をクリックしてください。
これは、3Dビューから見た通りにUV展開し、その後で枠に合わせて拡大します。
&ref(MonkeyUV.jpg)
こういうUV展開図になるはずです。
かなり問題があるUV展開の仕方なのですが、今回はこれでUV展開を完了とします。

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

****面を滑らかにする
念の為、面を滑らかにしておきます。
スザンヌを右クリックし、Editingパネル&ref(EditingPanel.jpg)を選びます。
ここからSet Smooth&ref(SetSmooth.jpg)で完了です。
&ref(SmoothMonkey.jpg)

****マテリアルの設定
Buttons WindowのShading&ref(Shading.jpg)をクリックしてください、マテリアル設定画面になります。
Add Newボタンでマテリアルを追加し、Texture buttons&ref(TextureButtons.jpg)をクリックしテクスチャ設定画面へ。
またAdd Newでテクスチャを追加し、Texture TypeをImageへ。&ref(TextureType.jpg)
次に出てきたImageタブのLoadから適当な画像を読み込む必要があります。&ref(ImageTab.jpg)
不思議に思われるかもしれませんが、これをやらないとエラーが出ます。注意してください。
&ref(LoadedImage.jpg)
これで使う画像が設定された状態です、このようにDドライブ直下に適当な画像を置いておくのも便利かもしれません。
次にまたMaterial Buttons&ref(MaterialButtons.jpg)でマテリアル設定画面に戻ります。
Map Inputタブ&ref(MapInput.jpg)をクリックし、UV&ref(UVbutton.jpg)をクリック。
これでマテリアル関係の設定は完了です。

****モデルの位置と角度調整
まず3Dビューでテンキーの7を押してみましょう、スザンヌはちゃんとアゴが下ですね。
しかしこれではゲーム内での初期表示は上下が逆になります、つまり
&ref(ReverseMonkey.jpg)
これで正しい向きなわけです。
他にも位置が中心より離れすぎている場合などは真ん中に移動しておきましょう。

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

**Nif出力
いよいよNifScriptsでNifファイルを書き出します。
まずスザンヌを右クリックで選択し、左上の File > Export > Netlmmerse/Gamebryo (.nif & .kf & .egm)でスクリプトを起動。
出力先を選び Export NIF/KFをクリックします。
&ref(ExportSetting.jpg)
スクリプトの設定は上の通りですが、赤で囲んだ部分以外は特にいじる必要はないです。
左下のOkを押せば完了です。

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

***出力したNifの編集
とりあえず先ほど書き出したNifファイルをNifskopeで開いてみましょう。
この開いた直後に Block Detailsの NiHeaderを編集してしまいます。
&ref(NifSkopeStart.jpg)
図の NiHeaderを開き、
&ref(NiHeader.jpg)
 User Version | 11 → 12
 User Version 2 | 34 → 83
このように編集します。
次に Block Listの NiTriStripsまで開きます。
&ref(NiTriStrips.jpg)
BSShaderPPLightingProperty、NiMaterialPropertyなど色々な子ノードがありますが、NiTriStripsData以外を全て消してしまいます。
BSShaderPPLightingPropertyは選択して Ctrl+Deleteキー、その他は右クリックして Block > Removeが確実だと思います。
&ref(DeletedNodes.jpg)
上の図のようになりましたね。
最後に上のメニューから 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キーでペーストします。
&ref(PastedMesh.jpg)
このようになりますが、ペーストした NiTriStripsの名前を見てください。
BSXとなっていますね(違う名前の場合も多い)、このままだとゲーム内で予期しない時に落ちたりするので修正しましょう。
NiTriStripsを選択し、Nameの Txtと書かれたボタンをクリック。
&ref(NiTriStripsName.jpg)
テキスト編集画面が出てくるので、「Monkey」とでも名前を変更しておきましょう。

次に「GauntletsGND:0」という名前の NiTriShapeノードを開いてください。
BSLightingShaderPropertyというノードがありますね、それを選択しCtrl+Cで続けてCtrl+V。
&ref(AddedBSLightingShaderProperty.jpg)
上の図のようになり、「Monkey」という名前の NiTriStripsを選択し Block Detailsの一番下の Propertiesを開きましょう。
先ほど追加した BSLightingShaderPropertyの先頭に数字が書かれていますね、これを Properties下の Propertiesに書き込みます。
&ref(CopyBSLightingShaderPropertyNum.jpg)
BSLightingShaderPropertyが NiTriStripsの子ノードになったのが分かるはずです。
これでメッシュの移植は完了です、もう最初にあった GauntletsGND:0は必要無いので選択しCtrl+Deleteで消してしまいましょう。

***テクスチャの設定
このままだとスザンヌは鉄のガントレットのテクスチャのままです、修正しましょう。
NiTriStrips > BSLightingShaderPropertyと開き、BSShaderTextureSetを選択。
Block Detailsに詳細が表示されるので Texturesを開きます。
Textures下の Textures一番目を Textures\Test\Monkey.dds、二番目をTextures\Test\Monkey_n.ddsとします。
&ref(EditedTextures.jpg)
このぐらいでもう一度上書き保存しておきましょう。

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

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

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

****コリジョンの再生成
またNiTriStripsを右クリックしましょう。
Havok > Create Convex Shapeをクリックし、コリジョンを再生成します。
この時出てくる数値を入力できる欄は、コリジョンの細かさ・正確さです。
小さいほど正確で重くなるはずです、今回は 0.1にしてOkをクリックしましょう。
メッセージが出るのでもう一度クリック。
&ref(MonkeyCollision.jpg)
このようにメッシュの出っ張ったところに合わせて線ができると思います、これでコリジョンは作れました。

****コリジョンの移植
このままだとメッシュが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ファイルは上書きされたはずです、いよいよ確認してみましょう。

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


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



&ref(SS.jpg)
目安箱バナー