1
$\begingroup$

i have rigged this gingerbread man, and also i have made everything one object so when i rig it, the WHOLE gingerbread man will move. but when i parent it, it says " bone heat weighting: failed to find solution for one or more bones". how can i fix this?

enter image description here

here is the blend file:

EDIT: after trying to figure out the problem, i discovered this problem only occurs when i set the parent with automatic weights. hope that helps.

$\endgroup$
8
  • 3
    $\begingroup$ If this model isn't going to be super close to the camera I would recommend making the frosting an texture on the body. An alternative could be to use a cage mesh and a mesh deform modifier to make sure the frosting stays on the body as having it be a separate object and using standard armature parenting will likely make it clip through the body at points. $\endgroup$
    – Brenticus
    Dec 12, 2017 at 16:53
  • $\begingroup$ how can i make it a texture? $\endgroup$
    – cgperfect
    Dec 12, 2017 at 17:04
  • $\begingroup$ Could it be that your frostings are curves? If so, try to convert them to meshes. (ALT+C) Then you should be able to join them. But they wont start following your armature by just joining the geometry $\endgroup$
    – monatsend
    Dec 12, 2017 at 17:09
  • $\begingroup$ they are curves, and i converted all of them to meshes. still wont work $\endgroup$
    – cgperfect
    Dec 12, 2017 at 17:10
  • $\begingroup$ So it will still give you an error? $\endgroup$
    – monatsend
    Dec 12, 2017 at 17:12

2 Answers 2

1
$\begingroup$

If you want the frosting move according to the main body I would recommend the DataTransfer modifier as solution.

Therefore you should parent the frosting to the same armature as the Gingerbread man. But you don't have to make weights just the empty vertex groups.

My example scene looks like this

Setup

So, for Bone deformation we need the Vertexgroup information projected from the Base(your gngerbread man) to the Addon(your frosting).

The modifier has to be on the Addon and it should look like this.

ModifierProperties

depending to the Size of your object you may change the ray radius

After getting the weight information from the base object you should be able to join the two meshes together(but you don't have to). The frosting should have reasonable weighting.

EDIT:

After projecting the vertexgroups you have to apply the DataTransfer modifier, because it will automatically recalculate it when you change your pose.

Edit2:

Parent just one object at the same time to the armature.

$\endgroup$
7
  • $\begingroup$ so i add this modifier to the gingerbread man or the frosting? $\endgroup$
    – cgperfect
    Dec 12, 2017 at 17:50
  • $\begingroup$ to the frosting but you can look up everything in the .blendfile $\endgroup$
    – monatsend
    Dec 12, 2017 at 17:51
  • $\begingroup$ is there any easier way? i think maybe adding a texture as the frosting is the way to go. i just don't know which texture/how to apply that. $\endgroup$
    – cgperfect
    Dec 12, 2017 at 17:53
  • $\begingroup$ i think i will redo the rigging, see if it makes a difference. $\endgroup$
    – cgperfect
    Dec 12, 2017 at 17:54
  • $\begingroup$ redid the rigging, still didn;t work. tried your method and it works, but its super laggy because i had to ctrl-j the frosting with the gingerbread man. the frosting has quite a lot of vertices, so how can i go about removing them, because now my vertice count is 3 million. $\endgroup$
    – cgperfect
    Dec 12, 2017 at 18:08
1
$\begingroup$

The reason the automatic parenting is failing is because it has a hard time with very dense, overlapping meshes.

The solution is to either make the frosting meshes much less dense or finding another way to put the frosting on the gingerbread man.

One way to put frosting on your gingerbread man is to paint it on using texture paint. I gave it a quick try and it seems to work quite well. I used the Lightmap Pack UV unwrap option, then went to texture paint mode and added a paint slot. The head of your character does appear to have double vertices which will need to be removed before painting though. After that just select the base color and use the fill tool to color the base, then choose the frosting color and paint it on. It will take some practice if you're new to texture painting, but it's definitely a possible way to go about adding the frosting.

As far as reducing the amount of vertices if you want to keep the frosting as a mesh object, I would suggest starting with a cube, scaling it down to the width of the frosting, selecting a side face and using Ctrl Click to extrude the face and create the shape. Then add a subsurf modifier at the end to make is smoother. Currently the mesh is just too dense to simplify effectively, and you would spend more time working with the frosting objects you have than if you make new ones.

$\endgroup$

You must log in to answer this question.

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