user: Explain HookModifier(Modifier) in complete detail according to the official Blender documentation.

assistant: # HookModifier(Modifier)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Modifier`](bpy.types.Modifier.html#bpy.types.Modifier "bpy.types.Modifier")

*class* bpy.types.HookModifier(*Modifier*)
:   Hook modifier to modify the location of vertices

    center
    :   Center of the hook, used for falloff and display

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], default (0.0, 0.0, 0.0)

    falloff_curve
    :   Custom falloff curve

        Type:
        :   [`CurveMapping`](bpy.types.CurveMapping.html#bpy.types.CurveMapping "bpy.types.CurveMapping"), (readonly)

    falloff_radius
    :   If not zero, the distance from the hook where influence ends

        Type:
        :   float in [0, inf], default 0.0

    falloff_type
    :   Type:
        :   enum in [`'NONE'`, `'CURVE'`, `'SMOOTH'`, `'SPHERE'`, `'ROOT'`, `'INVERSE_SQUARE'`, `'SHARP'`, `'LINEAR'`, `'CONSTANT'`], default `'SMOOTH'`

    invert_vertex_group
    :   Invert vertex group influence

        Type:
        :   boolean, default False

    matrix_inverse
    :   Reverse the transformation between this object and its target

        Type:
        :   [`mathutils.Matrix`](mathutils.html#mathutils.Matrix "mathutils.Matrix") of 4 \* 4 items in [-inf, inf], default ((1.0, 0.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0), (0.0, 0.0, 0.0, 1.0))

    object
    :   Parent Object for hook, also recalculates and clears offset

        Type:
        :   [`Object`](bpy.types.Object.html#bpy.types.Object "bpy.types.Object")

    strength
    :   Relative force of the hook

        Type:
        :   float in [0, 1], default 1.0

    subtarget
    :   Name of Parent Bone for hook (if applicable), also recalculates and clears offset

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

    use_falloff_uniform
    :   Compensate for non-uniform object scale

        Type:
        :   boolean, default False

    vertex_group
    :   Name of Vertex Group which determines influence of modifier per point

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

    vertex_indices
    :   Indices of vertices bound to the modifier. For Bézier curves, handles count as additional vertices.

        Type:
        :   int array of 64 items in [0, inf], default (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (readonly)

    vertex_indices_set(*indices*)
    :   Validates and assigns the array of vertex indices bound to the modifier

        Parameters:
        :   **indices** (*int array* *of* *64 items in* *[**-inf**,* *inf**]*) – Vertex Indices

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type