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.)

9 Likes