user: Give a detailed overview of Options: syntax, arguments, return values, common patterns.

assistant: [image reference removed]

Bendy Bones panel.

Segments
:   The number of segments, which the given bone is subdivided into.
    Segments are small, rigid linked child bones that interpolate between the root and the tip.
    The higher this setting, the smoother “bends” the bone, but the heavier the pose calculations.

Display Size X, Z
:   Controls the visible thickness of the bone segments when the armature is rendered in the *B-Bones* mode.

Vertex Mapping
:   Controls how vertices are weighted to the individual segments of a B-Bone for deformations:

    Straight:
    :   A fast mapping that works well for B-Bones with a straight or gently curved rest pose.

    Curved:
    :   A slower mapping that improves deformations for B-Bones with a strongly curved rest pose. This should
        be used selectively when needed.

    [[image reference removed]](../../../../_images/animation_armatures_bones_properties_bendy-bones_vertex-mapping.png)

    Straight vs Curved vertex mapping on a B-Bone with a strongly curved rest pose.

Curve In/Out X, Y, Z
:   Applies offsets to the curve handle positions on the plane perpendicular to the bone’s primary (Y) axis.
    As a result, the handle moves per axis (XZ) further from its original location, causing the curve to bend.

Roll In, Out
:   The roll value (or twisting around the main Y axis of the bone) is interpolated per segment,
    between the start and end roll values.
    It is applied as a rotational offset on top of the rotation defined by the handle bones.

Inherit End Roll
:   If enabled, the *Roll Out* value of the *Start Handle* bone (connected parent by default)
    will be implicitly added to the *Roll In* setting of the current bone.

Scale In/Out X, Y, Z
:   Scaling factors that adjust the thickness of each segment for the X and Z axes,
    or introduce non-uniform spacing along the Y axis. Similar to *Roll* it is
    interpolated per segment.

    Since all segments are still uniformly scaled in the Y direction to fit the actual length of the curve,
    only the ratio between *Scale In Y* and *Scale Out Y* actually matters.

Ease In, Out
:   The *Ease In/Out* number fields, change the “length” of the [“auto”](../../../../modeling/curves/structure.html#curve-handle-type-auto) Bézier handle
    to control the “root handle” and “tip handle” of the bone, respectively.
    These values are proportional to the default length,
    which of course automatically varies depending on [bone length](transform.html#bpy-types-editbone-length),
    angle with the reference handle, and so on.

    Although easing is a scale-like value, the Edit Mode and Pose Mode versions of the values are added,
    so they get corresponding start values of 1 and 0 by default.

    Ease In/Out settings example, with a materialized Bézier curve.

    |  |  |
    | --- | --- |
    | <../../../../_images/animation_armatures_bones_properties_bendy-bones_curve-in-out-1.png>   Bone.004 with default In and Out (1.0). | <../../../../_images/animation_armatures_bones_properties_bendy-bones_curve-in-out-2.png>   Bone.004 with In at 2.0, and Out at 0.0. |

Scale Easing
:   If enabled, the final easing values are implicitly multiplied by the corresponding *Scale Y* values.

### Custom Handles

B-Bones can use custom bones as their reference bone handles, instead of only using the connected parent/child bones.

Start/End Handle
:   Specifies the type of the handle from the following choices:

    Automatic:
    :   The connected parent (or first connected child) of the bone is chosen as the handle.
        Calculations are done according to the *Absolute* handle type below.

    Absolute:
    :   The Bézier handle is controlled by the **position** of the head (tail)
        of the handle bone relative to the head (tail) of the current bone.
        Note that for this to work, there must be a nonzero distance between these bones.
        If the handle is also a B-Bone, additional processing is applied to further
        smooth the transition, assuming that the bones in effect form a chain.

    Relative:
    :   The Bézier handle is controlled by the **offset** of the head (tail) of the handle bone from its rest pose.
        The use of this type is not recommended due to numerical stability issues near zero offset.

    Tangent:
    :   The Bézier handle is controlled by the **orientation** of the handle bone, independent of its location.

Custom Handle
:   For types other than *Automatic*, a bone to use as handle has to be manually selected.
    Switching to a custom handle type without selecting a bone can be used to effectively disable the handle.

    It is valid for two bones to refer to each other as handles – this correlation is applied
    in connected chains with *Automatic* handles.

Scale X/Y/Z/Ease
:   If enabled, the final Scale and/or Ease values are multiplied by the corresponding local scale
    channels of the handle bone. This step is applied independently of *Scale Easing* and doesn’t
    interact with it, i.e. enabling *Y* and *Scale Easing* doesn’t replace the *Ease* toggle.
    These toggles are a more efficient replacement for up to eight trivial drivers passing segment scale data
    from the handle bones into the B-Bone option properties.

[image reference removed]

Visualization of the Bendy Bones properties.

From Left: 1) Curve X/Y offsets, 2) Scale In/Out, 3) Roll In/Out