Rig Morphing Tool Creation: Blendshape hierarchies and aligning a bound skeleton with pre bind matrices on a skin cluster

Hey guys my first post here, and I’m in a right pickle! I’ve been trying to create a Morphing rigging tool for the past few months now for my final major project at Bournemouth Uni (deadline looming!!). I’ve created a long script that gathers target joint pose transforms and feeds into a generated morph offset group over the main skeleton. The principle of the rig is when you use the slider these morph offset groups above the controls change to interpolate between the different target values of these target poses and the mesh blends with a Blendshape simultaneously. I’ve asked around and have been recommended the pose editor as it is a non destructive way of firing Blendshapes with joint positions however for a full morphing mesh I’m not sure how well it would work! ( fish to man). So instead I have applied Blendshapes and put them underneath the skin cluster, however the issue you come across through this process is double transforms when your Blendshape is moving to ie a longer arm and so is your joint that is bound to it. I’ve looked into pre bind matrices (attribute on the skin cluster) and using the inverse world transforms of this morph offset group to plug into the pre bind matrix of the skin cluster to cancel out the transforms on the mesh when you are moving the joints to a new morph pose, this does work when applying one control and joint to the mesh but when you have an FK parented chain the issue you come across is that the joints/ctrls move appropriately like an fk chain but the pre bind mtxs block the effect of the joints on the mesh down the chain so your current control only effects its area of the mesh and not down the hierarchy. The inverse matrix fixes this but adds a freaky offset and on my test arm mesh it has a crazy offset. I’m not sure whether I’m close to a solution or I’ve gone down a rabbit hole. I’d really appreciate anyone’s help! Best to all.

1 Like

I think you’ll get more traction on your topic if you breakdown the problem into digestible chunks, record visual examples, show code snippets or node graphs. I think the scope of your question is too broad for anyone to jump in and help.