Search the Community
Showing results for tags 'nifs'.
Skyrim Meshes and Blender ~~~~~~~ Importing and Exporting A couple of caveats before we start; 1. This tutorial is necessary due to the Niftools nifscripts not being current and up to date with Skryim information. This is understandable, it takes a team of volunteer developers time and effort to get there. We need to be patient, and use workarounds such as this for now. 2. For that same reason, Blender v2.49b is used. The nifscripts for the latest 2.6x are not yet up to par and would require extra workarounds. 3. There are other ways to import/export meshes, this is my preferred method. This tutorial is specific to static meshes. Working with armor/clothing is a whole different ballgame and can be found here. Step 1: Preparing the Nif file. -------------------------------------- Open a mesh in NifSkope. Again I'm using clutter\carts\handcart01.nif as an example. In the Block Details, expand the NiHeader arrow. Change the following values; User Version - from 12 to 11. User Version 2 - from 83 to 34. What we're doing here is changing the values from a Skyrim mesh to a Fallout mesh so Blender will recognize it. In the Block List, right-click on the line BSXFlags, go to Block > Remove to delete it. In the Block List, right-click on the line bhkCollisionObject, go to Block > Remove Branch to delete the entire block. Expand the NiTriShape block. Right-click on the line BSLightingShaderProperty, go to Block > Remove Branch to delete the entire block. The mesh will lose all it's texturing but don't worry. Repeat for ALL NiTriShape blocks. We've removed all those lines because, as mentioned above, the nifscripts to import into Blender currently does not know what those blocks are and will throw errors. When done, we have left a very bare bones mesh. SAVE the mesh under a NEW file name. DO NOT OVERWRITE THE EXISTING FILE. I can't stress this enough. I like to prefix my "Skyrim ready" meshes with Sky so I know immediately what it is. So in this example, I've saved it as skyhandcart01.nif. Step 2: Import into Blender ------------------------------------ Import as nif into Blender like you would any other mesh. If you receive an error, double-check you've done everything in Step 1. As this is NOT a Blender tutorial I am not going into detail of what to do once you're there. Do whatever you like to the mesh. The only important step to point out here is to apply a material and texture to the mesh. Step 3: Export from Blender ------------------------------------ When you're finished editing the mesh to your liking, export as nif like you normally would. The only difference here is to export the mesh as a Fallout mesh, not an Oblivion mesh. Remember above where we changed the User Version of the nif to equal Fallout? This is why. Default settings are fine, don't worry about the Collision options, there is none. I prefer to save under a new file name again. Step 4: Clean-up in NifSkope -------------------------------------- Open the newly exported mesh in NifSkope. Expand the NiHeader block in the Block Details. Change the User Version back to the original values for Skyrim. Make sure to do this first as it changes options in the NiTriShape to what we need and will cause errors in later steps. User Version - from 11 to 12 User Version 2 - from 34 to 83 You'll notice, as mentioned in the Dissecting Skyrim Meshes tutorial, that Blender exported the mesh as a NiNode block, but we need a BSFadeNode block for our purposes. Not to worry, this isn't our final mesh so it can be left as is. Expand the NiTriShape block. There's a lot of garbage here we don't need. Highlight the NiMaterialProperty line, right-click and go to Block > Remove to delete it. Highlight the NiSpecularProperty line, right-click and go to Block > Remove to delete it. Highlight the BSShaderPPLightingProperty line, right-click and go to Block > Remove Branch to delete it (make sure it's Remove Branch to get all the sub-properties associated with it). All we want left is the NiNode with a NiTriShape and NiTriShapeData, just like before we imported to Blender. We now have a clean edited mesh. But wait ... it has no collision, material options or textures, so it's next to useless. There are several routes you can go here, again, this is my preferred process. I've learned that trying to copy collision data from one nif to another doesn't always work as planned. So it seems best to copy a mesh from the stripped down version we have now, into a vanilla mesh. Open a second window of NifSkope and load the original handcart01.nif. In our modified mesh window, highlight the NiTriShape line, right-click, go to Block > Copy Branch (make sure it's Copy Branch so the NiTriShapeData is also copied). In the original mesh window, right click on the BSFadeNode line in the Block List area, go to Block > Paste Branch. Our new modified NiTriShape mesh is now added to the bottom of the blocks and you should see it in the render window (it'll be greyed out because we've not added textures to it yet). Repeat if you have more than one NiTriShape to add. Close out the modified mesh window, we don't need it any more. In our original mesh window, expand the original NiTriShape branch and the new modified NiTriShape branch. With the modified NiTriShape highlighted, scroll down in the Block Details to the BSProperties line at the bottom. Expand it. In the first property line, change None to the line number of the BSLightingShaderProperty of the original existing NiTriShape. Our modified NiTriShape should now be properly textured and ready to go. Repeat if you have more than one NiTriShape to change. Highlight the original mesh NiTriShape line, right-click, go to Block > Remove Branch. (Repeat for any other original NiTriShapes you don't need). We're left with our final modified mesh, complete with proper original options, textures and collision. Save with a new file name (it's a new mesh!) and add to CK. As a final word on this tutorial; anyone who knows meshes will know that our collision is not going to exactly fit this new mesh in my example. The collision will still have the cart sides and prevent the player from walking into the side of the cart. But it works for this purpose and will work for anything that's not heavily modified. Collision for Skyrim is a huge messy issue and will be detailed in a separate tutorial for anyone who wants to redo collision from scratch.
Dissecting Skyrim Meshes (De-mystify the mysterious nif) This tutorial uses the latest version of NifSkope as of the time of writing - 1.1.3 - unless otherwise stated. Download at the Niftools website. First off, forget everything you know about any other TES game meshes. Now, let's look at a Skyrim mesh. We'll start with an ordinary static object - clutter\carts\handcart01.nif In the NiHeader we have the important User Version information. Each game is different and you'll understand why I point this out now when it comes time to import any Skyrim mesh into Blender (see Import/Export tutorial) User Version = 12 User Version 2 = 83 Export Info: This is not important but it's a little known field that anyone can change. Made a new custom mesh? Why not put your name on it as the "Creator"? Num Strings and Strings: This is the number and the names of each node in the mesh. It's best to keep this tidy and clean. If you remove any nodes from a mesh you may want to remove it from here too. Note: It really makes no difference to how the mesh works. Returning to the previous picture, in the Block List we have; BSFadeNode - this is the same as a NiNode block, and is Skyrim specific for static items. BSXFlags - a previously existing block type for animation/collision flags bhkCollisionObject - collision block that holds all collision information NiTriShape - a previously existing block type that holds all mesh information So far, the blocks seem familiar to other TES game meshes. Once you dig down deeper, that changes. Any block or option starting with "BS" is a new Skyrim-specific block/option. You'll find them listed in NifSkope if you right click > Block > Insert. All new types are added at the top of the list under "Bethesda". Sorry, I'm not going to explain them all. BSFadeNode: - this block acts just like any other NiNode - this block needs to be manually added to any mesh freshly exported from Blender, as the current Nifscripts will still label it a NiNode - contains all the high level information about the mesh; Number of Children, Collision object, Extra Data Properties, Controllers for animation, etc BSXFlags: - this block is the same as previous games, containing the basic collision and/or animation information required for static objects. bhkCollisionObject: - details the type of collision used on the object, same as previous games - unlike previous games, the Nifscripts is currently unable to export collision data from Blender for Skyrim meshes - a 3rd party tool - NifUtils - is required to 'make' collision objects, or simply re-use collision from an existing mesh - more on collision in a later tutorial NiTriShape: - this block is the same as previous games, but does contain different Skyrim-specific information - this block contains all information regarding the mesh itself - links to NiTriShapeData for specifics - links to new block type BSLightingShaderProperty, which contains all the options for mesh settings - the BSLightingShaderProperty links to the BSShaderTextureSet which directs the mesh to the texture to use Now to dig down deeper into the NiTriShape, as it contains the most important information. You'll notice the new block details line "BS Properties" in the picture above (at the very bottom). There will always be two properties to identify here; the BSLightingShaderProperty is always first, and the second line is for a NiAlphaProperty if required on the mesh. Looking closer at the NiTriShapeData block, there's also a new Skyrim-specific property called "BS Num UV Sets". This is a unique property that has 2 option choices. I honestly don't know what they mean but it is very important. A wrong value can cause the mesh to not work or even crash the game. The definition given by NifSkope is "denotes whether UV's are present" which is odd because everything is UV'd. The values are; 1 for anything that is skin (character related) 4097 for everything else Another important line is "Has Vertex Colors". Skyrim meshes make liberal use of vertex coloring (applied in Blender or 3DS Max) and this line tells the game whether vertex colors are applied or not. Directly below that line you can expand "Vertex Colors" to see on a per vertex basis which vertex has color applied. BSLightingShaderProperty This block contains information regarding what type of mesh this is and what render options to apply. There is a LOT of information in this block but most of it is default. Let's go through the important options; Skyrim Shader Type: There are many options here but most statics are "default". Other values will require additional options. Shader Flags 1: Default options listed. Does not usually require any changes, except for armor/clothing to add a "skinned" flag, and other values for skin data. Shader Flags 2: Default options listed. The SLSF_2_Vertex_Colors option depends on the value of the NiTriShapeData "Has Vertex Colors". If no vertex colors are being used this must be removed. Another common option one might add here is "Double-sided". UV Scale: Should always equal 1.0000. Must be added manually. Texture Set: Links to the BSShaderTextureSet node. Must be added manually. Emissive Color: Should typically always be 0.0. Must be changed manually. Emissive Multiple: Should always equal 1.0000. Must be added manually. Texture Clamp Mode: Should always equal WRAP_S_WRAP_T. Must be changed manually. Alpha: Should always equal 1.0000. Must be added manually. Glossiness: A general setting is 80.0000. Higher is less gloss, lower is higher gloss. Specular Color: Typically equals 1.0000 across the board but can be changed to add color if required. Specular Strength: Typically equals 1.0000 but depends on the object. Must be added manually. Lighting Effect 1: Typically equals 0.3000 but depends on the object. Controls the strength of lighting options in Shader Flags above. Must be added manually. Lighting Effect 2: Typically equals 2.000 but depends on the object. Controls the strength of lighting options in Shader Flags above. Must be added manually. The best advice I can give for these options is to open a mesh similar to what your mesh is and how you want it, and copy the same values. BSShaderTextureSet This is where the mesh points to the texture. Each line is for a specific type of texture (and is explained more in the Texture Types tutorial) That's the most important aspects of a Skyrim mesh explained. More details will be explained in other tutorials that focus more on certain activities.