Noors Normal Thief

6 votes
Date Updated: 

This script will transfer the normals from a source object to a target object, based on distance.

Transfering normals might have several uses : fix shading artefacts, enhance foliage cards look, toon shading...

Pick the source object, select the target object/faces and press steal !

  • Works with any geometry object.
  • Keeps the stack.
  • Adds an Edit Normals modifier.

Script will be found in the customize UI under category "Noors"


  • Fixed projection not acting correctly when source object has transformations.


  • Transfer normals on target selected faces instead of all object. If no face selected, transfer on all object.
  • Get normal from closest point instead of closest vertex.
  • Removed the target object pick button.


  • Like Normal Thief or Slide Normal Thief, but faster.

Please report any bug or question in the comment section.


noorsnormalthief1.1.1.ms5.22 KB
noorsnormalthief1.0.ms4.67 KB


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Noors's picture

Yes objects have to be at

Yes objects have to be at their right places ("overlaying"), but their pivots don't have to be at the same place, I'm not taking them into account.

Noors's picture

Yes it's a macroscript. It

Yes it's a macroscript. It has to be launched from UI (button, hotkey...).
You can remove the macroscript first lines if you don't want that behavior, but drag dropping a script each time you want to execute it is not very clean.

Jony_P's picture

Everything is good!

Thanks to all! When I ran the script, I thought that it would launch on its own. But it was necessary to create a toolbar to run on the control panel!
If anyone comes across this, here is an example:

Jony_P's picture

Script not run from beginning

If you write to me, then my problem is that the script does not start at all! In first case (v1.0), there is simply no reaction at all, as if there is simply nothing, in another case (v1.1.1) it gives an error (Syntax error: at bad, expector In line: n = Ї). We are talking only about the launch of the script itself, even before the start of any manipulations with polygonal models!

AD67's picture

Actually it works!

For those that have issues: both source and target must be at 0,0, or at least on top of each other otherwise there is some relative offset taking place.....

Jony_P's picture

There is a problem

Hi, everybody! I tried to run noorsnormalthief1.0 on 2009 max and nothing happens, after i tried noorsnormalthief1.1.1 and max writes: Syntax error: at bad, expector In line: п=Ї
Someone has an idea?

3dwannab's picture

Thanks. But this seems to

Thanks. But this seems to make the script repeat it's normal procedure over and over again pardon the pun.

If I don't press escape then it'll keep repeating the same fn.

NWDA's picture

Many thanks

Very useful tool

New World Digital Art |

barigazy's picture

Code of this tool is very

Code of this tool is very clean and well optimized. Progress bar will slow down the process but you can add by yourself in the line 13 cancel option by pressing ESC key.

fn projectNormal sObj t1Obj = while not keyboard.escPressed do


3dwannab's picture

+1 - Cancel Button and Progress Bar

Thanks very much for this.

Is it possible to add a Cancel Button and Progress Bar?

Much appreciated.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.