NIF File Format Documentation

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

NiMeshPSysData

Particle meshes data.

Attributes

Name Type Arg Arr1 Arr2 Cond Description FromTo
From NiObject
From NiGeometryData
Unknown Int int Unknown identifier. Always 0. 10.2.0.0
Num Vertices ushort !IsDerivedType(NiPSysData::TYPE) Number of vertices.
Num Vertices ushort IsDerivedType(NiPSysData::TYPE) Number of vertices.
BS Max Vertices ushort IsDerivedType(NiPSysData::TYPE) Bethesda uses this for max number of particles in NiPSysData.
Keep Flags byte Used with NiCollision objects when OBB or TRI is set. 10.1.0.0
Compress Flags byte Unknown. 10.1.0.0
Has Vertices bool Is the vertex array present? (Always non-zero.)
Vertices Vector3 Num Vertices hasVertices The mesh vertices.
Num UV Sets ushort Flag for tangents and bitangents in upper byte. Texture flags in lower byte.
BS Num UV Sets ushort Bethesda's version of this field for nif versions 20.2.0.7 and up. Only a single bit denotes whether uv's are present. For example, see meshes/architecture/megaton/megatonrampturn45sml.nif in Fallout 3.
Unknown Int 2 uint !IsDerivedType(NiPSysData::TYPE) Unknown, seen in Skyrim. 20.2.0.7
Has Normals bool Do we have lighting normals? These are essential for proper lighting: if not present, the model will only be influenced by ambient light.
Normals Vector3 Num Vertices hasNormals The lighting normals.
Tangents Vector3 Num Vertices hasNormals && ((numUvSets & 61440) || (bsNumUvSets & 61440)) Tangent vectors. 10.1.0.0
Bitangents Vector3 Num Vertices hasNormals && ((numUvSets & 61440) || (bsNumUvSets & 61440)) Bitangent vectors. 10.1.0.0
Center Vector3 Center of the bounding box (smallest box that contains all vertices) of the mesh.
Radius float Radius of the mesh: maximal Euclidean distance between the center and all vertices.
Unknown 13 shorts short 13 Unknown, always 0? 20.3.0.9 20.3.0.9
Has Vertex Colors bool Do we have vertex colors? These are usually used to fine-tune the lighting of the model.

Note: how vertex colors influence the model can be controlled by having a NiVertexColorProperty object as a property child of the root node. If this property object is not present, the vertex colors fine-tune lighting.

Note 2: set to either 0 or 0xFFFFFFFF for NifTexture compatibility.
Vertex Colors Color4 Num Vertices hasVertexColors The vertex colors.
Num UV Sets ushort The lower 6 (or less?) bits of this field represent the number of UV texture sets. The other bits are probably flag bits. For versions 10.1.0.0 and up, if bit 12 is set then extra vectors are present after the normals. 4.2.2.0
Has UV bool Do we have UV coordinates?

Note: for compatibility with NifTexture, set this value to either 0x00000000 or 0xFFFFFFFF.
4.0.0.2
UV Sets TexCoord Num UV Sets & 63 Num Vertices The UV texture coordinates. They follow the OpenGL standard: some programs may require you to flip the second coordinate.
Consistency Flags ConsistencyType Consistency Flags 10.0.1.0
Consistency Flags ConsistencyType !IsDerivedType(NiPSysData::TYPE) Consistency Flags 10.0.1.0
Additional Data Ref<AbstractAdditionalGeometryData> Unknown. 20.0.0.4
Additional Data Ref<AbstractAdditionalGeometryData> !IsDerivedType(NiPSysData::TYPE) Unknown. 20.0.0.4
From NiParticlesData
Num Particles ushort The maximum number of particles (matches the number of vertices). 4.0.0.2
Particle Radius float The particles' size. 10.0.1.0
Has Radii bool Is the particle size array present? 10.1.0.0
Radii float Num Vertices hasRadii The individual particel sizes. 10.1.0.0
Num Active ushort The number of active particles at the time the system was saved. This is also the number of valid entries in the following arrays.
Has Sizes bool Is the particle size array present?
Sizes float Num Vertices hasSizes The individual particel sizes.
Has Rotations bool Is the particle rotation array present? 10.0.1.0
Rotations Quaternion Num Vertices hasRotations The individual particle rotations. 10.0.1.0
Unknown Byte 1 byte Unknown, probably a boolean.
Unknown Link Ref<NiObject> Unknown
Has Rotation Angles bool Are the angles of rotation present? 20.0.0.4
Rotation Angles float Num Vertices hasRotationAngles Angles of rotation
Has Rotation Axes bool Are axes of rotation present? 20.0.0.4
Rotation Axes Vector3 Num Vertices hasRotationAxes Unknown 20.0.0.4
Has UV Quadrants bool if value is no, a single image rendered
Num UV Quadrants byte 2,4,8,16,32,64 are potential values. If "Has" was no then this should be 256, which represents a 16x16 framed image, which is invalid
UV Quadrants Vector4 Num UV Quadrants hasUvQuadrants Unknown.
Unknown Byte 2 byte Unknown
From NiRotatingParticlesData
Has Rotations 2 bool Is the particle rotation array present? 4.2.2.0
Rotations 2 Quaternion Num Vertices hasRotations2 The individual particle rotations. 4.2.2.0
From NiPSysData
Particle Descriptions ParticleDesc Num Vertices Unknown.
Has Unknown Floats 3 bool Unknown. 20.0.0.4
Unknown Floats 3 float Num Vertices hasUnknownFloats3 Unknown. 20.0.0.4
Unknown Short 1 ushort Unknown.
Unknown Short 2 ushort Unknown.
Has Subtexture Offset UVs bool Boolean for Num Subtexture Offset UVs
Num Subtexture Offset UVs uint How many quads to use in BSPSysSubTexModifier for texture atlasing
Aspect Ratio float Sets aspect ratio for Subtexture Offset UV quads
Subtexture Offset UVs Vector4 Num Subtexture Offset UVs hasSubtextureOffsetUvs == 1 Defines UV offsets
Unknown Int 4 uint Unknown
Unknown Int 5 uint Unknown
Unknown Int 6 uint Unknown
Unknown Short 3 ushort Unknown
Unknown Byte 4 byte Unknown
From NiMeshPSysData
Unknown Int 2 uint Unknown. Possible vertex count but probably not. 10.2.0.0
Unknown Byte 3 byte Unknown. 0? 10.2.0.0
Num Unknown Ints 1 uint Unknown. 10.2.0.0
Unknown Ints 1 uint Num Unknown Ints 1 Unknown integers 10.2.0.0
Unknown Node Ref<NiNode> Unknown NiNode.

Parent Of