Select normals pointing in a certain direction A collegue has modelled, in Rhino, a small transparent plastic bottle (the type commonly seen holding small amounts of cosmetics etc.) with an embossed logo on the wall of the bottle.

The mesh is pretty evenly divided until it gets to the embossed logo where the mesh gets very, very dense due to the bevels. It's imported into Blender as an .obj file.

For the most part, the normals all face out as should be the case, but around the embossed area the normal direction becomes random - some face out, others face into the bottle mesh making glass rendering impossible.

I've tried just about all the normal management functions (there aren't many) but it literally comes down to me having to individually select the reversed faces and and then flipping the normals. This is not a practical solution.

I'm wondering if anyone might be able to write a script for me, that would work something like this: 1) Import my mesh, set its base at 0:0:0. 2) Place an empty at the bottle's centre of mass, so-to-speak. 3) Run script, in Edit Mode, that selects all the normals on the bottle mesh that point towards the empty's z-axis.

Surely then I could simply click on flip direction and solve this issue?

Feedback is welcome!

Thanks
Jacques
In most cases Make Normals Consistent (Ctrl+N) operator should help, see  Why are some faces in my mesh darker?. With all selected run it and it should make all normals pointing the right direction.  

However there are some cases when this won't work, i.e. it will consistently flip normals instead of making them pointing one direction. Probably there isn't yet solution exactly for every case like that, still you can use Non Contiguous option of Select Non-Manifold operator:


  Non Contiguous
      Selects edges that belong to exactly 2 faces with opposite normals.


link to manual

Execute it in Vertex or Edge Selection mode; it will select all edges which form problem faces, however depending on complexity of model selection won't form faces which you'd like to recalculate. You may want to run operator several times to feed all the faces to operator.