25
2019  18:00:00

HDT対応装備のメモ: その1



NewBone201905001 000-1 Thumbnail 1


今回は、装備ModをHDTに対応させるための記事です。全部で4回になる予定です。

今回の話は、古いスカイリム、つまりSkyrim Legendary Editionのものです。Skyrim Special Editionではありません。NIFファイルを見るとデータの構造が違います。

また、BlenderとNif Toolを使用していますが、このツールも段々と更新されています。そのため説明と異なる場合があります。


実際に公開したMod


先日公開した自作ModのLady's Heartにスカートに、HDT Physics Extensionsの機能を追加することが目的で初めました。一番重要なことは、新しいBoneを追加した装備Modで使用できるSkeletonを作成すると言うことです。このSkeletonは、装備のためのSkeletonで、Skeleton.nifと言う意味ではないです。

v1.1は、HDT PEに対応していませんが、v2.0は、HDT PEに対応しています。


Mediafire



 ・AHLadysHeart v110


Mediafire



 ・AHLadysHeart v200




説明


今回の記事は、装備のModの説明をします。次に、skeleton_female.nifの中身を整理して、次回の作業のため下準備をします。一番最後にこの作業で作ったデータをダウンロードできるので、実際作業をしなくて問題ないかもです。


装備のNifファイルを調べる


Nifskopeでスカートを見るとこんな感じになっています。

大雑把な構造は、NiNodeと呼ばれるものが、親子関係のない状態で、SceneRootと言うNiNodeのChildren(子供)となっています。NiNodeの多くはBoneと呼ばれる、Skeletonを構成するパーツです。また、スカートのデータはNiTriShapeとして登録されています。


スカートのNifファイル



NewBone201905001 010-1 Info Skirt 1



Block Listの中から、スカートの形状やシェーダー等のデータを探します。スカートのデータは、NiTriShapeと言うものです。そのChildrenとして、NiTriShapeData、BSDismemberSkinInstance、BSLightingShaderPropertyで構成されています。


スカートのNiTriShape



NewBone201905001 020-1 Info Skirt 1


NiTriShapeData



スカートの頂点の情報のうち、頂点がどの位置にあるのかとか、どの頂点を組み合わせて三角形を作っているのかとか、tangentの方向だとか、UVの情報です。


BSDismemberSkinInstance



BoneとWeightの関係についての情報です。Boneと、各Boneのそれぞれの頂点に対する重み(Weight)が記録されています。それ以外にも色々あると思いますが、私がわかる範囲では、この位です。


BSLightingShaderProperty



このオブジェクトのシェーディングに関する設定です。また、テクスチャの設定は、この下にあるBSShaderTextureSetで行います。ここの設定は、パラメータをいじると見た目が変わると言うこともあって、色々なサイトで説明されています。今回は関係ないので、説明を省きます。



NiNodeとして登録されるボーン


一番上のNiNodeのChildrenとして沢山のBoneが登録されています。これらは全てNiNodeと言うノードです。Boneと言うのはキャラクターのアニメーション等に使われるものです。人間の骨のようなデータです。

NiNodeのBoneは、あまり複雑なデータではありません。TranslationとRotationとScaleと、よくわからないFlagsくらいです。Translation等の数値の説明は難しいです。次回また出てきますので、その時少し説明します。

後で使うので、Pelvis(骨盤)と言うBoneを見てみます。このPelvisはSceneRootのChildrenとなっているものと、スカートのBSDismemberSkinInstanceのChildrenとなっているものの2種類ありますが、どちらも、ノードの番号は5番です。これは、SceneRootと言うNiNodeのChildrenが、BSDismemberSkinInstanceの共通のChildrenとなっているということです。


ここら辺を、手動で登録するということはしません。Blender等からNifファイルにExportする時に自動で作れるデータです。


余談ですが、装備Modをマッシュアップする時、他のNifファイルからメッシュのデータをコピーしようとした時にエラーが出ることがあります。エラーを起こす理由は色々ありますが、移植しようとした装備のBSDismemberSkinInstanceに登録されているBoneが、一番上のSceneRootのChildrenとして登録されていない場合、エラーが起こります。

事前に素体データから不足てしているBoneを、SceneRootのChildrenとして登録しておけば、エラーを起こさず移植することが出来ます。

例えばですが、通常のブーツは、足 / Footの部分と、Calf / 脛の部分のボーンだけで十分設定できます。もしハイソックスを作製したい場合は、脚の上の方にあるThigh / 太もものBoneを、SceneRootのChildrenとして追加する必要があります。通常のデータよりも多くBoneが必要な場合は、事前にBoneを追加する作業が必要です。


XP32のSkeleton


今度は、XP32のSkeletonを簡単に見てみます。


XP32のSkeleton



NewBone201905001 110-1 Info XP32 1



スカートのNodeは、一番上のChildrenになっているだけで並列に並んでいましたが、XP32のSkeletonは、各NiNode間にChildren関係があり、階層になっています。このChildrenの関係が設定されている階層のあるBoneのデータが、HDTを利用する時に必要になります。そのため、XP32のデータを色々といじって、使えるデータに変える必要があります。

この後の作業は、新しいBoneのデータを追加するための土台となるSkeletonのデータを作るためのものです。


不要なNodeの削除


上の画像を見た通り、XP32の構造は非常に複雑です。とにかくNodeの数が多いです。全てのNodeが必要ではありませんが、実際必要なNodeがどれなのかわかりません。とは言え、このままでは使えませんので、必要なさそうな部分を削除します。Skeletonとして必要ないだろうなと思われるのは、Camera(カメラ)や、コリジョン、よくわからないString等のデータと思います。この辺りを消せば、多分問題ないと思います。

とりあえずSkeletonとして必要なデータは、NiNodeのNPCと言う部分です。そこで、同じ階層にある他のノードを削除します。


NPC以外を削除



NewBone201905001 120-1 Info XP32 1



次に、一番上にあるskeleton_female.nifと言うNodeを見ると、BSFadeNodeとなっています。一番上のNodeは、NifNodeにする必要があります。新しいNodeを作って、置き換えると言う方法をとります。まず、Node → Attach Nodeから、NiNodeで、新しくNiNodeを追加します。次に、txtを押して名前をSceneRootにします。


次に、BsFadeNodeのskeleton_female.nifをRemoveします。Remove Branchではないです。


BSFadeNodeをRemove



NewBone201905001 125-1 Info XP32 1



次に、NiNode: SceneRootの、Num Childrenを1にして、下Childrenの右にある緑色の円形の矢印を押します。Children +Noneと表示されるはずです。このNoneの部分をクリックすると、Childrenとして登録したいNodeを選択できるので、1を入力して、NPCをChildrenにします。



後は、NPCの下にある余計なノードを削除します。とりあえず、コリジョンのbhkBlendCollisionObjectとその下の部分、NiNodeでない部分(FloatとかStringとか書いてあるデータ)を削除しました。

他のNiNode(Bone)も、結構必要ない部分があります。武器の位置を指定するためとか、魔法の位置だとか、吸血鬼が血を吸うため(と思われる)場所等が、Boneとして登録されています。そこら辺も必要ないと思いますが、本当に必要ないのかわかりません。他のModも調べてみたのですがMod毎に異なるので、どれが正解かわかりません、大体で消えてれば大丈夫だと思います。

最終的に、私はこんな感じにしました。


不要なNodeを整理した後



NewBone201905001 140-1 Info XP32 1




作ったSkeletonのデータを公開します。記事を書いている時と、データを作った時が1か月位離れているということもあって、上の記述とは異なる部分があると思います。その点はご容赦ください。このデータを使用して、公開した自作Modを作ったので、問題ないと思ってます。


Mediafire



 ・SkeletonTemplate



2つNifファイルがあります。どちらも使えるのですが、1つは、Boneの数が少ないもの。もう1つはXP32から不要(と思われる)Nodeを削除したものです。

このSkeletonは通常のSkeletonとは異なるので、通常のSkeleton.Nifに上書きしないでください。あくまでも新しいボーンを追加するための土台のデータです。

今後の作業は、この土台のデータに、新しいBoneのデータを組み込みます。その後、装備の形状(NiTriShape)のデータを追加するという作業になります。次回の記事は、Blenderで新しいBoneのデータをNiNodとして作り、Skeletonに追加する作業になる予定です。


次回






続く


追記)
2019年11月27日
読みにくい部分を修正しました。
スポンサーサイト



 Mod編集ツール

2 Comments

Hayashi296  

素晴らしい記事ありがとうございました。毎日参考させて頂きます。私、外国人ですがHDT対応装備のやり方を調べてて、一番詳しく書かれているこのブログたどり着きました。普段、気軽に使わせていただきますが、作ってみるとすごく大変だということが分かりました。みんなさん情熱凄いですねHDT対応装備その2もぜひお願いします。

2019/11/26 (Tue) 21:16 | EDIT | REPLY |   

altem  

Re: タイトルなし

返事遅くなって、申し訳ないです。


その記事を書いた後に、Nif Pluginが更新されました。改良版nifプラグイン(opparcoさん謹製)です。以下のリンクからダウンロードすることが出来ます。


https://w.atwiki.jp/skyrim_mod/pages/55.html


このNif Pluginは優秀で、私が行った作業の一部を行わなくても良いようです。ただ、どの部分が必要で、どの部分が不必要なのかわかりません。調べた後に記事を書くことになるので、まだ時間がかかります。

普段から記事を読んでいただいて、ありがとうございます。

2019/12/02 (Mon) 18:13 | EDIT | REPLY |   

Leave a comment