User:Qazaaq/NIF Format Notes

From the Fallout3 GECK Wiki
< User:Qazaaq
Revision as of 06:01, 21 December 2008 by imported>Qazaaq (more detailed texture info)
Jump to navigation Jump to search

These are some notes I took while looking at the NIF files. Feel free to comment, discuss and add your own.

Textures

Location

BSFadeNode
+- NiTriStrips
   +- BSShaderPPLightingProperty
      +- BSShaderTextureSet

Notes

  • 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:
  1. color map
  2. normal map + specular map in alpha
  3. glow map
  4. parallax map
  5. reflection/environment map
  6. environment map mask
  • Sometimes, for simple/small objects or animated textures, the old/Oblivion method is used (NiTexturingProperty + NiSourceTexture).

Block Values

  • 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.

Collision

All collision

  • Layer and Response(?) is controlled by bhkRigidBody.
  • Use bhkRigidBodyT instead of bhkRididBody to apply translation to the collision shape.

Primitive collision shapes

  • Hardly ever used. Convex and Mopp shapes are much more common even for shapes like boxes.

Location

BSFadeNode
+- bhkCollisionObject
   +- bhkRigidBody
      +- bhkXXXShape

Notes

  • Used shapes:
    • Box
  • Shape contains shape and material data.

Simple collision shapes

These are used for items.

Location

BSFadeNode
+- bhkCollisionObject
   +- bhkRigidBody
      +- bhkConvexVerticesShape

Notes

  • Both shape data and material are controlled by the bhkConvexVerticesShape.

Complex collision shapes

Buildings and other large static objects.

Location

BSFadeNode
+- bhkCollisionObject
   +- bhkRigidBody
   |  +- bhkMoppBvTreeShape
   |     +- bhkPackedNiTriStripsShape
   |        +- hkPackedNiTriStripsData
   +- BSFadeNode

Notes

  • Material is controlled by the bhkMoppBvTreeShape block.
  • bhkPackedNiTriStripsShape and bhkPackedNiTriStripsData only contain data about the collision shape.

Uncompressed collision shapes

Used in the following NIFs:

  • meshes\clutter\displaycase\displaycase.nif

Location

BSFadeNode
+- bhkCollisionObject
   +- bhkRigidBody
      +- bhkNiTriStripsShape
         +- NiTriStripsData

Notes

  • NiTriStripsShape contains material data.