Nifskope

From Project Tamriel Wiki
Jump to navigation Jump to search

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

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 as NC.
  • MRK – make the mesh invisible in the game but visible in the editor. The name of the NiTriShape must start with Tri EditorMarker. See an example in EditorMarker.nif.
  • RCN – for more reliable collision of moving objects. See an example in in_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.

Handbook optimize01.png

Standard material settings:

Handbook optimize02.png

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.

Handbook optimize03.png

Optimize Collision

Optimizing collision (if not done correctly in Blender): Right click the Ninode -> Node -> Attach Node -> RootCollisionNode.

Handbook optimize04.png

Set flag on RootCollisionNode to 3

Handbook optimize05.png

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

Handbook optimize06.png

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.

Handbook optimize07.png