File information

Last updated

Original upload

Created by

Thrillvilled

Uploaded by

Thrillvilled

Virus scan

Safe to use

About this mod

A Windows batch-based tool for generating normal maps from BMP textures with customizable color channel processing for game development workflows.

Permissions and credits
Changelogs
Donations
Overview:
This tool provides a step-by-step workflow for generating normal maps from BMP height/diffuse textures. The core Python script recursively processes all BMP files in the directory structure, generating normal maps with customizable parameters. The tool then provides batch files for color channel optimization and format conversion based on your target application's requirements.

You can find the GitHub version here:
Normal-Map-Generator

If you like to see the normal maps that have been generated in action for Skyrim SE, Fallout 4 and FlatOut: Ultimate Carnage you can get them here:
Skyrim SE Normal Map Texture Pack
Fallout 4 Normal Map Texture Pack
FlatOut: Ultimate Carnage Normal Map Texture Pack

Prerequisites:
Windows Operating System
Python 3.x installed and added to PATH
ImageMagick installed and added to PATH (required for color channel removal and format conversion batch files)
Required Python libraries (PIL/Pillow, NumPy, etc.)

Key Features:
- Recursive Processing: Automatically finds and processes BMP files in all subdirectories
- Smart Naming: Generates normal maps with `_n` suffix (e.g., `hat.bmp` → `hat_n.bmp`)
- Skip Existing: Won't reprocess files that already have `_n` suffix
- Customizable Parameters: Edit `main.py` to adjust scale, component inclusion, and flipping options

File Structure:

Normal Map Generator/
├── [Your BMP files can be anywhere in subdirectories]
├── 0 - Generate Normal Maps.bat        # Main normal map generation (calls main.py)
├── 1 - Remove Blue Color Channel.bat        # Remove blue channel from generated maps
├── 1 - Remove Green Color Channel.bat     # Remove green channel from generated maps
├── 1 - Remove Red Color Channel.bat        # Remove red channel from generated maps
├── 2 - bmp to tga.bat                    # Convert BMP to TGA format
├── 2 - convert tga to bmp no alpha.bat # Convert TGA to BMP (no alpha channel)
├── 2 - dds to tga.bat                     # Convert DDS to TGA format
├── 2 - tga to dds.bat                     # Convert TGA to DDS format
├── 3 - remove bmp files.bat                # Clean up BMP files
├── 3 - remove dds files.bat                 # Clean up DDS files
├── 3 - remove tga files.bat           # Clean up TGA files
└── main.py                            # Core Python processing script (editable settings)

How to use:
Make sure that the files that you want to generate the normal are in the bmp file format.
Then you can place the files inside of the Textures To Be Generated folder and then click the 0 - Generate Normal Maps.bat file to start generating the normal maps.
You can edit the py file and then be able to edit the following to your specifications:

# ===== NORMAL MAP SETTINGS =====
SCALE = 10.0           # Scale/strength of the normal map (higher = stronger)
X_COMPONENT = True     # Include X component (Red channel)
Y_COMPONENT = True     # Include Y component (Green channel)
FLIP_X = False         # Flip X component direction
FLIP_Y = False         # Flip Y component direction
FULL_Z_RANGE = False   # Use full Z range for better contrast

You can adjust how strong the scaling will be lower values like 3.0 - 5.0 are great with games that are sensitive to how normal maps look. 10.0 is great if the the texture has loads of detail that you want to see.

You can also flip the X and Y components by writing either True or False and you can also flip the Z range too.

Once the files are generated you will see a suffix being added like _n.bmp to show the normal map version. You can run the 0 - Keep Normal Maps _n - bmp.bat file to discard the diffuse maps if you like. If you want to rename the files in a batch processing way you will need to get Microsoft PowerToys which can help a lot if you are dealing with loads of files at once.

You can also remove any color channels that your game doesn't use since not all engines process normal maps the same way. You can run any of the 3 remove color channels . bat files to get the right normal map for your game.

Once you are happy with the normal maps that have been generated you can then edit them or add what ever alpha channel you like. Currently making a tool that can auto make an alpha channel for your normal maps. So at the moment you can free edit them manually for your game.

Then you can use the conversion bat files to change the format for your game ideally bmp -> tga -> dds. In order to preserve the detail the dds files that have been made are 32 bit dds files. If the game however doesn't support 32bit dds you can edit the tga to dds conversation to only use DXT5 if the game that you are working on uses alpha channels.

Acknowledgments:
- Built for game developers and modders working with various engine requirements
- Designed for Windows batch processing workflows
- Designed for those who just want a normal map generated in a pinch without spending loads of time creating the files

LICENSE:
This project is licensed under the MIT License - see the LICENSE file inside of the folder for details or you can go to the GitHub link and view the details there.