Working With Nifs 101 : Basic Use
Nifskope 101
Basics! The aim of this section is to introduce the interface of Nifskope, and get you used to the various functions therein.
Interface
By default, we have our usual File, View menu along the top, with a bar underneath for quickly opening and saving files. Followed by a playbar for animations.
Along the left, we have the Block List (F1), This is where the hiearchy for a loaded .nif is shown. To the right of that, is the render window, where a loaded .nif should be visible. The block along the bottom is Block Details (F2): An item selected from the Block List will have it's details listed here. Along the Right is KFM (F3), Information about a loaded animation block will appear here. The three block windows can be opened/hidden, dragged, resized, and docked in different configurations.
Menu Options
In the File menu, we have the usual. I don't suggest ever unchecking "auto-sanitize" -it can't break anything, and can save you a lot of time. New Window spawns a new blank nifskope. New window spawns a new empty window :) Reload XML is handy if you're editing the included .xml files.
View: for hiding/unhiding windows. I also wouldn't suggest ever changing the Block List view, seeing the hierarchy is generally more important, but know that it's there.
Render:Settings > Basic settings for the render view, and toggles for havok, nodes, etc. The settings window is fairly straightfoward, but let's set up our texture folders now.
Notes:
- Setting your texture files will change how nifskope enters paths when changing textures on a mesh. Auto-detect should pick your oblivion\data folder for you. If you have textures you're using from any other folders, enter those paths here as well. At this point, meshes you load should be visible with a texture, if they weren't before.
- There's also some neat settings for the Scene's light, handy for checking out a mesh, or checking the normals.
Spells
Nifskope does magic, and here's how:
Animation:Load .kf > if a mesh is rigged for animation, and also has a hierarchal skeleton present, you may load Oblivion animation files for previewing.
Block:Insert > Inserts any given node, property or data usable by the currently loaded nif into the scene. This insertion does not automatically attach said object to anything, you'll have to do that manually.
Block:Remove by ID > Can auto-strip items based by name. The default values strip any havok from the .nif
OBJ:Import/Export Multi > Nifskope can put in or out files via the .obj format. These files maintain vertex order, UV mapping, Vertex Normals, can have multiple objects in them, and have a .mtl sidecar file for material settings. The easiest way to make small changes to a mesh is through this format. Skinned objects, like armor or clothes can also be edited this way, so long as you don't add/remove any vertices while editing.
Optimize:Combine Properties > Attempts to reduce properties that are identical to a single shared one. Ex:If you have many trishapes that have uniquely numbered texturingproperties, but they all use the same texture file, this will make each trishape use the same exact texturingproperty.
Optimize:Unique Properties > Attempts to make Uniquely numbered properties from an identical source. Ex: You have many trishapes that all use the same texturingProperty, doing this would give each trishape their own special texturingProperty.
Sanitize:Adjust Link arrays > If you've made changes to a number of different arrays in your .nif, you can update all of them at once with this option.
Sanitize:Reorder Havok Blocks > Will attempt to renumber havok blocks based on the number of the first in the hierarchy. Use this to save time and prevent crashes in one fell swoop!
Sanitize:Check Links > Scans the .nif and stops at the first bad link it finds, Highlighting the link, and tells you what's wrong with it. Ex: A soureTexture node improperly attached to a trishapes' Extra Data List.
XML Checker: Chances are you won't be editing nifskope's .xml file, But this is another utility for those who make changes to the .xml (which defines how nifskope handles various data blocks)
Using Nifskope part 2: The click
You'll do most all .nif work in the Block list and Block Details view. Single-Clicking on an item in the List view will have its' data listed in the Details view. Clicking on a + or - sign next to a node expands or collapses it. Double-Clicking a value goes into an edit mode, where you will enter numbers or text, scroll through lists, wherever appropriate. Clicking an Icon in a list (material or texture settings) will bring up a dialogue menu for editing. Right-clicking is context sensitive to whatever you may have clicked on.
I'm just covering general usability at this point.
These are all done in the Block List view:
Block>Insert - This will insert a node/property of your choosing. This inserted item does not get attached to the hierarchy. Block>Remove - Removes the selected object. Any attached objects are now floating free in the scene. Block>Remove Branch - This will remove Selected and anything attached. Block>Move Up/Down - Reorders the node up or down through the hierarchy. The shortcut keys make this a very easy process. In some cases, renumbering is important, or just useful for cleaning/sorting your .nif. Block> Copy - Copies what you've selected. Block> Copy Branch - Same, but also copies any children and properties. Block> Paste - If you've got something selected, it will paste in attached to the node in the appropriate slot. If you've right-clicked a blank space in the hierarchy, it pastes unattached. Block> Paste Over - Pastes the copied data over the selected matching item. Ex: You've copied the MaterialProperty from one mesh- Now right clicking a different materialProperty gives you the option to paste the other material settings onto this one.
Node>Attach Property - Gives you a list of properties, once selected, it gets attached automatically as a property.
Node>Attach Node - Gives you a list of nodes, and attaches them as children.
(nodes and properties are detailed on in a later guide)
Node>Attach Light - Attaches a light, largely unused by Oblivion.
Node>Attach Extra Data - A list of extra data blocks, attached in the Extra Data list.
Flags - "Hidden" is not used by Oblivion, but it can be useful in Nifskope. Collision Detection should always be "Continue" And I don't think I've ever seen "Skin Influence" used in oblivion's nifs.
File offset returns the file offset :)
Texture>Multi Apply Mode will apply the settings given to everything in your nif.
Transform>Edit - Brings up a handy dialogue for editing Translation, Rotation, and Scale of the selected node. Transform> Clear - Restores original transformation settings. Transform> Apply - Commits any translation changes you have made, and resets their values to 0. ((Important)) In many cases, you'll Need to apply your transforms for the changes to be apparent in-game.
Those are the basics, which most nodes will give you when prodded.
Block>Flatten on a skeleton Hierarchy will flatten it all down to being children of the skeletons' parent children list.
niTriStrips and niTriShapes
Also give these:
OBJ> Import / Export - Imports an .obj file over the mesh, or exports the selected mesh to an .obj
Mesh> Triangulate / Strippify - triStrip meshes are generally more optimized for the game to render. The basic idea is to create a winding strip to loop around- kind of like running a big long ribbon. I'm no math person, and can't describe it well. In some cases, it is easier to use a triShape, things like Armor, Transparent billboards, certain special effect shapes...
Mesh> Prune Redundant Triangles (triShape only) Mesh> Remove Doublicate Vertices' Mesh> Remove Unused Vertices' -I'm a little uncertain of the exact methods here, but should cover for duplicated, samespace items.
Mesh> Face Normals - Sets all vertices normal values to polygon face values. Update tangent space to see changes. Mesh> Smooth Normals' - Average vertex normals to smooth them out. Update tangent space to see changes.
Mesh> Update Tangent Space - Updates or creates a niBinaryExtraData block, attached to the selected shape. (selecting it will render the vert normals, useful for troubleshooting any bad normals you may have) This step is needed for any model also using a normal map. It provides the base of which the normal map will make its adjustments. Tangent space is a little beyond my ability to speak math well, sorry.
Texture > Export Template - exports a wireframe of the UV mapping for the selected mesh, in .tga format, of the specified resolution.
If you've Skinned your mesh, you can create a Skin partition block (if not already present). This is also a needed step.
Alright, I think that covers all the basic nifskope functions, In the next guide, We'll put this into practice.
see also
This guide is part of a series that I have written: Working With Nifs 101 : An Introduction
Working With Nifs 101 : Basic Use
Working With Nifs 101 : Copy and Paste
Working With Nifs 201 : Meshes, Data, and you
Working With Nifs 201 : Practical Use
Working With Nifs 301 : A Checklist
Working With Nifs 301 : Nodes Breakdown
Working With Nifs 301 : Properties Breakdown
Working With Nifs 401 : Particles!
NifSkope Alchemy - This is my first guide, it's a little shorter and is a little quicker and easier to digest than the others.