Monday, August 10, 2015

Sentinel Armor: Almost done

I thought I'd have the armor done this weekend, but I ran across a handful of issues during testing:

  • Normal maps were barely being applied
  • Everything was overly shiny
  • Only the necks of character models weight slide, heads stay the same.
  • Collision for the objects were way off.

Normal maps weren't being applied correctly due to 1) my meshes using the wrong value for "BS Num UV Sets" (1 instead of 4097) and 2) me not updating the tangents. Correcting those mistakes actually brought out the normal map's details.

Up next was every setting I used turning my armor to chrome. After looking at Bethesda's textures, I noticed that not only was the "Specular map" (actually, the environment strength map) different from the alpha channel of the normal map (which is actually the "specular map"), it was also a fraction the size of the diffuse map. As a test, I removed the black lines from the base texture to see how well the normals showed.

After a quick jaunt through NifSkope and Photoshop, I was presented with decent looking armor.


However, something looked rather off about the edges. They were the wrong direction and rather choppy. Given it'd been some time since I made normal maps, I mistakenly hit the "Invert Y" toggle in Nvidia's Normal Map plugin. Direction issue solved.

The jaggedness of the normal maps was due to not having layered normal maps (read it in a tutorial somewhere, a few years ago). A layered normal map consists of multiple layers of the diffuse texture, using a different normal filter type on each (4x4, 5x5, 7x7, etc), and overlaying them on each other. This reduces jagged details and helps accentuate varying heights on the normal map.


Adjusting the necks looked to be a tedious venture. Reason: I exported the neck AND the helmet meshes together as a single NiTriShape instead of separate. This meant any change to one element would require completely replacing the target mesh. Additionally, I would have to use 3ds Max to remove the neck mesh and re-export it for the Mundane variant. Given that my 3ds Max license is on its last legs, that wasn't going to fly.

To fix this, I split the helmets into their components and exported them together so the resulting Nif would have two NiTriShapes. That way, I could use NifSkope to delete the neck meshes for Mundane variant without much hassle.


I never made a collision model for the Sentinel Armor pieces. Instead, I swapped collisions in from vanilla armors. Bad idea. Aside from having differently sized meshes, I had no idea what values were needed or what they should be set to (translation, radius, rotation, etc). Throwing the ground objects around resulted in some wacky collisions where they'd clip through walls, the floor, each other, etc.

I took to Google for the answers and came across this thread (http://niftools.sourceforge.net/forum/viewtopic.php?f=38&t=4207#p26754) which included step by step instructions for convex shape collision creation.

Side note: Making collision models 10x smaller than the actual mesh is bizarre. You're going to make them fullsize in game later, so why not cut out the middle process? *sigh*

With those four issues taken care of (and replicated for the Unique Sentinel Armor variant), I'm testing how the armor works ingame. Specifically crafting, tempering, and enchanting.

No comments:

Post a Comment