About this image
Adaptive Dynamic Overlays (AKA Body Tattoos)
Finally got the overlays to work correctly using my SKSE plugin, it uses a nif template to add an extra node to the Actor and copies the skin's geometry (This is the adaptive part, it will conform to mesh changes).
This feature is included in my NetImmerse Override plugin, which does various other things. You can configure the number of layers, the default will be 3. I'm not sure the consequences to having a lot of layers, essentially the entire body mesh is being re-referenced, which could have a performance impact on low quality PCs as it is being rendered multiple times but with a different texture and shader effects.
Heres what some of the functions look like from my test code:
NiOverride.AddNodeOverrideInt(Game.GetPlayer(), true, "Body [SOvl]", 0, -1, 0xFF00FF00, true) ; Set the emissive color to green
NiOverride.AddNodeOverrideInt(Game.GetPlayer(), true, "Body [SOvl]", 7, -1, 0xFF00FF00, true) ; Set the tint color to green
NiOverride.AddNodeOverrideTextureSet(Game.GetPlayer(), true, "Body [SOvl]", 6, -1, Game.GetFormFromFile(0x809, "BodyTattoo.esp") as TextureSet, true)
NiOverride.AddNodeOverrideInt(Game.GetPlayer(), true, "Hands [Ovl0]", 0, -1, 0xFFFF0000, true) ; Set the emissive color to green
NiOverride.AddNodeOverrideInt(Game.GetPlayer(), true, "Hands [Ovl0]", 7, -1, 0xFFFF0000, true) ; Set the tint color to red
NiOverride.AddNodeOverrideTextureSet(Game.GetPlayer(), true, "Hands [Ovl0]", 6, -1, Game.GetFormFromFile(0x811, "BodyTattoo.esp") as TextureSet, true)
The overrides are also capable of starting/stopping time controllers via script.
I intend to use a special layer designated for Spells "SOvl" indicates Spell Overlay which is the topmost layer to the overlays for a glowing tattoo mod based on your magic proficiency.
3 comments
I remember there being mods for previous games that altered the whole texture just to get things like nail polish and only had specific colors. Now you can just modify the shader properties of the existing overlays to use an alpha texture as well as a custom tint for recoloring. The emissive color can also be altered for glowing.
Here's the current Papyrus definitions:
NiOverride.psc
Currently I can only add specific overlays as the template meshes have to be attached at load-time, which occurs before the save actually loads, so if I were to add the ability to add your own overlays I would need to load data outside the co-save before the actual save is loaded (Probably not going to do this).