you must know the total travel time after that you must configure the parameters of frames per second (ftps) and the path animation parameters as frame and Evaluation time. that is a simple rule of three ![configuración path][1] also you can calc the length of a Bezier curve please check: [http://blenderartists.org/forum/showthread.php?206790-Length-of-a-Bezier-curve-in-2-5][2] or you can try with my script that will print the lenght in console: import bpy, bmesh for area in bpy.context.screen.areas: if area.type == 'VIEW_3D': ob1 = bpy.context.active_object # this is the curve bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "gpencil_strokes":False, "texture_space":False, "remove_on_cancel":False, "release_confirm":False}) bpy.ops.object.transform_apply(location=False, rotation=False, scale=True) bpy.ops.object.convert(target='MESH') bpy.ops.object.editmode_toggle() obj = bpy.context.object me = obj.data bm = bmesh.from_edit_mesh(me) edges= [e for e in bm.edges] total = 0 for edge in edges: total = (total + edge.calc_length()) print("total: ",total) bmesh.update_edit_mesh(me, True) bpy.ops.object.editmode_toggle() bpy.ops.object.delete(use_global=False) ob1.select = True bpy.context.scene.objects.active = ob1 [1]: https://i.sstatic.net/edEB0.png [2]: http://blenderartists.org/forum/showthread.php?206790-Length-of-a-Bezier-curve-in-2-5