# 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`) – region of the 3D viewport, typically bpy.context.region. rv3d (`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`

`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.

  Note

  Orthographic views have a less obvious origin, the far clip is used to define the viewport near/far extents. Since far clip can be a very large value, the result may give with numeric precision issues.

  To avoid this problem, you can optionally clamp the far clip to a smaller value based on the data you’re operating on.

  Parameters: | region (`bpy.types.Region`) – region of the 3D viewport, typically bpy.context.region. rv3d (`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. clamp (float or 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`

`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`) – region of the 3D viewport, typically bpy.context.region. rv3d (`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`

`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`) – region of the 3D viewport, typically bpy.context.region. rv3d (`bpy.types.RegionView3D`) – 3D region data, typically bpy.context.space_data.region_3d. coord (3d vector) – 3d worldspace location. default – Return this value if `coord` is behind the origin of a perspective view.
  Returns: | 2d location
  Return type: | `mathutils.Vector` or `default` argument.