 # Bendy bone match bezier curve?

Hi,
i tried to calculate the easin and easeout of a bendy bone to match a bezier curve based on this blog post

In the post is a calculation formula mentioned
``````  hlength1 = ease_in  * length * 0.390464f
hlength2 = ease_out * length * 0.390464f
``````

but i am not able to achieve a match between bendy bone and the curve.

Anyway here is the script to test the result and hopefully someone can point me in the right direction to get a correct result and show me where my fault is.

``````import bpy

# try to match bezier curve

armature = bpy.data.objects['Armature']
bendy_bone = armature.pose.bones['bendy_bone']

start_handle = armature.pose.bones['h1']
end_handle = armature.pose.bones['h2']

# get custom bendy_bone handle

v2 = start_handle.tail
v4 = end_handle.tail

hlength1 = start_handle.length
hlength2 = end_handle.length
length = bendy_bone.length    # or (v2-v3).length ?

# https://aligorith.blogspot.com/2016/05/an-in-depth-look-at-how-b-bones-work.html
# hlength1 = ease_in  * length * 0.350464f
# hlength2 = ease_out * length * 0.350464f

# tried to calculate easein and -out

ease_in = hlength1/(length*0.390464)
ease_out = hlength2/(length*0.390464)

bendy_bone.bbone_easein = ease_in
bendy_bone.bbone_easeout = ease_out

# match bezier handle to bendy_bone handle

bezier = bpy.data.objects['BezierCurve'].data.splines

bezier.bezier_points.co = v1
bezier.bezier_points.co = v4
bezier.bezier_points.handle_right = v2
bezier.bezier_points.handle_left = v3

``````

Here is the blend test file with a simple setup just scale the bendy bone handles and run the script.

bendy_curve_test.blend (786.3 KB)