読者です 読者をやめる 読者になる 読者になる

Skyrim箱庭DIY

MODによる固有の環境不具合は自分で直して快適ゲーム。CTDにさようなら。Do It Yourself!!

Skyrimにおけるメッシュの詳細とNifskopeの使い方(SkinInstance編)



スポンサーリンク

今回はSkinInstanceに絞って、Nifskopeで中を覗いていきます。前回に引き続きScaled Armorの中から見てみます。

ちょっと知識不足につき、推測箇所が多いですので、あらかじめご了承ください。

 前回の記事はこちら

 

BSDismemberSkinInstance

メッシュをボーンに紐付けしてるっぽい情報が入っています。(スキニングというのでしょうか?モデリングとかほとんど経験無いのでエアです。)各頂点のウェイト情報とか。あとはDismember Map(これ正しい呼び方なのでしょうか)があるようです。

Block Detailsを見てみます。改造で主に見るのは、BonesPartitionsになります。

Nifskopeで見たBSDismemberSkinInstance

 

Bones

ScaledArmorで使用されているボーンのリストです。Block Detailsを見ると30本使っているようです。このボーンの全てを持っているスケルトンを使う必要があります。この例ではバニラのスケルトンでも問題ないです。

BSDismemberSkinInstanceのBones

 

Partitions

別記事や前回でも触れましたが、esmやespのArmor Addonと合わせる必要があります。ScaledArmorはPartition1つで32:Bodyだけです。一番よくつかう所かもしれません。

BSDismemberSkinInstanceのPartitions

 

Osare Mufflerのメッシュ。こんな感じで直接書き換えられます。番号だけ入れればOKです。

OsareMufflerのメッシュ

 

Steel Armorの場合はPartitionが2つ有り、32:Bodyと38:Calvesになっています。Scaled Armorと違って、脛まで覆っているからだと思います。

SteelArmorのPartition

 

マッパだと32:Body、38:Calves、34:Forearmsの3つに分かれています。

体型メッシュのPartition

 

いずれの場合も、実際のメッシュそのものは1つであって、実際に複数に分割されている訳ではありません。

推測入りますが、切断とかArmor AddonのPriorityとかで、複数に分けたサブメッシュにそれぞれArmor Addonを割り付ける必要がある?のでしょうか。あんまり自信ないです。

 

Part Flagについて 

 この設定が正しくないと、ゲーム内での表示がおかしくなりますPF_EDITOR_VISIBLEPF_START_NET_BONESETをEnableにしておきます。上のマッパのSSのように複数のPartitionがある場合、いちばん最初のPartitionだけPF_START_NET_BONESETを付けていることが多いようです。

 

NiSkinInstance

時々、BSDismemberSkinInstanceの代わりに、NiSkinInstanceが入っている場合があります。

例として、Bandolier - Bags and Pouchesの「Leather Large Bandolier - Shoulderpad」メッシュを見てみます。

BandolierのNiSkinInstance

Block Detailsを見ての通り、Partition情報が有りません。この場合、装備スロットやArmor Addonの変更をした場合、メッシュの修正をする必要はありません

また推測ですいませんが、胴のようにPartition分けした個々のサブメッシュに番号振る必要が無い場合は、これでも問題無いのかもしれません。

 

NiSkinInstanceをBSDismemberSkinInstanceに変換

気になる場合は、BSDismemberSkinInstanceに変換できます。できた、というだけであまり試したことないので、自己責任でお願いします。

 

Block>Convertを選択して、「BSDismemberSikinInstance」を選びます。

NiSkinInstanceをBSDismemberSkinInstanceに変換1

 

変換され、Block Detailsに、からっぽのPartitionができてます。

NiSkinInstanceをBSDismemberSkinInstanceに変換2

 

Outfit Studioで開いて、「Build Skin Partitions」を選択。終わったらnif出力します。

OutfitStudioでPartitionを作る

 

Partitionが出来てます。espと同じ53に設定して完了です。

NifskopeでPartition番号設定

 

BSDismemberSkinInstanceもしくはNiSkinInstanceの子ノードについて

 どちらの場合もNiSkinDataNiSkinPartitionが有ります。あとはボーンと0番のノードが指定されているようです。これをNifskope上で直接さわることは恐らく無いと思います

NiSkinData 

SkinInstanceの下にあるノードです。頂点座標、影響するボーン、ウェイト設定といったスキニング情報が入っている、と思います。ここら辺は詳しくないので推測はいってます、すいません。Nifskopeでどうこうできる領域ではないので、変更するならBlenderとか使う必要があるかと。ウェイトコピーならOutfit StudioでもOKです。

ScaledArmorのNiSkinData

 

NiSkinPartition

同じくSkinInstanceの下にあります。こっちも結構推測入ってます。Partitionと聞くと、BSDismemberSkinInstanceにしか無いような気になりますが、Armor Addon(メッシュに対してこの呼び方が正しいか分かりませんが、同じ番号)を振ってるか振ってないかの違いがあるものの、PartitionはどちらのSkinInstanceにも存在しています。

Scaled Armorです。Partition1個です。Block Detailsを見ると、こちらもボーン、頂点、ウェイトといった情報のようです。

ScaledArmorのNiSkinPartition

 

SteelArmorです。こちらはPartition2個です。脛以外のいわゆる「胴」の部分と、脛の2箇所。黄色い部分がPartition。

SteelArmorのNiSkinPartition1

 

こちらは脛のPartitionです。脛の所だけ黄色になっています。

SteelArmorのNiSkinPartition2

マッパのメッシュだと上腕部が増え、Partitionは3個になります。

これは頂点に影響するボーン数を無制限に設定できない(ソフトやGPUの制限もありそう)ので、サブメッシュに分割することで影響するボーン数を制限、かつハードウェアスキニング(GPUの仕事ですかね)の最適化、ということらしいです。

 

推測の所、確定できたら更新していきます。

とりあえずこんなところで。次はBSLightingShaderPropertyの予定です。

 

続きはこちら

 

NiAlphaPropertyを知りたい場合はこちら