NiSkinPartition

From GECK
Jump to: navigation, search

NiSkinPartition is a block that contains hardware skinning optimized data. It is present in all NiSkinInstances and BSDismemberSkinInstances.

A typical example of a NiSkinProperty.

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.