0
$\begingroup$

I want to have it so when I change the value of a shapekey, it also moves a bone according to the value. So for example, when I change my character meshes eye width or height, the eye bones move with it so it can still animate properly. Another example would be change the characters leg length so when it is increased the bone moves as well to maintain the correct ratios and not distort the animations for it. I should probably also mention that I plan on using this in Unreal Engine 4 and will need it to work in engine. Any info on how to accomplish this is appreciated.

$\endgroup$
4
  • $\begingroup$ Suggestion. Show your work as images or gifs to clarify you question. I believe I understand part of you question. Not all of it. $\endgroup$ Commented Jul 28, 2018 at 15:51
  • $\begingroup$ Please show armature modifier settings. It also seems in most cases the armature should influence the shape key, not the reverse. Armature modifiers can [Bind To: Vertex Groups or Bone Envelopes]. Which did you use and why? My feeling is you should use Vertex Groups. Full Disclosure ... I rarely use Bone Envelopes. $\endgroup$ Commented Jul 28, 2018 at 15:59
  • $\begingroup$ Use a Driver to control the situation. Whether that driver is an existing bone or shapekey value or empty controller or bone controller can be determined by your needs. Here is an example attempting to steer you to more research about Drivers blender.stackexchange.com/questions/36811/… $\endgroup$ Commented Jul 28, 2018 at 16:11
  • $\begingroup$ You might also ask the Question separately ... Will a driver or other mechanism work from Blender to Unreal E4? $\endgroup$ Commented Jul 28, 2018 at 16:14

2 Answers 2

0
$\begingroup$

For the eyes consider adding a vertex group for a eye [bone]. This should dominate any envelope influence if the [multiply] option is disabled.

Link to Blender documentation

https://docs.blender.org/manual/en/dev/rigging/armatures/bones/properties/deform.html#armature-bones-envelope

Multiply

This option controls how the two deforming methods interact, when they are both enabled. By default, when they are both active, all vertices belonging to at least one vertex group are only deformed through the vertex groups method

$\endgroup$
0
$\begingroup$

What you want isn't impossible. It is impractical though.

In general, for any given local area of a mesh, you either deform it via bones, or you deform it via shapekeys, not both. That means you can have eye shapekeys with a head bone, but not eye shapekeys with eye.01 etc bones. That's the practical way to do it: if you want better control, just use bones. If you want to shape a character, do the gross shaping with poses (incl. scaling and whatever) and then do some minor corrections with shapekeys on top of that, after that. Want to change the length of the leg? Don't use a shapekey; instead, scale the leg bone. The shapekeys are something you make out of bones, afterwards, to simplify the animations, not something you do on top of bones.

But the issue with shapekeys and bones used in conjunction in the same local area is that the shapekeys change the appropriate centers of rotation. And yes, you can work around that, even though you shouldn't.

Let's say you have an arm bone, but you have a shapekey that widens the torso, making that arm bone no longer in the proper position. Sandwich in a new arm bone as parent (duplicate, make duplicate parent of original), then give your original bone a copy location constraint targeting the duplicate, with inverted axes. Now, whenever you move the new (duplicate) arm-parent, the original arm completely counteracts that movement, so that moving it does nothing-- all it does is change the center of rotation of the child, the original arm bone. How you want to move that center of rotation is up to you, but drivers are one potential way to do it.

The "pivot" constraint can work in similar ways, but in my experience, it's buggy, and I'd rather do it the way I just described.

Note that this is designed for rotation bones, which is what most bones are, but it doesn't work with movement or scale bones. Doing that is possible, but requires an additional control. When working with rotation bones, you only need the parent bone, which you move to change the center of rotation, and rotate to rotate the bone.

$\endgroup$

You must log in to answer this question.

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