The Need for a Normal Editor

When rendering 3D models, all of the lighting calculations are done by looking at the normals of the object. A normal is simply a vector that indicates what direction is exacly perpendicular to the surface of the object. So, for instance, the normal of the surface of a table is directly up (represented as a vector). For something more complicated, like the surface of a sphere, the normal of the surface will change continuously as you move around the surface.

The amount of light reflected by an object is based on what the surface's normal is, and in addition, where the light is located at and where the viewer is located at.

In a 3D modeling program, when you build your model, the normals of the object get defined. There are two ways that the normal can be defined. First, each vertex of a polygon can have the normal of the polygon that it belongs to. You can think of this as being very similar to what is called "flat shading". The second method is to set the normal of each vertex as the average of all of the normals of all of the faces surrounding the vertex. You could treat this as "smooth shading".

In virtually every 3D modeling program, the default is to average the normals of the surrounding polygon to determine the normal of a vertex. Also, in some high end 3D modeling programs, like 3D Studio Max, and Maya, I've heard you can edit the normals of the objects you are working with, to get the exact look that you want. However, high end program often cost a lot of money that many people don't have.

This is why I'm creating a normal editor, that is free for anyone to use. While the program does not have support for actual modeling, it will allow you to change the normals of a model that you made in another program. In virtually every significant game that I've worked on, I've wished that I could edit the normals of my model, but haven't been able to. It is because of this that I've created this project.

Just to give you an idea of how this might be useful, take a look at the image below:

NormalComparison.png

You can see in this image that the cube looks much more like a cube in the first column, while the sphere looks much more like a sphere in the second column. The standard 3D modeler will create objects that look like the second column, which is excellent for the sphere, but looks funny for the cube, and other objects that should have some sharp edges.

With this normal editor, you will be able to set your normals up in any way that you want, allowing the cube to look like the cube in column 1, and have the sphere look like the sphere in column 2.