今回はSkinInstanceに絞って、Nifskopeで中を覗いていきます。前回に引き続きScaled Armorの中から見てみます。
ちょっと知識不足につき、推測箇所が多いですので、あらかじめご了承ください。
前回の記事はこちら。
BSDismemberSkinInstance
メッシュをボーンに紐付けしてるっぽい情報が入っています。(スキニングというのでしょうか?モデリングとかほとんど経験無いのでエアです。)各頂点のウェイト情報とか。あとはDismember Map(これ正しい呼び方なのでしょうか)があるようです。
Block Detailsを見てみます。改造で主に見るのは、BonesとPartitionsになります。
Bones
ScaledArmorで使用されているボーンのリストです。Block Detailsを見ると30本使っているようです。このボーンの全てを持っているスケルトンを使う必要があります。この例ではバニラのスケルトンでも問題ないです。
Partitions
別記事や前回でも触れましたが、esmやespのArmor Addonと合わせる必要があります。ScaledArmorはPartition1つで32:Bodyだけです。一番よくつかう所かもしれません。
Osare Mufflerのメッシュ。こんな感じで直接書き換えられます。番号だけ入れればOKです。
Steel Armorの場合はPartitionが2つ有り、32:Bodyと38:Calvesになっています。Scaled Armorと違って、脛まで覆っているからだと思います。
マッパだと32:Body、38:Calves、34:Forearmsの3つに分かれています。
いずれの場合も、実際のメッシュそのものは1つであって、実際に複数に分割されている訳ではありません。
推測入りますが、切断とかArmor AddonのPriorityとかで、複数に分けたサブメッシュにそれぞれArmor Addonを割り付ける必要がある?のでしょうか。あんまり自信ないです。
Part Flagについて
この設定が正しくないと、ゲーム内での表示がおかしくなります。PF_EDITOR_VISIBLEとPF_START_NET_BONESETをEnableにしておきます。上のマッパのSSのように複数のPartitionがある場合、いちばん最初のPartitionだけPF_START_NET_BONESETを付けていることが多いようです。
NiSkinInstance
時々、BSDismemberSkinInstanceの代わりに、NiSkinInstanceが入っている場合があります。
例として、Bandolier - Bags and Pouchesの「Leather Large Bandolier - Shoulderpad」メッシュを見てみます。
Block Detailsを見ての通り、Partition情報が有りません。この場合、装備スロットやArmor Addonの変更をした場合、メッシュの修正をする必要はありません。
また推測ですいませんが、胴のようにPartition分けした個々のサブメッシュに番号振る必要が無い場合は、これでも問題無いのかもしれません。
NiSkinInstanceをBSDismemberSkinInstanceに変換
気になる場合は、BSDismemberSkinInstanceに変換できます。できた、というだけであまり試したことないので、自己責任でお願いします。
Block>Convertを選択して、「BSDismemberSikinInstance」を選びます。
変換され、Block Detailsに、からっぽのPartitionができてます。
Outfit Studioで開いて、「Build Skin Partitions」を選択。終わったらnif出力します。
Partitionが出来てます。espと同じ53に設定して完了です。
BSDismemberSkinInstanceもしくはNiSkinInstanceの子ノードについて
どちらの場合もNiSkinDataとNiSkinPartitionが有ります。あとはボーンと0番のノードが指定されているようです。これをNifskope上で直接さわることは恐らく無いと思います。
NiSkinData
SkinInstanceの下にあるノードです。頂点座標、影響するボーン、ウェイト設定といったスキニング情報が入っている、と思います。ここら辺は詳しくないので推測はいってます、すいません。Nifskopeでどうこうできる領域ではないので、変更するならBlenderとか使う必要があるかと。ウェイトコピーならOutfit StudioでもOKです。
NiSkinPartition
同じくSkinInstanceの下にあります。こっちも結構推測入ってます。Partitionと聞くと、BSDismemberSkinInstanceにしか無いような気になりますが、Armor Addon(メッシュに対してこの呼び方が正しいか分かりませんが、同じ番号)を振ってるか振ってないかの違いがあるものの、PartitionはどちらのSkinInstanceにも存在しています。
Scaled Armorです。Partition1個です。Block Detailsを見ると、こちらもボーン、頂点、ウェイトといった情報のようです。
SteelArmorです。こちらはPartition2個です。脛以外のいわゆる「胴」の部分と、脛の2箇所。黄色い部分がPartition。
こちらは脛のPartitionです。脛の所だけ黄色になっています。
マッパのメッシュだと上腕部が増え、Partitionは3個になります。
これは頂点に影響するボーン数を無制限に設定できない(ソフトやGPUの制限もありそう)ので、サブメッシュに分割することで影響するボーン数を制限、かつハードウェアスキニング(GPUの仕事ですかね)の最適化、ということらしいです。
推測の所、確定できたら更新していきます。
とりあえずこんなところで。次はBSLightingShaderPropertyの予定です。
続きはこちら
NiAlphaPropertyを知りたい場合はこちら