Jump to content

Pregnancy Normal-map Swapper NG


Recommended Posts

Posted

Pregnancy Normal-map Swapper NG

View File

  

Pregnancy Normalmap Swapper NG is a rewrite of Pregnancy Normalmap Swapper by handroid, reimplemented from scratch as a pure C++ SKSE plugin. The original mod used an ESP with Papyrus scripts — this version replaces all of that with a native DLL, eliminating the ESP dependency and any save-game impact.

 

The plugin automatically swaps body normal map textures based on RaceMenu body morph values. As a morph like `PregnancyBelly` increases, the plugin transitions through progressive texture stages for smooth visual progression.

 

No ESP. No save-game impact. Everything happens at runtime — install or remove at any time.

 

Features:

  • Automatic normal map swapping driven by RaceMenu/SKEE body morphs
  • Monitor multiple morphs simultaneously with configurable combine modes (additive, average, maximum)
  • Per-race texture support with auto-detection of texture stages
  • Weight-variant textures (maps actor weight to different texture sets)
  • Race alias via `Use.txt` (vampire races can share base race textures)
  • Papyrus ModEvent API (`PNSUpdateRequest`) — backward-compatible with the original PNS
  • Force-update hotkey (default: LShift+LAlt+Y, configurable)
  • Periodic polling with configurable interval
  • Works on player and NPCs automatically — no SPID needed
  • Drop-in replacement for PNS v2.x (same texture layout, same API, no ESP required)

 

Normal map textures are NOT included. You need a compatible texture pack such as dw's Pregnant Normal Maps for CBBE 3BA.

 

Requirements

  • SKSE (Skyrim Script Extender)
  • Address Library for SKSE Plugins
  • RaceMenu (provides the body morph and NiOverride APIs this plugin depends on)
  • A compatible normal map texture pack placed in `Data/textures/PNS/`

 

Install Instructions

  1. Extract the archive into your Skyrim `Data/` folder, or install with your mod manager
  2. Install a compatible normal map texture pack into `Data/textures/PNS/`
  3. (Optional) Edit `Data/SKSE/Plugins/PNS-NG/Config.json` to customize settings
  4. Launch the game through SKSE

 

Your folder structure should look like:

Data/
├── SKSE/Plugins/
│   ├── PregnancyNormalmapSwapperNG.dll
│   └── PNS-NG/
│       └── Config.json
└── textures/PNS/
    └── _Default/
        └── female/
            ├── femalebody_1_msn_p1.dds
            ├── femalebody_1_msn_p2.dds
            └── ...

 

 

Upgrading from PNS v2.x: Remove the old mod/plugin (keep the textures), install this version.

 

Credits:

Changelog:

Quote

v1.0.1

 

Fixed

 

  • Texture partitions now documented as starting at `p1` — no `p0` texture is needed. When the morph value is at or below the minimum, the plugin removes the overlay and restores the original normal map automatically. Existing `p0` files on disk are harmless but ignored.
  • Updated README and texture authoring guide to reflect 1-based partitions.

 

v1.0.0

 

Initial release as Pregnancy Normalmap Swapper NG — a full rewrite of PNS v2.x.

 

Features

 

  • Pure C++ SKSE plugin — zero ESP, zero save-game impact
  • Automatic normal map swapping based on RaceMenu/SKEE body morphs
  • Multiple morph support (`MorphNames` array) with configurable combine mode (`MorphCombineMode`)
  • Per-morph key aggregation modes: additive, averaged, maximum (`MorphMode`)
  • Cross-morph combination modes: additive, average, maximum (`MorphCombineMode`)
  • Per-race texture support with auto-detection of partition count
  • Weight-variant textures mapped from actor weight
  • Race alias via `Use.txt` for vampire/variant races
  • Papyrus ModEvent API (`PNSUpdateRequest`) — backward-compatible with PNS v2.x
  • Force-update hotkey configurable as an array of DirectInput scan codes
  • Periodic polling with configurable interval
  • Actor filtering (gender, keywords, child exclusion)
  • Config at `Data/SKSE/Plugins/PNS-NG/Config.json`
  • Linux cross-compilation support via `clang-cl` + `xwin`
  • Drop-in replacement for PNS v2.x (no ESP, same texture layout, same API)

 

 


  • Submitter
  • Submitted
    03/22/26
  • Category
  • Requirements
    SKSE, Address Library for SKSE Plugins, RaceMenu
  • Regular Edition Compatible
    No
  • Install Instructions
    Install Instructions

     

    1. Extract the archive into your Skyrim `Data/` folder, or install with your mod manager
    2. Install a compatible normal map texture pack into `Data/textures/PNS/`
    3. (Optional) Edit `Data/SKSE/Plugins/PNS-NG/Config.json` to customize settings
    4. Launch the game through SKSE

 

Posted

Hey,

this looks very good, though the OG mod says that no "p0" texture is needed anymore. Is it still needed for this NG version of the mod?

Posted

So, what mods needs this? I thought Fertility mode and most of the preg mods used it automatically.....

Posted
7 hours ago, Mister X said:

Hey,

this looks very good, though the OG mod says that no "p0" texture is needed anymore. Is it still needed for this NG version of the mod?

Hey! There is actually no need for the "p0" texture, I've update the docs to reflect it. When the value is 0 it just removes the added normal map.

Posted
38 minutes ago, Uffda said:

So, what mods needs this? I thought Fertility mode and most of the preg mods used it automatically.....

This plugin is independent, it updates the normal-map based on morph values so it should work with any plugin/mod.

Posted (edited)

I get femalebody_1_msn_p1 applied even though the body morph is at 0. Using v1.0.1.

Also, at what morph values are the normal maps swapped and is it configurable? Because I get p2 applied at around 0.1, p3 at 0.2, and p4 at 0.4. But I want to make it swap at 0.2, 0.4, 0.6, 0.8.

What do the options in the config file do? You mention a readme but I can't find it.

Edited by 40Karats
Posted
On 3/24/2026 at 2:14 AM, 40Karats said:

I get femalebody_1_msn_p1 applied even though the body morph is at 0. Using v1.0.1.

Also, at what morph values are the normal maps swapped and is it configurable? Because I get p2 applied at around 0.1, p3 at 0.2, and p4 at 0.4. But I want to make it swap at 0.2, 0.4, 0.6, 0.8.

What do the options in the config file do? You mention a readme but I can't find it.

Each stage is given equal "spacing" between minValue and maxValue.  So if you have 4 normalmaps, and the min/max are 0/1 then it will be from 0-0.25, 0.25-0.5, etc.

The docs where in the src zip, I've now included them in the main zip as well.

I added a possible fix for the first stage, download the new version and test it. You can also try playing with the settings, the docs are in docs/configuration.md

Posted

dw's normalmaps have 5 images (20%, 40%, 60%, 80%, 100%)

does it mean that 20% should be named femalebody_1_msn_p1.dds,

40% - femalebody_1_msn_p2.dds

...

100% - femalebody_1_msn_p5.dds

?

Posted
23 hours ago, NativeEngoyer said:

dw's normalmaps have 5 images (20%, 40%, 60%, 80%, 100%)

does it mean that 20% should be named femalebody_1_msn_p1.dds,

40% - femalebody_1_msn_p2.dds

...

100% - femalebody_1_msn_p5.dds

?

Exactly, start from 1 until how ever many stages there are.

Posted
2 hours ago, SIKguy said:

Can we get VR support?)

No idea how to support the VR version, I only play SE/AE. The source is available in the downloads if anyone wants to make it compatible.

Posted

Will this work? I've got a bunch of stages setup for different normal maps based on weight on the old PNS 2.1. There's line 11 stages of muscle normals from BnP and the p1-5 are stages of pregnancy.

image.png.af8162c771164e77ae18c94b8464046b.png

Posted

Thanks for sharing this mod, I always loved the original version, even though it was known to cause some issues.

Just to warn people switching from 1.0.1 to 1.0.2 on an ongoing save, some textures called by this mod won't load properly anymore. You'll have to start a new game (or clean save maybe, I didn't try) for them to load properly. Luckily I was already planning to start a new game so no biggies for me.

Posted

I have a suggestion: I think PNS was always great for people who put abs on their characters because Mu Dynamic NormalMap's auto generated abs are a bit lacking and they look weirder when pregnant. At the same time Mu Dynamic NormalMap is great for skin indentations. As a compromise to use both, could this mod somehow be made to swap MDNM's overlay and mask textures instead of the regular normals? This way you could have the best of both worlds. PNS handling the belly overlays while MDNM handles the rest.

That being said, thanks for making a SKSE version. It was much needed

Posted
On 3/27/2026 at 9:12 AM, WipeLawn said:

Thanks for sharing this mod, I always loved the original version, even though it was known to cause some issues.

Just to warn people switching from 1.0.1 to 1.0.2 on an ongoing save, some textures called by this mod won't load properly anymore. You'll have to start a new game (or clean save maybe, I didn't try) for them to load properly. Luckily I was already planning to start a new game so no biggies for me.

That's weird, the plugin should not have persisting effects for the save. You should be able to install/uninstall at any time, the normalmaps are replaced on runtime only. I'll investigate to see if there is a persistence issue.

Posted
On 3/27/2026 at 12:00 PM, Whatevs120 said:

I have a suggestion: I think PNS was always great for people who put abs on their characters because Mu Dynamic NormalMap's auto generated abs are a bit lacking and they look weirder when pregnant. At the same time Mu Dynamic NormalMap is great for skin indentations. As a compromise to use both, could this mod somehow be made to swap MDNM's overlay and mask textures instead of the regular normals? This way you could have the best of both worlds. PNS handling the belly overlays while MDNM handles the rest.

That being said, thanks for making a SKSE version. It was much needed

You are welcome! I'm currently looking into integrating it with Mu Dynamic NormalMap and also integrating it better with Skill Based Muscle.

Posted
1 hour ago, Muzako said:

You are welcome! I'm currently looking into integrating it with Mu Dynamic NormalMap and also integrating it better with Skill Based Muscle.

That would be amazing!

Posted
2 hours ago, Qwert_yyy said:

If I remember correctly, the game can't load two normal map textures onto one object and mix them?

Using NiOverride it can only support one normal map. Mu Dynamic NormalMap uses a custom shader. The problem is that the NormalMap expected for Mu Dynamic NormalMap is in a different format and with a mask, completely different from the normal maps expected for this plugin. Mu Dynamic NormalMap overlays/mixes normal maps dynamically, this plugin completely overrides the entire normal map.

I think it's going to be easier to make another plugin that is built from the ground up for Mu Dynamic NormalMap

Posted
20 hours ago, Muzako said:

Using NiOverride it can only support one normal map. Mu Dynamic NormalMap uses a custom shader. The problem is that the NormalMap expected for Mu Dynamic NormalMap is in a different format and with a mask, completely different from the normal maps expected for this plugin. Mu Dynamic NormalMap overlays/mixes normal maps dynamically, this plugin completely overrides the entire normal map.

I think it's going to be easier to make another plugin that is built from the ground up for Mu Dynamic NormalMap

Thank you for your clear and detailed answer.

  • 4 weeks later...
Posted (edited)

I dont see a PNS folder under textures. Am i making my own folders inside this mod or am I missing something? (I'm using mo2)

Edited by calvin67

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...