User blog:HaLo2FrEeEk/Ooooh, shiny!

Some of you might have noticed some new images for a couple weapons around the Wiki. For some reason I got it in my mind to try to standardize the weapon and armor images and, having the meshes and textures from Skyrim, I decided that the best way would be to make it overly-complicated...because that's what I do.

(examples) Glass Sword Elven Sword Wuuthrad

It's not a simple process getting these renders, either, so I thought I'd explain exactly what I do to make it happen:

First I identify which weapon I want to render, that's the easiest part of the whole process.

The meshes are in NIF format, which is a format readable by the Gamebryo engine, the engine used by Skyrim, so I need to import it into 3ds Max using the NifTools 3ds importer.

Once I've got it into Max I delete certain parts of the mesh that aren't needed for the render (like the scabbard for certain blades, or the one called "BloodEdge" which shows and hides itself to make blood appear). I then attach the remaining parts into one mesh (if necessary). After that, I select the mesh and go into Editable Mesh, select all the vertices and weld them, which smooths the mesh and closes seams.

I then open up the Material editor and look at which textures are used, then open those files in Photoshop and save them as Bitmap (they come in DDS format, which is popular in games). Finally, I export the mesh to .3ds format, and close Max.

Now I open Cinema 4D and import the .3ds file in to a scene. The first thing I do is create a target camera with the target at world center (0,0,0) and the camera directly above it, pointing at the model. Since the model's axis point is rarely ever properly centered, I center it and then move the model to world center so that the camera can see the whole thing and I can zoom in as close as possible. Now I go into Polygon mode, select all polys, and optimize them. This is similar to what welding the vertices does in Max, it just smooths the mesh a little more, making it perfect.

Now I have to recreate the material because, for whatever reason, Max doesn't properly export it. It's usually simpl enough...unless the material has an environment map (I'll get into that in a sec). It's pretty self explanatory, the textures are named like "modelname" (sometimes "modelname_d"), "modelname_m", "modelname_n". Those are the diffuse (color), mask (for the environment map), and normal. Character models also sometimes have a _sk and _s, which are skin gloss and specular color, character models' normal maps are also done differently, they use a special type of normal map that is object based, not tangent based (instead of _n in the filename, it's _msn).

Anywho, Environment maps. For years game artists have used what are called cube maps to fake reflections, since rendering actual real-time reflections is very resource intensive. Cube maps are 6 square images that represent each side of...a cube! When applied, the object can take it's reflections from the cube map, which is essentially a pre-rendered environment, instead of taking them from the actual environment, which would require re-rendering the environment. Unfortunately, Skyrim's cubemaps come in the form of a strip, the width is 6 times the height (so, for example, 192x32, so 6 32x32 squares), and the squares in the strip aren't lined up in the proper order, nor do they have the correct rotation to fit together, so I have to do that manually. Referring to the image above, the order is:

1: Right 2: Left 3: Back 4: Front 5: Up 6: Down

To get the tiles to line up properly, they need to be rearranged to this order, and rotated by the value in parentheses:

1: Front (0°) 2: Right (90°) 3: Back (180°) 4: Left (-90°) 5: Up   (0°) 6: Down (180°)

Once I do that, I save it and import it into a program called Pano2VR, which is able to convert a cube map strip into an Equirectangular spherical map.

Now my material is done and I'm ready to render.

I render to a 1920x1200 TIF file with an alpha channel, then I open it in Photoshop. I apply the alpha channel as a layer mask, then trim the canvas so that is's just the render. Then I pad the canvas back to a square (so if, after trimming, the height is 1177 and the width is 161, as in this case, then I make the width 1177 to match the height). Finally, I shrink the image down to 1000x1000 and save it as a PNG and upload it to the Wiki!

And the final result looks pretty good, if I do say so.

Anywho, I hope at least one of you enjoyed reading this lengthy tome of a blog post. If you have anything to say about the renders, please, comment on this post and I'll answer whatever I can.

<3 HaLo2FrEeEk (talk) 11:55, January 21, 2012 (UTC)