1
$\begingroup$

I rigged my dog model, and he is pretty ok for now. But I have jersey on him which has to follow and deform as well.
I tried those simple solutions with data transfer, or weights transfer but it doesn't work and so on but I assume this project will need little more detailed aproach. It transfer weights but not nearly precise as I want, since I want jersey to follow exactly and not to crop inside or out.
So, my dog model has it own deformation bones, and jersey has also it's deform bones. However, when I move dog rig, jersey doesn't follow. What can I do to "tell" jersey to deform same as dog rig + it has it's own bones so I could make Corrective shape keys (with drivers), so when it crops, I can fix it with those additional bones. My jersey is same shape as dog's body, but separate mesh laying on top of dog's body just a little thicker - so, could I transfer weights from dog rig to jersey, or add some constraints so it follow dog deformation, or any other solution?
Picture 1 - dog with jersey
Picture 2 - dog without jersey
Picture 3 - dog properly bending without jersey
Picture 4 - dog bending with jersey, cropping occurs, I want it to bend like on picture 3 but with jersey this timePicture with jersey

enter image description here

enter image description here

enter image description here

$\endgroup$
3
  • 3
    $\begingroup$ Why has the model its own deformation bones, and jersey has also its deform bones? Since the jersey is the same mesh as the dog's body I would go with one armature (bones) and transfer the weights. Why and what did not work with the weight transfer? $\endgroup$
    – Blunder
    Commented Jul 24, 2021 at 1:18
  • $\begingroup$ I tried Data Transfer, but it doesn't actually very precise transfer weights, and when I move control bones, some of jersey vertex points lag behind. However, if I weight paint it by hand it can't be enough precise. Also, transfering weights by going Weights-Transfer and so on, doesn't do the job well also. $\endgroup$
    – Radoon
    Commented Jul 26, 2021 at 7:55
  • 3
    $\begingroup$ Show how you are transferring the weights and settings you use. Should work fine. $\endgroup$ Commented Jul 26, 2021 at 15:16

2 Answers 2

2
+100
$\begingroup$

When I do a data transfer, I get a much better result than you:

enter image description here

Here's some specifics about my data transfer:

  1. I disabled all modifiers on source and destination meshes so that they wouldn't affect the data transfer (data transfer will be from modified positions, very important!)

  2. I deleted all vertex groups on the jersey. There are deforming groups on the jersey that don't exist on the dog. A data transfer won't overwrite those, so we need to delete them.

  3. I created the data transfer modifier, set it to nearest face interpolated, clicked generate data layers, and applied the modifier. (We need to apply if we plan to deform the body with an armature-- we don't want it copying weights from the armature deformed positions!)

  4. I re-enabled the armature modifier on both objects. I did not re-enable the corrective smooth on the dog body, because the corrective smooth will take them out of agreement. You can't just corrective smooth both, because a CS modifier will affect each mesh in different ways.

Now, a few comments:

  1. Your dog's basic weights aren't very good. And whenever you have a border, like you have on the jersey, that's going to be more apparent than when you don't, like on the dog. So the jersey is matching the dog, but that doesn't mean it's pretty. If you really need this done via weights (see below), consider tweaking the jersey weights and then copying them back onto nearby body verts.

  2. If rendering in Blender, it is easier to use a surface deform modifier targeting the dog's body than it is to use an armature, and it will look better, because this will work even with the corrective smooth on the body.

  3. If not rendering in Blender, like rendering in a game engine, the most appropriate thing to do here is not to have a dog body under the jersey, but to have a single continuous mesh created by retopologizing the body and jersey together. You can bake normals and other textures from the originals.

  4. If you must do weights, and you must have a body underneath, and the jersey isn't just a straight copy of the body underneath, then some clipping, in some poses, is inevitable. You can't make the surfaces match precisely unless the meshes share not only the same weights, but the same topology.

$\endgroup$
1
  • $\begingroup$ Thank you for this answer and also additional tips, appreciated! I will check this on monday and see if I can get it right, but explanations are very precise and good so I think I won't have problems. $\endgroup$
    – Radoon
    Commented Aug 1, 2021 at 1:53
3
$\begingroup$

I'm not sure if this has been answered or not, but here's my explanation, I recommend that you read it through to the end as depending on the order of your workflow, you have two options.

OPTION 1. My explanation is done with a simple cylinder, but the principles are the same. Set up your model and rig. I've paired the weights automatically, but I imagine you have gone into more depth with your weights. Ultimately however you weighted your body mesh for your rig is irrelevant.

enter image description here

As we can see the mesh is deforming nicely enter image description here

I'm now going to make another cylinder around my original cylinder which will act as the "clothes". I have also reset the deformation of my armature. enter image description here

Parent the clothing to the armature, but this time with empty groups. This will build the vertex groups into your meshes data, but will not populate them with any weighting. enter image description here

Select your body mesh FIRST in object mode and then the clothes mesh SECOND, and open weight paint mode enter image description here

Go to weights > transfer weights and in the options menu in the bottom left hand corner select nearest face interpolated for vertex mapping, by name for source layers select and make sure Destination layers is set to all layers. If you click through the vertex groups in the object data properties tab, you'll see that they'll now be populated with different mesh weights

enter image description here

And now as you can see, if we manipulate our rig again, the clothes and body move as one. I should also note that this is how you make a master rig and clothes for the master posing system in unreal engine 4. enter image description here

I should note that the quality of deformation will come down to the quality of your topology.

OPTION 2. If you clothing mesh was effectively duplicated from your dogs mesh AFTER you had rigged it up, the vertex groups and weights would have transferred over. If this is the case, when you parent the clothing mesh to the rig just select Armature deform by itself, and that'll be all you need to do. enter image description here

$\endgroup$
5
  • $\begingroup$ Thanks James, appreciate detailed answer. I did that, also tried Data Transfer. However, it doesn't actually do it precisely. It crops again, on screenshot I uploaded you can see weights, probably because those spine. ribs, and chest bones are not enough for jersey, so that's reason I added more aditional bones for jersey, however - I don't know what to do with them to prevent cropping. $\endgroup$
    – Radoon
    Commented Jul 28, 2021 at 7:34
  • $\begingroup$ I added .blend file, removed some of mesh since it is project task, hope it doesn't mind. $\endgroup$
    – Radoon
    Commented Jul 28, 2021 at 7:43
  • 2
    $\begingroup$ You should only have one rig, expecting one rig (the jersey rig) to follow another rig (the body rig) is quite unrealistic. You might be able to work with rig constraints but you're over-complicating the matter $\endgroup$
    – James
    Commented Jul 28, 2021 at 8:08
  • 1
    $\begingroup$ I've had a look at your file and my method does work, unparent the clothing from the rig and delete the groups. From their re-parent the clothes to the rig with empty groups, and transfer the weights as described above. Finally touch up your weight painting manually to get the exact results you want. Closely over-lapping bones can often be a pain, tweaking the ray distance can often be beneficial in the weight transfer panel $\endgroup$
    – James
    Commented Jul 28, 2021 at 8:14
  • $\begingroup$ Maybe that weight tweaking could be solution, but that is my weakest point, I just can't get it right. If you managed, could you upload blend file? $\endgroup$
    – Radoon
    Commented Jul 28, 2021 at 8:27

You must log in to answer this question.

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