Part 1 Branching Out
Editing a mesh in nifskope is a lot like using the Construction Set. When you place an object reference in a cell, it gets an x-y-z position in relation to the center of the cell, a x-y-z rotation, and scale. Double clicking on the object reference in the render window shows the exact position of the reference, and lets you input changes. When you rotate the mesh in the CS you’ll notice where the center or pivot point is.
Every block in a nif branches out from what I call the ‘root node’. It will be a NiNode and will be block number 0. This is the pivot point of the mesh. A mesh can have more than one object from the 3D scene it was exported from. Parts of the mesh branch out in relation from the root node, much like object references in the CS are placed in relation to the cell’s center. Any position settings of the root node will be ignored by the game engine.
Loose blocks that do not branch from the root will not appear in game. They don’t have to link directly to the root node, but can link to a node that links to the root node, and so on and so on.
Okay so let’s start with the basics and take a look at a simple mesh and examine how it works. I like money so I’m going to open the gold coin, Gold_001.nif.
I have set my view and render settings as follows:
Notice how it has 2 NiTrishape objects branching out from the ‘root node’. We’ll get into those soon, in part 2 of this tutorial.
Now let’s look at the Block details of the ‘root node’.
Name string : Most of the time it doesn’t matter what you put there and just for organization.
(It will matter when using kf animation files or skinned clothing, but that’s not important right now)
Extra Data : Connects to a NiTextKeyExtraData block for animation groups or other settings.
Controller: Connects animation controller to the node
Flags: Used for different settings. Clicking the flag icon brings up the following menu.
Translation: This is the position of the node in relation to it’s parent node.
Remember the root node will not be affected by any changes you input here.
Rotation: The rotation of the node in relation to it’s parent.
Scale: The scale of the node and all it’s children.
Velocity: *shrug*
Number of Properties: Sets the number of properties available in the index array.
Properties: The index array, or in other words space for inputting property blocks.
Has Bounding Box: Used only for creature collision.
Num Children: Sets the number of child blocks branching out from the node.
Children: the array for inputting block numbers of the node’s children.
Effects: specifies whether this node has environment/reflection maps or not and what they are
Now I’m going to show how to make a copy of the mesh and link it manually to the root node.
I Right click on block number 0, select block, then copy branch.
Now I will right click in the block list, but not on any blocks, and paste the branch
The block list now looks like this. Notice how the new node does not branch off the root node. This is bad if you want it to work in game.
Now lets go to the child array of block 0.
I set the number of children to 3, then update the array. That can be done either by right clicking and selecting array then update, or simply by clicking on the green arrows icon thingy.
There is now a spot to input a new block number in the children array. Let’s go ahead do that now. The new node branch starts with block 10 so I will type a 10 there.
The new node now branches from the root. You still only see one coin, this is because they are occupying the same spot. Lets move the new coin up a couple units. I click on block 10 in the block list and in the block details set the Z translation to 2.
I just did that the manual way to show what was going on with the nif.
Now to show off the easy way of doing the exact same thing I just did. Neato!
I copy the branch as I did before, but this time I right click ON block 0, then paste branch. This will automatically update the child array and link the new branch.
Now I right click on block 10 and select transform then edit.
A cool window pops up.