4
$\begingroup$

I have several objects that I am combining with a boolean modifier, but I am not applying it as I want it to stay live as the objects move. After the boolean, I want to use other modifiers that need vertex groups, and subsurf that needs crease. The boolean wipes these both out.

I know that if I have a UV unwrap and apply the boolean, I can restore my original seams with the Seams from Islands command. But I am not applying the boolean.

I have tried using Data transfer from a non-booleaned version of the objects to transfer vertex groups and creases, but it does not seem to be working. Is there a specific combination of settings that will make it work, or some other option?

$\endgroup$
  • $\begingroup$ Can you upload a simple version of your file using blend-exchange.giantcowfilms.com so people can experiment using your exact setup? $\endgroup$ – Ray Mairlot Jul 31 '17 at 17:28
  • $\begingroup$ @RayMairlot I cannot as it's part of a larger project. I'm looking for general info on how transferring this data works, if at all. $\endgroup$ – Drudge Jul 31 '17 at 20:39
  • $\begingroup$ What modifiers, specifically are you using after the Boolean? $\endgroup$ – Scott Milner Jul 31 '17 at 22:38
  • $\begingroup$ @ScottMilner I want to be able to use Smooth, Mask, and Displace with vertex groups, and have edge data for Crease on Subsurf. $\endgroup$ – Drudge Aug 1 '17 at 2:41
5
+50
$\begingroup$

Without knowing your specific setup, I'm going to show a basic example of how to use the Data Transfer modifier to restore either Crease data or Vertex Group data after they have been destroyed/modified by a Boolean modifier from a copy of the object.

Here we have a sphere with some creasing applied to some of the edges of a sphere that has a Subsurf modifier added to it:

enter image description here

And now above the Subsurf I add a displace modifier and set it to only use the bottom half of the sphere by specifying a vertex group:

enter image description here

So we now have vertex and crease data and we can test ways that the boolean modifier might destroy/modify that data and how to restore it.

Here I add a Boolean modifier at the top of the modifier stack (Subsurf disabled):

enter image description here

We can see that actually the vertex group of the Displace modifier has been preserved and is still working as only the bottom half of the sphere is displaced:

enter image description here

However, in the image above we can also see that the crease data has been removed by the Boolean; we no longer have the pinching effect shown in the previous images.

We can now restore this data from a copy of the object. The copied object has no modifiers on it, but it does have the same topology as the original sphere and it does have the creases marked on it.

I add a Data Transfer modifier above the Subsurf modifier, but below the other modifiers. The order is important because if the Subsurf is above the Data Transfer modifier the creases will already have been calculated, so restoring the crease data after that will have no effect. We must restore data then Subsurf so the Subsurf has access to the transferred data before it does any calculations. I choose the copy of the original sphere as the Source Object, choose Edge Data as the type of data I want to transfer and specify the Subsurf Crease option as the actual data I want:

enter image description here

We now see that the pinching is back indicating the crease data has been successfully transferred.

There is, however, one thing to note, and that is the Solver the Boolean modifier is set to use. It's an option on the modifier and by default it's set to BMesh when the modifier is added and is the Solver type I used in this example. However, if you remove the Data Transfer modifier and change the Solver to Carve you will see that the Boolean no longer destroys the edge data, but instead destroys the vertex data:

enter image description here

The displace modifer is now effecting the whole mesh, meaning the Vertex Group has been modified and the pinching the crease data was creating has not been effected, whereas before, the opposite was true. I'm not quite sure why this happens or whether it's intentional, but this allows you to instead preserve the crease data and restore the vertex groups, though this time the Data Transfer modifier has to be above both the Displace modifier and the Subsurf:

enter image description here

(This also means the copy of the object we are transferring from needs a copy of the vertex group instead of the same crease marks.)

There doesn't seem to be a disadvantage to using one type of Solver over the other, but it does allow you to use either Solver (in case you need to use a specific Solver for other purposes) and always preserve the data.

To summarise:

  • BMesh Boolean Solver destroys Crease data.
  • Carve Boolean Solver destroys Vertex Group data.
  • The Data Transfer modifier has to be above any modifier that needs to use the transferred data.

I have added the Blend file so you can see the exact setup I've used (the copy of the original object is on layer 2):

$\endgroup$
  • $\begingroup$ Something I noticed is that in order to transfer vertex groups properly, I had to hit Generate Data layers before they came through properly. Before that, it was acting like the group existed, but with a value of 0. $\endgroup$ – Drudge Aug 1 '17 at 23:41

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.