NiSkinPartition
From GECK
NiSkinPartition is a block that contains hardware skinning optimized data. It is present in all NiSkinInstances and BSDismemberSkinInstances.
Its fields are:
- Num Skin Partition Blocks: The total number of partitions on the object, should always match the number of partitions in the parent SkinInstance.
- Skin Partition Blocks: Stores the data for each partition.
- Num Vertices: Total number of vertices in the partition.
- Num Triangles: Total number of polygons in the partition.
- Num Bones: Total number of bones in the partition.
- Num Strips: Total number of TriStrips in the partition. Skinned objects should always be TriShapes, so this should generally always be 0, although some vanilla NIFs list values despite not having TriStrips.
- Num Weights Per Vertex: Should always be 4, Gamebryo specific value.
- Bones: Lists the bones by index number, should generally always match the order of bones in the NIF, unrelated to the block number.
- Has Vertex Map: Should generally always be yes.
- Vertex Map: Stores the index number of vertices, should always match the vertex order in the parent node's NiGeometryData block.
- Has Vertex Weights: Should generally always be yes.
- Vertex Weights: Stores the weighting information of every vertex in the partition, order matches the index count in Vertex Map.
- Strip Lengths: The length of TriStrips in the partition, assuming Num Strips has a positive value.
- Has Faces: Whether or not the partition has triangles, should generally always be yes.
- Triangles: Stores polygon information in some bizarre three single-digit order.
- Has Bone Indices: Should always be yes.
- Bone Indices: Presumably converts the bone number from Bones into a 1-4 range for each vertex as listed in Vertex Map.