user: Describe ShrinkwrapConstraint(Constraint) from the Blender manual or Python API, including usage steps and snippets.

assistant: # ShrinkwrapConstraint(Constraint)

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

*class* bpy.types.ShrinkwrapConstraint(*Constraint*)
:   Create constraint-based shrinkwrap relationship

    cull_face
    :   Stop vertices from projecting to a face on the target when facing towards/away

        - `OFF`
          Off – No culling.
        - `FRONT`
          Front – No projection when in front of the face.
        - `BACK`
          Back – No projection when behind the face.

        Type:
        :   enum in [`'OFF'`, `'FRONT'`, `'BACK'`], default `'OFF'`

    distance
    :   Distance to Target

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

    project_axis
    :   Axis constrain to

        Type:
        :   enum in [Object Axis Items](bpy_types_enum_items/object_axis_items.html#rna-enum-object-axis-items), default `'POS_X'`

    project_axis_space
    :   Space for the projection axis

        - `WORLD`
          World Space – The constraint is applied relative to the world coordinate system.
        - `CUSTOM`
          Custom Space – The constraint is applied in local space of a custom object/bone/vertex group.
        - `POSE`
          Pose Space – The constraint is applied in Pose Space, the object transformation is ignored.
        - `LOCAL_WITH_PARENT`
          Local With Parent – The constraint is applied relative to the rest pose local coordinate system of the bone, thus including the parent-induced transformation.
        - `LOCAL`
          Local Space – The constraint is applied relative to the local coordinate system of the object.

        Type:
        :   enum in [`'WORLD'`, `'CUSTOM'`, `'POSE'`, `'LOCAL_WITH_PARENT'`, `'LOCAL'`], default `'WORLD'`

    project_limit
    :   Limit the distance used for projection (zero disables)

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

    shrinkwrap_type
    :   Select type of shrinkwrap algorithm for target position

        - `NEAREST_SURFACE`
          Nearest Surface Point – Shrink the location to the nearest target surface.
        - `PROJECT`
          Project – Shrink the location to the nearest target surface along a given axis.
        - `NEAREST_VERTEX`
          Nearest Vertex – Shrink the location to the nearest target vertex.
        - `TARGET_PROJECT`
          Target Normal Project – Shrink the location to the nearest target surface along the interpolated vertex normals of the target.

        Type:
        :   enum in [`'NEAREST_SURFACE'`, `'PROJECT'`, `'NEAREST_VERTEX'`, `'TARGET_PROJECT'`], default `'NEAREST_SURFACE'`

    target
    :   Target Mesh object

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

    track_axis
    :   Axis that is aligned to the normal

        Type:
        :   enum in [`'TRACK_X'`, `'TRACK_Y'`, `'TRACK_Z'`, `'TRACK_NEGATIVE_X'`, `'TRACK_NEGATIVE_Y'`, `'TRACK_NEGATIVE_Z'`], default `'TRACK_X'`

    use_invert_cull
    :   When projecting in the opposite direction invert the face cull mode

        Type:
        :   boolean, default False

    use_project_opposite
    :   Project in both specified and opposite directions

        Type:
        :   boolean, default False

    use_track_normal
    :   Align the specified axis to the surface normal

        Type:
        :   boolean, default False

    wrap_mode
    :   Select how to constrain the object to the target surface

        Type:
        :   enum in [Modifier Shrinkwrap Mode Items](bpy_types_enum_items/modifier_shrinkwrap_mode_items.html#rna-enum-modifier-shrinkwrap-mode-items), default `'ON_SURFACE'`

    *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