Working With Nifs 101 : Copy and Paste

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search

Zen and the art of Copy and Paste[edit | edit source]

Many actions can be made easier by copy and paste. Many people are combining bits of their favorite armors together, to further customize their game. Some node branches can only be created via copy/paste (vs. create from scratch) Here's some tips for success!

So, we've already covered the basics. We know that we can rClick to access copy, paste, copy branch, paste branch, and paste over, so let's explore this a bit more. Copy vs. Copy Branch: a single copy will only copy the selected node/property/data. Copy Branch copies that, and anything linked to it in the hierarchy. Pasting a branch preserves all the connections that were present when you copied. Also, when you paste, It will be floating loose in the workspace, not connected yet. These newly pasted nodes will have all-new unique numbers starting from the last number of the nif you're working on.


Indexing[edit | edit source]

As mentioned, newly pasted data isn't hooked up to anything yet, and won't work in-game until it is. You need to attach it somewhere. In many cases, you'll either be adding a Child or a Property. Both of these types of nodes have their own index for linking. Let's click the root NiNode, and look down to Block Details: towards the bottom we have Num Children, and Children.


Num Children: This value defines how many entries are in the children list. If you change this number, you need to then rClick on the Children list, and Array>Update to make the change have effect.

Children: When expanded, is where all children are attached to a node. Any child-parent relationship signifies a new branch in a .nif, and is the bread and butter of any .nif file.


So you've pasted something, and need to link it: -Edit Num Children - If you have one object to attach, increase this number by one. If you have three, then increase by three! -rClick the Children list, and Array>Update. -Expand Children (if it isn't), And edit the first "None" that appears in the list. Enter the number for the node you wish to have attached. --The Block List now updates to show the change, the new data is now attached, and should appear at the end of the hierarchy under the node you've attached it to. -Continue to add items, if needed.

Sometimes, we need to unlink these "Parent" values before we can copy. If you need to, Find the parent assignment, double-click it, and enter "-1" to clear the connection. This, by the way is universal for many values, using a -1 to clear the data, rather than a 0.

Some nodes have uplinks: They refer to the parent that links them. For example, a bhkCollisionObject, or SkinInstance. Looking down to the Block Details for the CollisionObject, it has a value for "Parent" which is usually set to "0 - NiNode". A SkinInstance, however, has a value for "Skeleton Root" linked again, to "0 - NiNode". When copying, you will need to keep an eye out for links like this, and here's why: NiNode can be renamed, but usually has a default name of "Scene Root". If you're pasting into a .nif that has a niNode named differently from what you copied, nifskope will throw up an error, and not paste the data.

Example: We're copying the arms from DarkKnight.nif, which has a "0-NiNode (dknight)" into our file, which has a "0-NiNode (Scene Root)". In this case, it's easy to rename the node in darkKnight.nif to "Scene Root" by double-clicking in the Value column of the Block List view. Now we can properly copy and paste over the arms we were after.


Two more common link types are for Extra Data blocks, and Property attachments. Both these lists behave in the same way, but each type needs to be linked to the proper area. Extra data is just that, Oblivion is set to use these for things that don't have a speciality node, or conveys some other special purpose. Properties have an effect on the node they are attached to.

CTRL-UP and CTRL-DOWn with a node selected in the Block List will renumber that node in the hierarchy. In some cases, numbering is important, or maybe you just want an organized file.


Bones![edit | edit source]

When copy/pasting armor, bones are also involved. In Oblivion, there is a structured skeleton with a hierarchy of named nodes that get used as bones. The animation sequences move these bones around on-screen. When we create models to be used as body parts, clothes or armor, we "Skin" or "Rig" them: A process of assigning what parts of a mesh correspond to what bone. This data is saved into a Skin Partition. The Skin partition blocks also refer to the skeleton, these bones must be present in the file you're attempting to paste to. By now, you've seen the list of trishapes, followed by a big list of bone nodes. Sometimes, you may encounter times where the .nif you're working on doesn't have a bone or two. Nifskope will always tell you if it can't find a bone, and name which one it can't find. It's usually easier to work from a file that already has all the bones, you can always delete the ones not being used. But if that isn't the case, try this:

Your source file has a Spine2 being used, but your work file does not. In the source file: copy the NiNode "Bip01 Spine2", and paste that back into your .nif. Click the root node, edit Num Children, increase it by one, and add it to the children list as described above.


see also[edit | edit source]

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.