# FCurve(bpy_struct)

base class — `bpy_struct`

class `bpy.types.``FCurve`(bpy_struct)

  F-Curve defining values of a period of time

  `array_index`

    Index to the specific property affected by F-Curve if applicable

    Type: | int in [-inf, inf], default 0

  `color`

    Color of the F-Curve in the Graph Editor

    Type: | float array of 3 items in [0, 1], default (0.0, 0.0, 0.0)

  `color_mode`

    Method used to determine color of F-Curve in Graph Editor

    - `AUTO_RAINBOW` Auto Rainbow, Cycle through the rainbow, trying to give each curve a unique color.
    - `AUTO_RGB` Auto XYZ to RGB, Use axis colors for transform and color properties, and auto-rainbow for the rest.
    - `CUSTOM` User Defined, Use custom hand-picked color for F-Curve.

    Type: | enum in [‘AUTO_RAINBOW’, ‘AUTO_RGB’, ‘CUSTOM’], default ‘AUTO_RAINBOW’

  `data_path`

    RNA Path to property affected by F-Curve

    Type: | string, default “”, (never None)

  `driver`

    Channel Driver (only set for Driver F-Curves)

    Type: | `Driver`, (readonly)

  `extrapolation`

    Method used for evaluating value of F-Curve outside first and last keyframes

    - `CONSTANT` Constant, Hold values of endpoint keyframes.
    - `LINEAR` Linear, Use slope of curve leading in/out of endpoint keyframes.

    Type: | enum in [‘CONSTANT’, ‘LINEAR’], default ‘CONSTANT’

  `group`

    Action Group that this F-Curve belongs to

    Type: | `ActionGroup`

  `hide`

    F-Curve and its keyframes are hidden in the Graph Editor graphs

    Type: | boolean, default False

  `is_valid`

    False when F-Curve could not be evaluated in past, so should be skipped when evaluating

    Type: | boolean, default False

  `keyframe_points`

    User-editable keyframes

    Type: | `FCurveKeyframePoints` `bpy_prop_collection` of `Keyframe`, (readonly)

  `lock`

    F-Curve’s settings cannot be edited

    Type: | boolean, default False

  `modifiers`

    Modifiers affecting the shape of the F-Curve

    Type: | `FCurveModifiers` `bpy_prop_collection` of `FModifier`, (readonly)

  `mute`

    F-Curve is not evaluated

    Type: | boolean, default False

  `sampled_points`

    Sampled animation data

    Type: | `bpy_prop_collection` of `FCurveSample`, (readonly)

  `select`

    F-Curve is selected for editing

    Type: | boolean, default False

  `evaluate`(frame)

    Evaluate F-Curve

    Parameters: | frame (float in [-inf, inf]) – Frame, Evaluate F-Curve at given frame
    Returns: | Value, Value of F-Curve specific frame
    Return type: | float in [-inf, inf]

  `update`()

    Ensure keyframes are sorted in chronological order and handles are set correctly

  `range`()

    Get the time extents for F-Curve

    Returns: | Range, Min/Max values
    Return type: | float array of 2 items in [-inf, inf]

  `update_autoflags`(data)

    Update FCurve flags set automatically from affected property (currently, integer/discrete flags set when the property is not a float)

    Parameters: | data (`AnyType`, (never None)) – Data, Data containing the property controlled by given FCurve

  `convert_to_samples`(start, end)

    Convert current FCurve from keyframes to sample points, if necessary

    Parameters: | start (int in [-300000, 300000]) – Start Frame end (int in [-300000, 300000]) – End Frame

  `convert_to_keyframes`(start, end)

    Convert current FCurve from sample points to keyframes (linear interpolation), if necessary

    Parameters: | start (int in [-300000, 300000]) – Start Frame end (int in [-300000, 300000]) – End Frame

Inherited Properties

`bpy_struct.id_data` |

Inherited Functions

`bpy_struct.as_pointer` `bpy_struct.driver_add` `bpy_struct.driver_remove` `bpy_struct.get` `bpy_struct.is_property_hidden` `bpy_struct.is_property_readonly` `bpy_struct.is_property_set` `bpy_struct.items` | `bpy_struct.keyframe_delete` `bpy_struct.keyframe_insert` `bpy_struct.keys` `bpy_struct.path_from_id` `bpy_struct.path_resolve` `bpy_struct.property_unset` `bpy_struct.type_recast` `bpy_struct.values`

References

`Action.fcurves` `ActionFCurves.find` `ActionFCurves.new` `ActionFCurves.remove` `ActionGroup.channels` | `AnimData.drivers` `AnimDataDrivers.from_existing` `AnimDataDrivers.from_existing` `NlaStrip.fcurves` `NlaStripFCurves.find`