Limb: Generic and Limb: Biped Leg breaks when B-Bone density is set to 0 #174
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
When B-Bone Density is set to 0 for the
Limb: Generic
type, the twist of the final bone (i.e. the "wrist") does not get properly set up, so when rotating the wrist IK handle around local Y, the finger bones rotate as they are parented but the hand/wrist bone itself does not twist around its Y axis. Similar things happen forLimb: Biped Leg
.When B-Bone Density is > 0, the b-bone handles are set to track the
IK-STR-TGT-Wrist.SIDE
bones to drive this, but since that doesn't exist with only 1 bbone segment, it is not setup for the b-bone density 0 case.To solve this I've set up aCopy Rotation
constraint on theDEF-Wrist.SIDE
bone which targets theIK-STR-TGT-Wrist.SIDE
bone withOrder: YXZ Euler
, selecting only Y axis, and with both src and dst asPose Space
. This seems to work well.In the case where we haveB-Bone Density: 0
butStretch Segments: 2
, it is nice to get some better twist deformations by taking advantage of the extra forearm deformation bone to sort of emulate the b-bone behavior. I did this by adding the sameCopy Rotation
constraints to theDEF-Forearm_2.SIDE
bones but with weight at 0.5 instead of 1.0.I think at least the first solution should get added automatically in this case, and perhaps the second as well (not sure if there's an even better way to achieve the same result).The use case here is I'm exporting to a game engine where I've implemented the same deformation algorithm as Blender's
Preserve Volume
armature modifier, so I can have "real" stretch DEF bones, but not BBones.Limb: Generic breaks when B-Bone density is set to 0to Limb: Generic and Limb: Biped Leg breaks when B-Bone density is set to 0This also affects
Limb: Biped Leg
.My original solution was not correct, since it did not work with FK.
The new solution is:
For joint, the "root" deformation bone gets a
Copy Rotation
constraint before itsStretch To
constraint, with the target being the corresponding "original" bone. For example,DEF-Wrist.L
getsCopy Rotation
fromWrist.L
.DEF-Thigh_1.L
getCopy Rotation
fromThigh.L
.In addition, each subsequent stretch segment deformation bone gets a
Copy Rotation
constraint before itsStretch To
constraint, but with the target being the correspondingSTR-M-Blah
bone. For example,DEF-Forearm_2.L
getsCopy Rotation
fromSTR-H-Forearm_2.L
.Lastly, I needed to add the
Copy Transforms IK
constraint that is usually added by cloudrig automatically to each of the original Toe bones, as they only had aCopy Transforms FK
constraint set up by default. Unless that is intentional...cc @Mets, didn't realize I needed to leave it :)