Blender and True-Normals:
Rendering Moi3d Models


Normals

A true normal is the actual normal at a point on a surface. For a given vertex, the true normal can be approximated by calculating the weighted average of the face normals that surround that vertex. MoI always uses true normals; Blender uses approximated normals.

Importing and Exporting

A while ago, I wrote a Blender script that imports MoI's true normals into Blender. See this post for more info.

The problem is that Blender recalculates the vertex normals when performing either of these two actions:

  • editing the mesh (i.e., press TAB).
  • rendering the scene.

There are other actions that trigger a recalc, such as joining meshes, applying modifiers, flipping normals, assign a material to selected faces, editing UV coordinates, etc., but the above two are the most common.

This makes the script somwehat useless. However, if exporting to an external renderer (without performing any of the above actions) then the true normals are exported and rendered properly, provided that the renderer does not recalculate them.

The best solution is to enable Blender to leave the imported normals alone, and the following custom build does just that. My script is now much more useful.

True vs. Averaged Normals

Note: The following tests were made with MoI v1. If using v2, make sure your LWO options are set to "Modo style normals."

The object is a simple sweep with a G3 fillet at the bottom, which happens to cause some nasty artifacts. Note that the highlight is much smoother in both, and all rendering errors pertaining to normals are completely gone. As you can see true normals can make a big difference.


Blender's OpenGL preview:
OpenGL difference

Blender's Internal Renderer:
Render difference

Installation

Rename your original 2.49b executable, and put this one in the same directory. To make sure you are running the modified version, check the about box. It will will have a 2010 build date at the bottom.

A complete build of Blender 2.5 (svn version 30116) can be downloaded here (20MB). Just unzip and run it. Includes a script that imports MoI's true normals.

Usage

To use imported normals, you must enable the "Preserve Imported Normals" option in the System tab of user preferences. Then, import your objects. If you enable this option and save the preferences, you will be in MoI mode all the time. Disabling this option returns Blender to it's previous state, and pressing TAB or rendering will recalculate normals.

Blender 2.49b:
Do not recalculate normals when rendering or editing

Blender 2.52:
Do not recalculate normals when rendering or editing


This page was created on May 31, 2010
Copyright © 2010 Anthony D'Agostino
All rights reserved.