Viewport Gizmos for Bendy Bone Curvature

Preface

Based on a conversation with Ivan Cappiello (@icappiello) of MAD Entertainment, Francesco (@fsiddi) asked me to explore possible improvements to usability of bendy bones. Talking with Ivan, I learned their use case would be for controlling grease pencil strokes. They already do this by building tools to create controls for bendy bones, but we all agree it would be nicer if Blender had a native way to control Bendy Bone properties in a way that is more visual and artist-friendly, without requiring additional tooling. Currently in vanilla Blender, you have to either animate a list of sliders, or build a somewhat complex rig set-up with at least a couple of bones and some drivers.

Scope

We briefly explored possibilities of deeper refactors (eg. replacing the existing CurveIn/Out properties with curve handle position properties), but it’s probably not high priority enough and @sybren confirmed that the animation module wouldn’t really have time for this in the foreseeable future. So the scope of this thread should be restricted to simply adding viewport gizmos that control the curvature properties, and let’s try not to rebuild the whole bendy bone system. While this may only address fairly trivial use cases, it would also be pretty simple to implement for someone who’s either familiar with or interested in development of viewport gizmos. (Side note: This area of Blender’s code could also use better documentation.)

Design

I invite everyone to contribute ideas, since it’s quite easy to do in the form of rig set-ups, such as this one by @TalHershkovich:

This set-up controls only these driven bendy bone properties:

image

I for one quite like it, and I think if we can have consensus on this and a few other controls for the remaining properties (roll, scale, ease), perhaps an interested developer will come along and offer to implement it. @julianeisel said it could be done in either C++ or Python (just to clarify that there’s no rule against shipping Blender with viewport gizmos that happen to be implemented in Python, even if this was never done so far.)

15 Likes

I like this initiative. BB is really powerful and most software don’t have these.

  1. Add viewport gizmos for BB controls in edit mode
  2. Add opt-in gizmo controls for BB gizmos already built in (so a rigger doesn’t have to build them over and over). Toggle what gizmo type you want to show
  3. Pre-built Gizmos could use CMY color controls and show only when bone is selected. They could be tangent or volume controls.
  4. Have a “quick” BB creation operator in the armature menu, that will use the active bone as the tail, and make the BB with a head control. Or make an operator that would make a pre-configured BB with head and tail already assigned. Setting these up without prior know-how is not intuitive.
1 Like