Negative morph targets using pose driver? (+other pose driver questions)

  1. I’m trying to use a pose driver to do some corrective morphs, driving the curves directly instead of using a pose asset. However I can’t seem to drive the morph targets in a negative direction, meaning that the pose driver only cares about the positive (or negative, don’t know which one) part of the axis. How can I set up a pose driver that goes from -1 to 1 instead of from 0 to 1? Or maybe two separate ones where one goes from 0 to 1 and one goes from 0 to -1?

My expectation was that you could set up which axis to use (x+, x-, y+, y-, z+, z-) but now it just says “Y axis” and half of the translation/rotation is ignored.

  1. Is the Eval Space Bone properly working for translation? For example I set the Eval Space Bone to the root so I didn’t have to animate the bone driving the pose driver, it’s just following the parent. It doesn’t seem like it’s working like I thought it would though, instead of using the offset between the root and the bone at rest as 0 and any other translation to actually drive the bone it seems like it’s stuck at a certain value from the start and then slightly deviating from that value as the animation changes the translation of the bone.

I guess my real question is: how do I make the rest position 0 and let’s say a jumping pose at the apex 1 without animating the bone? Would I need to make the bone not parented to anything except the root and use the closest bone as the Eval Space Bone?

Right now with the bone parented it seems like the translation part is getting messed up by rotations anyway so not parenting it and setting it up to only copy certain rotations and translations in Blender might be a better idea.

  1. Is it possible to drive pose driver results (specifically morph target curves) using physics? And if it is, what’s the best way to set it up? From what I can tell the results aren’t visible in PHAT which makes it pretty hard to test things. I can see things happening in the anim BP (using a rigidbody node before the pose drivers) but again because of 1. the results are a bit erratic.

What I want is to drive corrective morphs using physics (and animating parent bones) instead of animating everything by hand.

Any help is appreciated! :slight_smile:

  1. The node just measure ‘distance’ from a ‘target pose’ and tha distance is always positive I’m afraid. Because it it multi-dimensional, there isn’t really a way to generally have a ‘negative’ distance. You could try using Bone Driven Controller instead.

  2. It should work, we do have test cases for this. I’d suggest maybe making a very simple asset with just a few bones in a hierarchy, and check you can get things working correctly there.

  3. Currently physics is applied after AnimBP, so that won’t work. However, you could try using the RigidBody anim node, as that can run a PhysicsAsset inside the AnimBP, so you can perform other operations (like PoseDriver) afterwards.

Okay, it seems like the pose driver isn’t really what I need for what I’m doing right now (probably easier to just bake curves from Blender), but I’ll try to use it for other things like corrective shapekeys (that are only positive anyway). Thanks for responding!

Secret bump. It seems like you can drive morph targets using Bone Driven Controller, the documentation didn’t say that so I assumed it was only for bones, but it drives bones, morph targets and material parameters. It seems like that node will solve my problems.

I noticed however that the alpha seems like an on-off switch when driving morph targets, is this intended behavior? Or is it supposed to scale the effect of the Bone Driven Controller node?

I am trying to use the Bone Driven Controller with corrective morphs. I use the Transform (Modify) Bone along with it, but can’t seem to get it to work with minus rotations. I have gotten it to work on positive rotations, but not minus ones. Has anyone figured this out yet?

For me it worked after remapping the output to -1 to 1 instead of the default 0 to 1.

Hey cyaoeu, please forgive my ignorance, but how do you remap the output? I can’t figure it out. :frowning:

You tick Remap Source and change the Mapped Range to -1 to 1 (or 1 to -1). Probably a good idea to change the Source Range too.

Ahhhh, I see now. I didn’t see Remap Source because I already had a curve on it… durrrrrrr :slight_smile:
Thanks so much for taking the time to answer. It was a big help.