This article is more of a guide than a tutorial, probably not suitable for the absolute beginner. The underlying intention is to showcase some of the knowledge the TES4 community gathered about the editing of Oblivion's Nif files, a knowledge that is learned and therefore subject to be quite wrong and/or incomplete.
The article will cover the basics of importing and exporting meshes, but will neither deal with problems nor offer solutions to them. That is a wholly different category, and equally complex.
A few tools are needed to follow this guide, namely
- The BSA unpacker by Ghostwheel (available here).
- nVidia's .dds plugin for Photoshop (and apparently PaintShop Pro) (available here).
By now, you should've unpacked your .bsa files, you know the basics of retexturing and you have a fairly good grasp of how normal maps work. You've probably taken a gander as to how NifSkope works, and know that you can replace or modify the data given in a .nif file, but aren't sure where to start? Or none of the above, in which case you might be reading the wrong guide :)
Let's start by pretending we have a custom model we want to change, for example Meshes\mine\Sword.nif.
Oblivion's Texture Path
To start with textures, it is important to note that NifSkope needs to be configured properly. Go to the menu Render > Settings..., there you will specify Oblivion's texture search path. Add a new folder and select Oblivion's Data folder (not Data\textures). Alternatively, you might want to use the auto-detect feature (more information about the texture path setup can be found in the Setting the Texture Search Path article).
Color and Normal Maps
Nearly every Nif has two texture files associated: A color map containing the visible texture (ie. Sword.dds), and a normal map that is used for proper lighting of the model (ie. Sword_n.dds). The naming scheme isn't arbitrary, Oblivion will always and only look for normal maps by the filename texture_n.dds - that also implies your filename cannot have underscores. The common file format for textures in Oblivion .nif files is, as by the example, the DDS format.
In an opaque color map, the Alpha channel should be white. If you are using transparency, black is fully transparent, and white is non-transparent. There are further steps needed in combination with transparent objects, they are discussed later in this article.
For the normal map, the alpha channel controls the amount of specularity on the mesh, this time the relation is: black = not shiny, white = shiny.
There is a wiki article entirely dedicated to changing textures with Nifkope: Change Textures in NifSkope
Some Nifs use glow maps, which use a similar naming scheme to the normal maps: texture_g.dds (ie Sword_g.dds. Much like the normal map setup, the engine automatically detects a glow map for your texture and uses it. Glow maps control how the material is affected by darkness: By default, Oblivion will fade a texture to gray as it moves into darkness. The glow map can override this behavior, Glass Armor is an example for that.
Looking at the glow map's DDS file, we see a grayscale image. Black means normal lighting behavior, whereas white evolves to a fully lit texture even when in complete darkness.
Another neat trick here, is to make a colored glow map. for example, black fading into an intense red. Now, you will see that as displayed in the light there is no red. When in the darkness, You will see the red, and how it fades out. The image to the right demonstrates a colored Glow map under different lighting. The top left image is the mesh with no glow map applied. You can see how the colors get modulated into the color of the light.
Adding Glow Maps
Say you retextured a chainmail cuirass, but want to use a glow map.
All you need is the glow map file in the correct folder with the correct name and a white emissive color set in your model's .nif file.
So, after you made sure that there is a file Sword_g.dds directly next to the Sword.dds texture, open your Sword.nif model in NifSkope.
Search for the NiTriStrips or NiTriShape block that is the mesh using your glow map. It should contain a child object of type NiMaterialProperty - click on it's little palette icon. Move the Emissive slider to white, and save.
The result should be a working glow map.
You can also assign a glow map in NifSkope, which is not the way Oblivion works, although it doesn't seem to cause problems. Right click the NiTexturingProperty, and select Texture > Add Glow Map. This method is only good to increase filesize a tiny bit - but it can be handy as a reference, to see what you are doing while you are working on your textures.
There is not much to say about NiMaterialProperties: You can change a few values with little effect here, since most of the appearance is governed by texturing.
There are a few cases in which the name of a material is important for the engine. Those cases are
- skin (lower-case). Applies the skin-only shaders to the mesh.
- Hair. Applies the glossy hair rendering Oblivion uses.