3ds Max exporting custom assets
Fallout 3 Custom 3d assets with 3ds Max.
(A Custom Helmet)
I found that the existing tutorials were outdated, because they were written with older versions of the exporters and nifskope in mind. Now that the tools have gained support and functionality with working with the fallout 3 nif version, and the custom blocks Bethesda made for the game, I think it is time to start updating the instructions for getting custom assets in game, avoiding *most* of the unnecessary nifskope jiggery pokery. And hopefully I have some useful tricks not often found in any of the guides as far as I have read.
The first object I am going to demonstrate is a helmet.
The aim: To explain the process I use for getting an unrigged/unskinned helmet exported, ready for in game use. Including export setup, exporting (nearly) straight from Max to the game, without using any vanilla assets to piggy back data from.
Niftools Max plugin V126.96.36.19928, downloaded at niftools development forums
the Conformulator by Scanti
Archive Invalidation Invalidated
Extract the contents of the Meshes.bsa, I used FOMM to do this.
Open your max scene with your custom helmet. Delete/Hide everything you don't want exported. Import the headhuman.nif and in the niftools importer dialogue box tick the import skeleton. Its default location is meshes\characters\_male\skeleton.nif. I also usually have the body mesh in scene as well, it just gives me an even better idea of proportion and placement for my helmet.
If you haven't already made your helmet fit the player model head. Do this now. Here is what I have in my Viewport.
I now make sure I have reset Xform on my helmet. again. Just to make sure. Then collapse the modifier stack or just right click and convert to editable poly.
Hide everything except the skeleton and the helmet.
Now you may have been wondering why I imported the skeleton at all, as I am not going to do any rigging. Well, this is how I get the helmet to align to the players head when it's in game. Instead of estimating where it'll sit on the players head, this method ensures it sits exactly on the player head in game, as it does in your viewport.
Select your helmet. In the hierarchy tab, select "affect pivot only". press shift+a to activate the quick align tool, Now select the Bip01 Head bone. Now your helmet is in the same position, but its pivot point is the same as the Bip01 Head bone.
Once done, deselect affect pivot only.
Now press W, and simply put 0 in xyz for the helmet.
TIP: This works the same with all other meshes- I see a lot of tutorials telling you to mess with the translation of the mesh, and juggling your mesh around in nifskope. Those are very outdated workflows. for anyone creating/converting their own assets, direct export to game is imo faster and more precise. For an oft used example, a weapon mesh. you do still have to find a vanilla one that is close to your new mesh. This is purely alignment reasons, because we are not going to create new animations specifically for the new weapon, and not because we are going to have to use any of the parts of the nif what so ever. We export everything 100% free of recycling vanilla assets. So import that donor nif into the same scene, move your mesh to sit right where you want, as close an approximation as you can get, particularly the grip and trigger areas. Set all the pivots to match the correct nodes. match all your objects names to the donor weapons. Then export. With just tweaking a couple minor setting in nifskope, it'll work and play animations.
If you want to export with an objects pivots and rotations intact in the nif, with affect pivot only enabled use orientation in the align tool menu to match rotations between objects as needed, In the niftools export dialogue you must untick Zero Transforms in the export dialogue to get the correct mesh translation, and you must untick Collapse Transforms to get proper transforms/rotations in a hierarchy working/the mesh will inherit zeroed rotations from the scene root. Also you must untick everything under the Skin Modifier or it simply act like zero transforms is ticked. This is important for all weapon exports in Fallout3/NV, Prn attached helmets in oblivion and generally anywhere you wish to keep the numbers in an objects transform matrix intact.
So press "M". and drag your textures from your explorer window to the appropriate map slots. diffuse(color) map, and a normal map are what you will need to set up 99% of the time. Don't worry about setting up the normal bump like you would normally in max, just putting it into the bump slot works fine for export. Set up the spec, emissive and gloss parameters however you wish.
Now just drag that material from the editor onto your mesh.
For completeness sake, you can now delete the materials name, materials do not have names in F3, it's a good idea to always clear them before export or in nifskope. Exporting them will just add another string name to the index array.
Hide everything except your helmet mesh. or delete everything else. At this point I will double check everything looks good.
Here is my exporter dialog settings I used. Under Game, make sure to select Fallout 3 from the drop down.
I also exported it as a NiTriStrip. By ticking the generate strips box. If this model used alpha transparency(or was rigged), I would have unticked that box, as very often stripifying causes alpha sorting problems.
As a general rule, I export as NiTriShapes for everything that is skinned or has alpha transparency. For everything else I export as NiTriStrips as they are more optimized and draw faster.
Since F3 helmets have zeroed rotations in their transform matrix, I want to the transforms to be zeroed and would use the above exporter options, however if this was an unrigged helmet Oblivion or a Fallout3 weapon I would probably use export options more like this to keep those important numbers intact.
TIP - Read the breakdown of exporter dialog options on the niftools website if you want to know what everything actually does, you will at least have a better understanding of it.
We need to do a few things to get our helmet working correctly. Open it in nifskope. check triangulation briefly, give it a once over, fix any issues and reexport if necessary.
1: First is to go into the BSShaderPPLightingProperty. Untick all the shaders except SF_EMPTY and SF_Unknown_31. We can add some back for special shaders later without any harm. (note these shader flags names have probably changed in later nifskope versions..)
2: Spells> Batch> update tangent space
3: Add a Prn NiStringExtraData node to the Scene Root, right click>node>attach extra data>NiStringExtraData. In block details change its name to "Prn" and its String Data to "Bip01 Head". this is what attaches your helmet to the head bone, as if is was rigged to the specified bone.
Move the Mesh and textures to your fallout3 data folder. Open your exported nif in in the GECK model viewer, right click>open with> GECK. If it doesn't crash then you probably did everything right. You can check your shaders and textures here. Though the lighting renderer looks slightly different than in game, it is a fairly good representation of your asset.
Making an egm
If I am happy with the asset and do not need to reexport the nif for any reason, I make the egm now. If you end up having to reexport you'll probably have to create a new egm. So I leave it for last. Follow the instructions with the conformulator for making an egm. It won't accept F3 nifs, or at least reportedly so, I always export an obj from my final helmet nif (done from nifskope) to use as the mesh input anyway. Just an old habit from using the first versions of the conformulator that couldn't read nifs.
Note: I was told by scanti, the creator of the conformulator, that rigged objects, and nifs with multiple objects won't or may not conformulate correctly. this is actually evidenced in a lot of what bethesda has done in oblivion, though there are egms for rigged helmets in F3, though I believe they are just bloat files. The hair nifs have 2 objects in them, nohat and hat versions, So you need to export each of these mesh objects as a separate OBJ, and conformulate each one to get their respective egm file.
When planning your helmet, it maybe wise to try to keep everything onto one texture sheet if it is an openned face style helmet. If the helmet is closed and cover the whole head and neck, then facegen is a non issue, and it can safely be multiple objects using different textures.
Your nif and egm must have the same file names. If they do not match the game will not find it. ex:
Set up your new helmet in the GECK, you do need to update facegen model availibilty. To do so look under characters in the main tool bar, hit update facegen model availability. If you do not your headgear will be misaligned in game.
save your plugin.
Test in game.