Nifskope: NiStringExtraData guide

From Nexus Mods Wiki
Revision as of 19:55, 12 August 2014 by SydneyB (talk | contribs) (fixed NifSkope category name)
Jump to: navigation, search

This guide is written based off experience, observations, and years of tinkering. (applies to Oblivion, FO3, and FNV).

From what has been observed, NiStringExtraData serves three purposes:
  • An override to things that are normally default values, or hidden values.
  • Making sure specific meta data is 'read first' upon loading.
  • Nothing more than leftover data from Bethesda/Obsidian upon export.
so, to elaborate on these :
  • #1: override

You can override just about any value, in any way. And sometimes in very useful way. In fact, you can make simple armors simply by using NiString data to tell the Nif that a specific node -is in fact, an instance of another node- Here's a fun example : http://imgbox.com/g/gfuAumq03W Follow this link and click through the pictures. In mere minutes, a fully-functioning armor can be made, sans the need for skinning, rigging, BLENDER, 3dsMax, export settings, ect. The NiStringExtraData here basically forced the parent node to 'be a clone' of the Bone Node named "Spine01" Want a fireball over your shoulder? An ax in your back? A squashed bullet in your forehead? How about a flower or mushroom growing from your head?

Let's move on to other override examples:

*NOTE* headers marked in red are ones to pay attention to, as you will likely use these, whereas green ones are generally more advanced and thus unused by the general populous.

========================================================================================

NoDecals=1
  • (means it has collision, but bullet decals won't place)
billboardUp
  • (billboardCenter/billboardCamera/billboardRigid) Rigid locks one axis
Collision_Groups = 1
  • (childed collisions, such as breakaparts, diff mats etc) erratically everywhere.
Mass = 0.000000
  • Up to (999.9999)
sgoKeep=1
  • (a value applied on export lets the Parent node 'persist' should changes like

an Anim play, move Transform in any way, or change DamageStage)

worldaligned=1
  • (keep it horizontal, parallel with the worldspace's horizon)
KFAccumRoot =
  • (iirc, leftover upon export, but may keep Parent matching Root node's Pos)
Simulation_Geometry = 5
  • (2, iirc, value determines Qual of proxy's radius)
ColGroupInfo = 327681
  • (402653196 is *always* for Phantom shapes like triggers, 1073741838 is for Constraints)
Unyielding = 0
  • (1) (used for things that move on their own an DON'T give way, Melee, projectiles, ect, when set to 0, they take precedence over other movables, but can be moved/struck/triggered by external things.)
NiOptimizeKeep
  • (you'll likely never use this, but its for Emitter Mesh Objects for VFX, because

when the object changes Transform, it scales the faces used to emit particles)

zMode10
  • (this is for Emitters, because they have a 'depth' value which is calculated on all 3 axis)
MapChannel:1
  • (/2/3/4/5) = Storage | -none- | (this can override the textures in the BSShaderTextureSet , I've not tested it much, but it works. More testing needed, much potential here)
GeomChannel = UVs
  • (forces the designated textures to render as UV, even when no UV exists....Typically used for VFX objects like shockwaves)
Ellasticity = 0.300000
  • (default value of ellasticity)
Friction = 0.300000
  • (default value of friction)
Disable_Collisions = 0
  • (self explanatory)

======================================================================================

There are others such as Inactive, Phantom, Proxy Geometries etc, but the lack of advanced modders using advanced techniques means lack of demand for such info.

Please bear in mind that some values you see (and some of the values not covered here) are sometimes merely the result of leftover data that persisted upon export from the developers.