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

  • $\begingroup$ Does Making Normals Consistent operator help ? See blender.stackexchange.com/questions/12165/… $\endgroup$ – Mr Zak Apr 19 '16 at 20:40
  • $\begingroup$ Hi Mr Zak, I have, but it doesn't do the job. My suspicion is that the import from Rhino messes with the normal direction so Blender has no way of knowing what direstion is consistent. Thanks. $\endgroup$ – JKCapeTown Apr 19 '16 at 21:02

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.

using select non-manifold operator for wrong normals selecting GIF

  • $\begingroup$ Thanks for that, looks interesting. Will give it a go tomorrow morning and report back. $\endgroup$ – JKCapeTown Apr 19 '16 at 21:21

you can select face with certain normal's direction (say, outside); then "Select -> Select Similar -> Normal". And flip selected normals!

  • $\begingroup$ It's worth pointing out that the Select Similar/Normal provides a Threshold setting that can be adjusted to indicate how 'similar' the normal should be to be selected. $\endgroup$ – Rich Sedman Mar 20 at 7:08

If the bevels are clean (I mean no triangles), what about selecting the two adjacent edge loops, delete faces only, and then bridge edge loops?

Also I experienced similar issues with double faces not made of the same double vertexes (so remove doubles did not help), maybe check if it is the case at first.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.