3
$\begingroup$

Blender 2.80
I have two meshes (curves extruded along paths) that I have combined with ⌃ Ctrl + J union. Now I am trying to subtract a third mesh using a Boolean Modifier. When I select difference, I don't see the difference result. When I select union it sort of renders a difference but not exactly either.

I have had this happen while performing union on a couple of other extruded meshes but was able to fix it by removing the terminal edges of the mesh and extruding the terminal face before performing union. In this case, I am stumped. I don't know whats causing the problem.

First question I have is the union of the two extruded meshes. I was hoping to see just some exterior faces on the boundary of the two meshes. Rather it looks like the super imposition of the two.

When I subtract the third mesh from the union, the boolean tools are freaking out. Is this because of the issue I am pointing out in the first question.

I have looked for non manifold geometry and loose geometry but haven't found any. I did not find any duplicate vertices to join. I have already performed a limited dissolve.

Can someone help.

Union of first 2 meshes Unions pf first 2 meshes

When third mesh is subtracted I expect a channel but it renders as an union Difference of third mesh

MeshA + MeshB - MeshC

$\endgroup$
2
  • 2
    $\begingroup$ Interresting problem. Could you provide us your blend file? $\endgroup$ Jan 20, 2021 at 9:35
  • $\begingroup$ Looks like my email notifications were going elsewhere. Thanks for quick response. I have attached the file with the three meshes. I have used boolean modifiers to show the same issue. $\endgroup$
    – coder21
    Jan 21, 2021 at 2:25

2 Answers 2

0
$\begingroup$

edited to answer the question better

go into latest version of blender (2.91) and try using the new booleans they added (Fast, Exact) i havent used these very much so it might not work, and also make sure that the meshes arent the same height or there will be weird artefacts so try making the subtracting mesh and make taller, this is because the boolean system has problems working with meshes that are exactly the same, (like duplicating an object and leaving it at the same place, blender cannot handle the two meshes and breaks)

for the shading artifacts i recomend recalculating the outside normals go into edit mode, select all faces or vertices, then select mesh, normals, recalculate outside, hope this edit helps

$\endgroup$
4
  • $\begingroup$ I think you (or I) misunderstood the question. A third mesh is "added" to the original mesh and not subtracted. The visible artifacts probably can be fixed by turning on "Autosmooth" on the object. $\endgroup$ Jan 20, 2021 at 10:02
  • $\begingroup$ I need meshA + meshB - meshC. Regardless of whether I union/difference/intersect meshC the result is incorrect. I tried recalculating normals on the result of meshA+meshB and meshC before subtracting latter from former. Yet I see no difference. $\endgroup$
    – coder21
    Jan 21, 2021 at 2:37
  • $\begingroup$ ok, my idea to recalculate normals was for the smooth shading, heres another idea, go into latest version of blender (2.91) and try using the new booleans they added (Fast, Exact) i havent used these very much so it might not work, and also make sure that the meshes arent the same height or there will be weird artefacts so try making the unimportant taller or smaller just not the same $\endgroup$ Jan 21, 2021 at 11:06
  • $\begingroup$ While answering my question was not the original intent of the commenter's reply, it definitely is part of the solution. On Blender 2.91, use Exact mode for Boolean modifiers. Fast does not work in this case. Also select all vertices (or faces doesnt matter) in Edit Mode and select Mesh-> Normals ->Recalculate Outside. Use a to select all vertices in edit mode. $\endgroup$
    – coder21
    Jan 25, 2021 at 4:15
0
$\begingroup$

I think you found a case when Blender just gives up, and solver doesn't result with correct mesh.

When you move "Mesh B" on Y axis until this moment everything seems correct.

Correct

Few units to the left and the difference boolean fails

Fail Difference

Even more left, and union boolean fails

Fail Union

Switching solver between Fast and Exact produces different problems

Fail Exact

I tried making the mesh denser with applied simple subdivision surface modifier. Tried recreating the booleans using "bool tool" add-on every time effect was same.

And switching to a destructive workflow by applying the boolean union modifier joining "Mesh A" and "Mesh B" then adjusting the mesh manually to result in a single island and fix overlapping faces/edges/verts.

Manual Fix

Also elevating "Mesh B" on Z axis seems to fix the problem with solver calculations.

Elevation

$\endgroup$
5
  • $\begingroup$ oh wow. that really makes sense. Moving MeshB in Y or Z axis is not an option for me. And there are many more such cases that the destructive workflow followed by manual updating is something I would like to avoid. Do you think this is something I can raise with Blender team to see if there is a way to get the modifiers to work? $\endgroup$
    – coder21
    Jan 21, 2021 at 17:39
  • $\begingroup$ @coolarm Report this as a bug and we'll see what blender devs think about it. Also elevating the "Mesh B" by 0.002 mm is unnoticeable, but it fixes the problem (Somehow 0.001 mm didn't work) $\endgroup$ Jan 21, 2021 at 18:05
  • $\begingroup$ Thank you for your time. Your offset hack works on my 2.80 too. I have filed a bug over here developer.blender.org/T84952. $\endgroup$
    – coder21
    Jan 22, 2021 at 2:02
  • $\begingroup$ Got feedback from the devs. I was recalcualting normals for faces instead of vertices which was the issue. Now it works fine! $\endgroup$
    – coder21
    Jan 23, 2021 at 19:12
  • $\begingroup$ Please post your solution as an answer so others may benefit from it. $\endgroup$ Jan 23, 2021 at 19:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .