2

EDIT: Since it's impossible to select only the outer faces using Blender's UI tools, I'm looking for a Python solution that will check each face to see if it does have a certain degree of light (light_exposure > 0) and select it. We know that all the ugly geometry and internal faces inside have zero exposure to light (light_exposure <= 0) and thus will be excluded from this algorithm.

I've looked into this question and have fixed the geometry on the outside to be perfectly watertight, and now want to select all outer faces essentially exposed to light and then invert the selection to delete the insides. But for some reason the Box Selection selects faces that are not visible on the outside which I think is incorrect behavior?

enter image description here

enter image description here

I've searched all over the web but the linked selections with L will not work. There must be some algorithm to be able to select faces that are exposed to the outside world or exposed to light. It looks like the Box Selection tool selects all faces with edges exposed but an exposed edge doesn't mean an exposed face. Is there someway to tell the selection to ignore faces with only exposed edges? I think this feature is very important and useful.

A current workaround is to go into Vertex Select Mode and manually select all vertices with the Box Select and Circle Select tools but it is a tedious task especially if you've got alot of intricate geometry around the surface so you might not perfectly get all vertices selected. So there are times where it is not feasible especially with this model from the aforementioned question link. Or maybe there's a python script solution?

I have an interesting issue fixed where several instances of 2 faces were sharing the same 4 vertices using this link. I have uploaded a new file with no overlapping faces but still the same issue as demonstrated in the gif files.

Harry McKenzie
  • 10,995
  • 8
  • 23
  • 51
  • but you know this works with default cube, right? so i would suggest to provide the blend file ;) – Chris Dec 24 '22 at 09:08
  • 1
    did u try "only" face select mode? it looks like you have edges selected as well - but even that works with default cube as expected – Chris Dec 24 '22 at 09:10
  • Hi Chris. Yes it is only face select mode. The edge you see is the inside face that gets incorrectly selected as well. I attached the fixed water-tight mesh. Try selecting the roof with box select in face select mode and then see on the inside, it gets selected as well as demonstrated in the gif. – Harry McKenzie Dec 24 '22 at 09:22
  • That's wierd! Try enabling Face Orientation, The outside is fine, but if you look at the roof from the inside half of the faces appear to be inverted! Selecting one individual face from the inside and deleting it doesn't show as a hole from the outside and some of them appear to span two faces vertically. It also looks as if there's Z-fighting looking from the inside but attempting to merge vertices finds nothing. Selecting and moving an internal face moves the outside geometry too! :^( – John Eason Dec 24 '22 at 09:42
  • 1
    John is right. The geometry of the roof isn't clean. There are double faces. I think that's why Blender is confused and has these selecting problems. [1]: https://i.stack.imgur.com/Q6GT5.gif – Chris Dec 24 '22 at 12:52
  • yes thats exactly why im trying to get rid of the inner geometry. but it works if i use vertex selection mode as workaround. i think it's something blender devs can fix though or maybe there is a python script that can do the job? :) – Harry McKenzie Dec 24 '22 at 12:59
  • I think you're misreading the issue here. On the GIF, when you look below and reselect one of the inner faces that were selected from the outside, you don't actually reselect the same face. There are two overlapping faces: one that is big, and partially visible outside (this one is selected from outside) and one that is small and therefore entirely hidden (the one you select from the inside and wrongly think it's the same as the former one). – Markus von Broady Dec 26 '22 at 14:03
  • @MarkusvonBroady Hi markus thanks for looking into it! hmmm can you try download the model again and check because i am pretty sure i have done a boolean intersect on all faces and yes i noticed the big and small face but they are all gone now with the intersect operation. I updated the post with another gif where 2 overlapping faces exist both not exposed to the light. – Harry McKenzie Dec 26 '22 at 14:20
  • @MarkusvonBroady I've updated the thread with another blend file where the overlapping faces issue is resolved but the issue still remains that i cannot select all outer faces exposed by light. – Harry McKenzie Dec 26 '22 at 14:51
  • Feature request: https://blender.community/c/rightclickselect/0L0N/ – Harry McKenzie Jan 03 '23 at 23:13
  • The problem is your model is by design non manifold, so you can't apply regular cleaning techniques. I don't know where it came from, but it looks like it could be assembled with lego bricks which doesn't bode well with how Blender meshes are supposed to be created. Basically all your edges that have 3 neighboring faces will be a problem. You can get a sense of the problem by going into edge select mode to Select > Select all by trait > Non manifold. Here's what the 3D print toolbox diagnosis yields https://i.stack.imgur.com/cbP13.png – Gorgious Jan 04 '23 at 14:57
  • @Gorgious yes the problem is that sometimes we get 3rd party crappy models and we need some method to be able to clean them up. and i believe it should be possible to create a python algo that can detect all outer faces, which are essentially those faces with some degree of light exposure. – Harry McKenzie Jan 04 '23 at 15:00
  • Have you tried baking the model and comparing the uv coordinates to brightness of the pixel ? – Gorgious Jan 04 '23 at 17:07

1 Answers1

3

I would remove the inner faces like this.

  • Choose edge selection. 2
  • Box/Circle select visible edges. selected vertices
  • Choose face mode and hide the faces. 3H faces hidden
  • Select all and delete the faces. AX > Faces

Only the outer faces remain.

outer faces remain

Leander
  • 26,725
  • 2
  • 44
  • 105
  • Hi thank you for your response. Unfortunately I would love to have a general solution to select all the outer faces only with a python algorithm. I think this is possible with some light_exposure > 0 test since internal faces have zero light exposure or some other algorithm? – Harry McKenzie Dec 27 '22 at 14:23
  • Sorry I should have specified it in the title that i'm looking for a python solution since the manaul selection process would not be feasible since there are way too many faces to select in the model. I updated the title. Sorry again.. – Harry McKenzie Dec 27 '22 at 14:27
  • 1
    Don't worry. The python tag should be enough. I understood what you are looking for, but this answer is a bit of a frame challenge, that may be helpful for users who reach this question via the search. If you think it is not fitting or doesn't suit the question you can always downvote, that way useful answers rise to the top. =) – Leander Dec 27 '22 at 15:01
  • Hey thats a good point! gonna downvote it right now hahaha just kidding. My workaround was selection in vertex mode and now with this answer I realized that Edge selection is even more convenient as the workaround so thanks for that! I hope though i can find a python solution. That be sooo powerful since I could easily eliminate internal faces for any mesh! personally i think blender should have such a built-in selection feature. – Harry McKenzie Dec 27 '22 at 15:21