About xNormal

"xNormal" is a free program designed for the sole purpose of generating various kinds of texture maps from 3D meshes. It does not handle editing of meshes in itself, that will need to be done in an actual 3D package.

xNormal is fairly easy to use and tends to produce fairly high quality textures. But keep in mind it is not a painting program, it will not create color textures for you, it is primarily for generating normal, bump, cavity, parallax, and displacement maps.

One great quality of xNormal is one of those programs that does not require install. If you install it once on one machine it is perfectly possible to move the install directory to a thumb drive or another computer and run it by opening the "xNormal.exe" within the "xNormal > x63" directory.

Click this link to be taken to the xNormal web site where you can find a download for the program.

Take note of the "tutorials" link on their site as well. It contains several in-depth pages about how to use the various functions of the program (although most of them need to be downloaded to view).

The Interface

The interface of xNormal is fairly straight forward. Upon opening the program you'll find a single window with a tab-based menu list on the right. Selecting different tabs in this menu (indicated by the green arrow) will change the main window area in the center of the program.

The vertical "RAM" bar on the left merely displays the currently used random access memory availability on your system. The light in the far lower right that switches between red and green is there mainly to show that the program is still running during texture generation when it may seem to otherwise stall.

Probably the most user-unfriendly quality of the program is that it does not use your operating system's window structure. You'll have to click the "X" in the lower left to close the program and there is no way to resize the window.

Here is a short explanation of the most useful tabs and the ones that are essential to producing a normal map from your 3D models.

High & Low Definition Meshes

The first two tabs you'll see in the vertical menu are "Hight definition meshes" and "Low definition meshes". These two menus are where you'll define the path for the program to load your low and high quality meshes. Make sure that you don't accidentally place the high definition mesh (the detailed high-poly count mesh) in the place for the low definition mesh (the low poly mesh more suitable for real time rendering).

In either menu you'll see a similar interface for importing and changing behaiors for individual meshes (indicated by the red arrow). The main window will initially start with a single line entry upon which you can either drag and drop your mesh file from a file explorer or simple right-click the blank area of the list and select "Add meshes" before browsing to your mesh.

You will not need to worry about whether or not your models have color maps associated with them yet. The creation of normal maps does not typically depend on the existence of color textures.

However, remember one requirement, your low polygon mesh must have UV coordinates on the model to create model-based textures. Not having a UV map assigned to the object will result in a random, messy set of islands and polygons for your generated map.

Probably the most common problem that appears when creating a normal map is not casting rays far enough from the surface of the low poly object. This can result in "holes" or flat areas in the normal map when you should otherwise be seeing the surface of the high poly mesh. This can be fixed by increasing the the maximum distance of the ray cast in the "Low definition mesh" screen. Simply increase the value under the "Maximum frontal ray distance" column so that it is larger than the largest distance between your low poly surface and your high poly surface.

Baking Options

The "Baking options" tab menu (shown below) is where you'll be able to decide a few major qualities for the map to be generated.

  • The location and name of the image file to be generated can be decided by clicking the "Browse" button in the upper right of the main window (indicated by the blue arrow).
  • The size of the texture file to be generated can be selected directly below that by choosing a predefined measurement from the two dropdowns (which of course will be the width and height of the texture). This is indicated by the yellow arrow.
  • Under the "Maps to render" section on the lower left you'll see the full list of texture types that xNormal is capable of outputting. Since Normal maps are the main attraction of the program the "Normal Map" option will probably be selected by default. Change the selection as you see fit.

The 3D Viewer

Once you've loaded a mesh into one of the slots in the "Low Definition Mesh" screen the path to it should appear here by default. If it does not, as usual, you can click on the green "browse" icon with three dots to find it yourself.

On this screen you also have the option of adding a path to the color texture if it is ready. Just change the "base texture" path with the browse menu.

You will also need to point the "Normal map" texture to the texture you created earlier.

Once a mesh is loaded pressing the "Launch Viewer" button in the lower right of this screen will take you to a 3d screen showing your model and the normal map you've made for it.

The controls for the 3D view are not unlike a video game.

  • The W, A, S, and D keys will move your camera position.
  • Holding down the right mouse button will allow you to change the direction of the camera.

You may also see that xNormal tries to display your high poly mesh by default. On the left side of the screen are menu options where you can turn this off to leave only the low poly mesh showing.

Settings and Examples

This screen allows you to save and load settings for all of the changes you've made after opening xNormal. It can be useful for continuing work on complex projects that might require you to come back to change small settings later.

Step by step

A typical, basic workflow will then look like this after opening the program.

  1. Left click the "high defintion meshes" tab.
  2. Right click the blank entry in the center window and choose "add mesh".
  3. Browse to your .fbx or .obj model and select it. The file should be listed in the main window.
  4. Left click the "Low defintion meshes" tab.
  5. Repeat the process but point xNormal towards your low-poly mesh.
  6. Left click the "Baking options" tab.
  7. Use the Browse button (the green square with three dots) to pick and name a location for the output normal map.
  8. Left click the "Generate Maps" button in the lower right. Wait for the process to finish.

At this point if the normal map shown in the preview screen that has popped up seems to be acceptable then you are done. Otherwise press the "close" button a the top of the preview screen to close it and either retry with different settings or reconsider your models themselves.