User:Qazaaq/NIF Format Notes
Jump to navigation
Jump to search
These are some notes I took while looking at the NIF files and info I got from others. Feel free to comment, discuss and add your own.
General[edit | edit source]
- All NIFs start with a BSFadeNode block, very similar to NiNodes. Exceptions:
- cameras
- master particle systems
- lod meshes
- All block Values strings (Value column in Block List view) are stored in a Strings array in the header and are referred to with an integer.
Textures[edit | edit source]
Location[edit | edit source]
BSFadeNode +- NiTriStrips +- BSShaderPPLightingProperty +- BSShaderTextureSet
Notes[edit | edit source]
- BSShaderTexturesSet contains the textures (color-, normal- and glowmap) in the Textures array. Size is controlled by the Num Textures variable, this is always 6 even when the last ones aren't used.
- Texture order:
- color map
- normal map + specular map in alpha
- glow map
- parallax map
- reflection/environment map
- environment map mask
- Sometimes, for simple/small objects or animated textures, the old/Oblivion method is used (NiTexturingProperty + NiSourceTexture).
Collision[edit | edit source]
All collision[edit | edit source]
- Layer and Response(always(?) set to RESPONSE_SIMPLE_CONTACT) is controlled by bhkRigidBody.
- Use bhkRigidBodyT instead of bhkRididBody to apply a transformation to a collision object.
- Use bhkTransformShape to apply a transformation to a collision shape
Primitive collision shapes[edit | edit source]
- Hardly ever used. Convex and Mopp shapes are much more common even for shapes like boxes.
Location[edit | edit source]
BSFadeNode +- bhkCollisionObject +- bhkRigidBody +- bhkXXXShape
Notes[edit | edit source]
- Used shapes (should be possible to use it with all shapes):
- Box
- Shape contains shape and material data.
Simple collision shapes[edit | edit source]
These are used for items.
Location[edit | edit source]
BSFadeNode +- bhkCollisionObject +- bhkRigidBody +- bhkConvexVerticesShape
Notes[edit | edit source]
- Both shape data and material are controlled by the bhkConvexVerticesShape.
Complex collision shapes[edit | edit source]
Buildings and other large static objects.
Location[edit | edit source]
BSFadeNode +- bhkCollisionObject +- bhkRigidBody | +- bhkMoppBvTreeShape | +- bhkPackedNiTriStripsShape | +- hkPackedNiTriStripsData +- BSFadeNode
Notes[edit | edit source]
- Material is controlled by the bhkMoppBvTreeShape block.
- bhkPackedNiTriStripsShape and bhkPackedNiTriStripsData only contain data about the collision shape.
- bhkPackedNiTriStripsData contains layer and material' of subshapes.
Uncompressed collision shapes[edit | edit source]
Used in the following NIFs:
- meshes\clutter\displaycase\displaycase.nif
Location[edit | edit source]
BSFadeNode +- bhkCollisionObject +- bhkRigidBody +- bhkNiTriStripsShape +- NiTriStripsData
Notes[edit | edit source]
- NiTriStripsShape contains material data.
Other collision shapes[edit | edit source]
Location[edit | edit source]
BSFadeNode +- bhkSPCollisionObject +- bhkSimpleShapePhantom +- [bhkXXXShape, bhkConvexVerticesShape]
Notes[edit | edit source]
- bhkSimpleShapePhantom controls the layer:
- OL_WATER
- OL_TRIGGER
- last unkown float in bhkSimpleShapePhantom
- -204.0184 in all water NIFs
- 0.0 in all triggers