# NIF File Format Documentation

NIF Objects | Compound Types | Enum Types | Basic Types | File Versions

## Compound Data Types

Name | Description
--- | ---
AVObject | Used in NiDefaultAVObjectPalette.
AdditionalDataBlock |
AdditionalDataInfo |
ArkTexture | A texture reference used by NiArkTextureExtraData.
BSPackedAdditionalDataBlock |
BSSegment | Bethesda-specific node.
BSTreadTransform | Bethesda-specific node.
BSTreadTransformData | Bethesda-specific node.
BodyPartList | Body part list for DismemberSkinInstance
BoneLOD | Stores Bone Level of Detail info in a BSBoneLODExtraData
BoundingBox | Bounding box.
BoundingVolume |
BoxBV | Box Bounding Volume
ByteArray | An array of bytes.
ByteColor3 | Unknown.
ByteColor4 | Unknown.
ByteMatrix | An array of bytes.
CapsuleBV | Capsule Bounding Volume
ChannelData | Channel data
Color3 | A color without alpha (red, green, blue).
Color4 | A color with alpha (red, green, blue, alpha).
ControllerLink | In a .kf file, this links to a controllable object, via its name (or for version 10.2.0.0 and up, a link and offset to a NiStringPalette that contains the name), and a sequence of interpolators that apply to this controllable object, via links.
DecalVectorArray | Array of Vectors for Decal placement in BSDecalPlacementVectorExtraData.
ElementReference |
ExportInfo | Information about how the file was exported
ExtraMeshDataEpicMickey |
ExtraMeshDataEpicMickey2 |
FilePath | A string that contains the path to a file.
Footer | The NIF file footer.
FurniturePosition | Describes a furniture position?
HalfSpaceBV |
Header | The NIF file header.
HingeDescriptor | This constraint allows rotation about a specified axis.
InertiaMatrix | An inertia matrix.
Key | A generic key with support for interpolation. Type 1 is normal linear interpolation, type 2 has forward and backward tangents, and type 3 has tension, bias and continuity arguments. Note that color4 and byte always seem to be of type 1.
KeyGroup | Array of vector keys (anything that can be interpolated, except rotations).
LODRange | The distance range where a specific level of detail applies.
LimitedHingeDescriptor | This constraint allows rotation about a specified axis, limited by specified boundaries.
MTransform |
MatchGroup | Group of vertex indices of vertices that match.
MaterialData | Data stored per-material by NiRenderObject
Matrix22 | A 2x2 matrix of float values. Stored in OpenGL column-major format.
Matrix33 | A 3x3 rotation matrix; M^T M=identity, det(M)=1. Stored in OpenGL column-major format.
Matrix44 | A 4x4 transformation matrix.
MeshData |
MipMap | Description of a MipMap within a NiPixelData object.
Morph | Geometry morphing data component.
MorphWeight |
MotorDescriptor |
MultiTextureElement |
NodeGroup | A group of NiNodes references.
OblivionColFilter | Oblivion's ColFilter property for Havok.
OblivionSubShape | Havok Information for packed TriStrip shapes.
OldSkinData | Used to store skin weights in NiTriShapeSkinController.
Particle | particle array entry
ParticleDesc | Particle Description.
Polygon | Two dimensional screen elements.
QTransform |
QuatKey | Unknown.
Quaternion | A quaternion.
QuaternionXYZW | A quaternion as it appears in the havok objects.
RagdollDescriptor | This constraint defines a cone in which an object can rotate. The shape of the cone can be controlled in two (orthogonal) directions.
Region | A range of indices, which make up a region (such as a submesh).
SemanticData |
ShaderTexDesc | An extended texture description for shader textures.
ShortString | Another string format, for short strings. Specific to Bethesda-specific header tags.
SizedString | A string of given length.
SkinData | Skinning data component.
SkinPartition | Skinning data for a submesh, optimized for hardware skinning. Part of NiSkinPartition.
SkinPartitionUnknownItem1 |
SkinShape | Reference to shape and skin instance.
SkinShapeGroup | Unknown.
SkinTransform |
SkinWeight | A weighted vertex.
SphereBV | A sphere.
StringPalette | A list of \\0 terminated strings.
TBC | Tension, bias, continuity.
TexCoord | Texture coordinates (u,v). As in OpenGL; image origin is in the lower left corner.
TexDesc | Texture description.
TexSource | A texture source.
Triangle | List of three vertex indices.
UnionBV |
Vector3 | A vector in 3D space (x,y,z).
Vector4 | A 4-dimensional vector.
bhkCMSDBigTris | Triangle indices used in pair with "Big Verts" in a bhkCompressedMeshShapeData.
bhkCMSDChunk | Defines subshape chunks in bhkCompressedMeshShapeData
bhkCMSDMaterial | per-chunk material, used in bhkCompressedMeshShapeData
bhkCMSDTransform | A set of transformation data: translation and rotation
hkTriangle | A triangle with extra data used for physics.
ns keyarray | Array of keys, not interpolated (!!! for NifSkope only, use keyarray for regular use).
ns keylin | Linear key type (!!! for NifSkope optimizer only, use key, keyrot, or keyvec for regular use).
ns keyrotarray | Array of rotation keys (!!! for NifSkope only, use keyrotarray for regular use).
ns keyrotsub | Rotation subkey (!!! Nifskope only).
ns keytan | Key with tangents (!!! for NifSkope only, use keyvec instead for regular purposes).
ns keytbc | A TBC key (!!! for NifSkope only, use keyvec for regular purposes).
ns keyvecarray | Array of interpolable keys (!!! for NifSkope only, use keyvecarray for regular use).
ns keyvecarraytyp | Array of interpolable keys (!!! for NifSkope only, use keyvecarraytyp for regular use)
physXMaterialRef |
string | A string type.