user: Give a detailed overview of bpy_extras submodule (bpy_extras.view3d_utils): syntax, arguments, return values, common patterns.

assistant: # bpy_extras submodule (bpy_extras.view3d_utils)

bpy_extras.view3d_utils.region_2d_to_vector_3d(*region*, *rv3d*, *coord*)
:   Return a direction vector from the viewport at the specific 2d region
    coordinate.

    Parameters:
    :   - **region** ([`bpy.types.Region`](bpy.types.Region.html#bpy.types.Region "bpy.types.Region")) – region of the 3D viewport, typically bpy.context.region.
        - **rv3d** ([`bpy.types.RegionView3D`](bpy.types.RegionView3D.html#bpy.types.RegionView3D "bpy.types.RegionView3D")) – 3D region data, typically bpy.context.space_data.region_3d.
        - **coord** (*2d vector*) – 2d coordinates relative to the region:
          (event.mouse_region_x, event.mouse_region_y) for example.

    Returns:
    :   normalized 3d vector.

    Return type:
    :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")

bpy_extras.view3d_utils.region_2d_to_origin_3d(*region*, *rv3d*, *coord*, *\**, *clamp=None*)
:   Return the 3d view origin from the region relative 2d coords.

    Parameters:
    :   - **region** ([`bpy.types.Region`](bpy.types.Region.html#bpy.types.Region "bpy.types.Region")) – region of the 3D viewport, typically bpy.context.region.
        - **rv3d** ([`bpy.types.RegionView3D`](bpy.types.RegionView3D.html#bpy.types.RegionView3D "bpy.types.RegionView3D")) – 3D region data, typically bpy.context.space_data.region_3d.
        - **coord** (*Sequence**[**float**]*) – 2D coordinates relative to the region;
          (event.mouse_region_x, event.mouse_region_y) for example.
        - **clamp** (*float* *|* *None*) – Clamp the maximum far-clip value used.
          (negative value will move the offset away from the view_location)

    Returns:
    :   The origin of the viewpoint in 3d space.

    Return type:
    :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")

bpy_extras.view3d_utils.region_2d_to_location_3d(*region*, *rv3d*, *coord*, *depth_location*)
:   Return a 3d location from the region relative 2d coords, aligned with
    *depth_location*.

    Parameters:
    :   - **region** ([`bpy.types.Region`](bpy.types.Region.html#bpy.types.Region "bpy.types.Region")) – region of the 3D viewport, typically bpy.context.region.
        - **rv3d** ([`bpy.types.RegionView3D`](bpy.types.RegionView3D.html#bpy.types.RegionView3D "bpy.types.RegionView3D")) – 3D region data, typically bpy.context.space_data.region_3d.
        - **coord** (*2d vector*) – 2d coordinates relative to the region;
          (event.mouse_region_x, event.mouse_region_y) for example.
        - **depth_location** (*3d vector*) – the returned vectors depth is aligned with this since
          there is no defined depth with a 2d region input.

    Returns:
    :   normalized 3d vector.

    Return type:
    :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")

bpy_extras.view3d_utils.location_3d_to_region_2d(*region*, *rv3d*, *coord*, *\**, *default=None*)
:   Return the *region* relative 2d location of a 3d position.

    Parameters:
    :   - **region** ([`bpy.types.Region`](bpy.types.Region.html#bpy.types.Region "bpy.types.Region")) – region of the 3D viewport, typically bpy.context.region.
        - **rv3d** ([`bpy.types.RegionView3D`](bpy.types.RegionView3D.html#bpy.types.RegionView3D "bpy.types.RegionView3D")) – 3D region data, typically bpy.context.space_data.region_3d.
        - **coord** (*3d vector*) – 3d world-space location.
        - **default** – Return this value if `coord`
          is behind the origin of a perspective view.

    Returns:
    :   2d location

    Return type:
    :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") | Any