I have a progressive jaw open blendshape: One rest value, then 25, 50, 75 and 100%. We were given a note that the jaw should open farther. So I want to create a setup that takes any sculpts done to the 100% head, and applies a percentage to the 25/50/75 heads live as the user sculpts. The other (annoying) requirement is that, with all deformers turned off, we will be left with the shapes we started with (other tools depend on this behavior)
I’ve already done something that works, and our shape sculptors love it… but I don’t because the solution I came up with is just annoyingly clunky, requires 2 blendshape nodes per head, and I want to simplify it so I can apply this technique on top of other setups to make something really cool.
So, lets think about how I should be able to accomplish this…
A blendshape node must figure out an offset vector per vertex per shape somewhere, because you take the shape value, multiply that by its vectors, add the per-shape vectors together, and use that final sum to displace the vertices of the mesh. That’s the definition of a blendshape, right? Of course, there’s pruning and some other optimizations, but but you still have to have those offsets somewhere.
So if those deltas are exposed as plugs on the blendshape node, I should be able to connect the deltas from one blendshape node directly into another so long as the meshes they’re deforming share topology.
So, as far as I can tell, they do expose that data as a pair of plugs. Under
blendshape.inputTarget[*].inputTargetGroup[*].inputTargetItem[6000]
you have inputPointsTarget
and inputComponentsTarget
which hold the deltas and components per shape. I’ve been reading data from these plugs for a while, and they give me exactly what I’m expecting.
Now for the disappointing part. I try to plug that data into a different blendshape node, and I get all sorts of unexpected behavior. It works some times, snaps back to rest at others.
So, after all that background information… Does anybody out there know if there’s some way to directly share deltas? Also, does anybody know what the inputRelativePointsTarget
and inputRelativeComponentsTarget
are?