Nifskope
NifSkope is an open-source tool made specifically for working with The Elder Scrolls .nif files.
It does not replace all or even most of the functionality of Blender, but it can affect some features of the .nif format that the Blender plugin struggles with.
You can find the download link for version 1.1.3 on Github.
Program Version
For visually accurate previewing of how a mesh will look in Morrowind, use NifSkope 1.1.3; that version works out of the box for most purposes.
In rare cases, you may need to use NifSkope 2.0 instead for working with advanced node types and properties, but that comes with a loss of visual reliability. Later versions of NifSkope abandon the Morrowind renderer in order to support newer games like Fallout, which means graphic options like materials will not look the same as in the game. Later versions can also crash or fail to load some meshes with animations or particles, and fail to display skinned meshes; and their default settings export .nif files that don't work with Morrowind.
If you still want to use a later version of NifSkope, go to Options->Settings->NIF
, set Version to 4.0.0.2, User Version to 11 and User Version 2 to 11.
Replacing nif.xml to work with advanced node types
The Morrowind engine supports many advanced nif features which were never used in the base game, or which were not yet understood by the developers of NifSkope when its loading and menu code were created. To enable NifSkope to work with features like NiCollisionSwitch
, you need a customized version of the XML file that tells NifSkope how to interpret them. The file is named nif.xml
, and it belongs in the same folder as NifSkope.exe.
Best practice is to rename rather than delete the original version of nif.xml which came with your NifSkope install, in case you need to downgrade for any reason. Changing the filename to "nif-original.xml" is sufficient to prevent NifSkope from trying to load it.
For NifSkope 1.1.3:
A ZIP-archived copy of the current (August 2024) most fully-featured custom nif.xml for NifSkope 1.1.3 is available here. NifSkope 2.0 is incompatible with this file, and will crash if you try to use it.
For NifSkope 2.0:
Greatness7's custom nif.xml for NifSkope 2.0 is available here on GitHub. NifSkope 1.1.3 is likewise incompatible with this file, and will crash if you try to use it. As a reminder, NifSkope 2.0 will either completely fail to render some Morrowind-era nif features, such as animations, particle systems, and some uses of vertex colors; or it will display them in a way that is subtly, insidiously wrong. This can make you waste a lot of time trying to "fix" something in NifSkope, only to discover that the mesh never had a problem in-game.
Tutorials
- Basic use tutorial
- Nifskope Alchemy for Morrowind
- Notes for Modmakers from Symphony team contains many advanced notes on the .nif format and modelling.
Common Uses
See also Nifskope Alchemy for Morrowind for more.
Give "No Collision" Property
Right click, Block->Insert->NiStringExtraData
(not to confuse with NiStringsExtraData), give it the name NC
and look at its node number, click the top-level node 0, find Extra Data
and double-click on its Value field, give it the node number of the NC you just created.
Fix Broken or Visible Collision After Export
After exporting with old Blender, find the NiNode called collision
, change NiNode
to RootCollisionNode
; names are not needed. You can optionally first click Flags
and tick Hidden
(before changing the node, or add 1 to the Flags value anytime) for NifSkope to hide it when not viewing hidden objects.
Fix Wrong In-game Position, Rotation or Scale
Right click the node, select Transform->Apply
.
This should be done, for example, when changes were made in Blender or NifSkope that do not appear in the game.
Copying and Pasting Nodes Between Different Files
Copying and pasting nodes between different files works as long as NifSkope stays open; nodes must be clicked in the Block List.
Deleting Nodes or Branches From a File
Ctrl+Delete
in Block List to remove a node (and its children, without spilling them into the rest of the file).
Textures
Preview Textures
You can preview textures by dragging the files onto meshes in the 3D window. This works if the trishape is clickable – being transparent from alpha property make meshes not clickable.
Texture Paths
When changing or giving textures, NifSkope will by default give absolute paths, which won't work if users have Morrowind installed in a different folder. You should shorten to relative paths. For example if the full texture path is C:\Program Files\Bethesda Softworks\Morrowind\Data Files\Textures\A_Bear_Boot2.dds
, the relative path is Textures\A_Bear_Boot2.dds
. NifSkope will shorten new paths automatically for you if you go to Render->Settings...->Rendering->Add Folder
and set the path of your Data Files folder.
Vanilla files omit the Textures\
folder from texture paths, but the engine requires it if the texture is in a subfolder.
New Textures
New texture nodes created in NifSkope 1.1.3 with right click->Add...
have the wrong scaling type by default. For all texture types (base, detail...) interpolation mode must be changed from FILTER_NEAREST_MIPNEAREST
to TRILERP
to prevent pixellation. (Interpolation is for upscaled texture display when an object is viewed at a distance that isn't optimal for any of its mipmaps.)
Flags
Some properties are stored in a "Flags" value, which can be the sum of several values. For instance, collision nodes have the value 3, which is 1 (hidden) + 2 (triangle collision). The values have different meanings depending on the node type and NifSkope gives an interface for some of them when clicking the flag icon, but not for NiBSAnimationNode which you have to edit directly (see "NiBSAnimationNode flags" in animation basics in the Asset guidelines article).
NiStringExtraData
NiStringExtraData
is linked to the root node 0 and stores the properties listed below. You probably won't need several of these four properties at the same time, but you can chain more than one by linking in the Next Extra Data
value of the NiStringExtraData.
NC
– no collision,NCO
is the same asNC
.MRK
– make the mesh invisible in the game but visible in the editor. The name of the NiTriShape must start withTri EditorMarker
. See an example inEditorMarker.nif
.RCN
– for more reliable collision of moving objects. See an example inin_dagoth_bridge00.nif
.sgoKeep
– do not cull empty hierarchies. Only useful for skeleton nodes, .nif "bones", needed on particle effects and their emitters.
Changing Scale
When changing the scale of a mesh in NifSkope, the center and radius of the mesh in NiTriShapeData must be updated to avoid culling errors (like the mesh disappearing near the edge of the screen). Although NifSkope does have a function for this (right click>Mesh>Update Center/Radius
), it gives inaccurate results.
KF Files
You can't use attach kf
in NifSkope Spells for Morrowind kf files. A slow manual workaround is to copy each NiKeyframeController (with only NiKeyframeData under it) into its bones in the .nif file.
Particle Effects
NifSkope is particularly useful for adding advanced particle effects to TES III .nif files; something that the Blender plugin still struggles with. Kurpulio created an extensive guide to advanced usage of particle effects and emitters in Nifskope.
Optimizing Models
Nifskope can easily be used to optimize model structures.
Combine Materials
Go to Spells
->Optimize
->Combine properties
. This will merge all materials that have the same settings into one node. Most NiTriShapes have to use the standard material settings and can be merged.
Standard material settings:
NOTE: Simply copying one material node over to other NiTriShapes won’t do the trick. That will create an unique node that is similar to the node you copied.
Combine Shapes
Right click the NiNode
(with the NiTriShapes
under it) -> Optimize
-> Combine shapes
. This will combine all NiTrishapes with similar textures and material settings into one NiTriShape.
Optimize Collision
Optimizing collision (if not done correctly in Blender): Right click the Ninode
-> Node
-> Attach Node
-> RootCollisionNode
.
Set flag on RootCollisionNode
to 3
Copy (CTRL + C
) the NiTriShape
you want to use as collision and paste (CTRL + V
) it in the RootCollisionNode
. Delete the NiTriShape
where you copied from (CTRL + DEL
). Delete the material from the NiTriShape
in the RootCollisionNode
. Select the NiTriShapeData
in the RootCollisionNode
and set Has Normals
, Has Vertex Colors
, Has UV
to No. Set Num UV Sets
to 0 and press the green arrows once (otherwise you get error message on saving).
Right click the NiTriShape->Mesh->Remove Duplicate Vertices
. Because there are no UV Seams and Hard Edges, this merges the whole mesh in one solid collision and thus removing a lot of redundant vertices.