Blender  V3.3
Macros | Functions
view3d_project.c File Reference
#include "DNA_camera_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_view3d_types.h"
#include "BLI_sys_types.h"
#include "BLI_math_vector.h"
#include "BKE_camera.h"
#include "BKE_screen.h"
#include "GPU_matrix.h"
#include "ED_view3d.h"

Go to the source code of this file.

Macros

#define BL_ZERO_CLIP   0.001
 

Functions

void ED_view3d_project_float_v2_m4 (const ARegion *region, const float co[3], float r_co[2], const float mat[4][4])
 
void ED_view3d_project_float_v3_m4 (const ARegion *region, const float co[3], float r_co[3], const float mat[4][4])
 
eV3DProjStatus ED_view3d_project_base (const struct ARegion *region, struct Base *base)
 
static eV3DProjStatus ed_view3d_project__internal (const ARegion *region, const float perspmat[4][4], const bool is_local, const float co[3], float r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_short_ex (const ARegion *region, float perspmat[4][4], const bool is_local, const float co[3], short r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_int_ex (const ARegion *region, float perspmat[4][4], const bool is_local, const float co[3], int r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_float_ex (const ARegion *region, float perspmat[4][4], const bool is_local, const float co[3], float r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_short_global (const ARegion *region, const float co[3], short r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_short_object (const ARegion *region, const float co[3], short r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_int_global (const ARegion *region, const float co[3], int r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_int_object (const ARegion *region, const float co[3], int r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_float_global (const ARegion *region, const float co[3], float r_co[2], const eV3DProjTest flag)
 
eV3DProjStatus ED_view3d_project_float_object (const ARegion *region, const float co[3], float r_co[2], const eV3DProjTest flag)
 
float ED_view3d_pixel_size (const RegionView3D *rv3d, const float co[3])
 
float ED_view3d_pixel_size_no_ui_scale (const RegionView3D *rv3d, const float co[3])
 
float ED_view3d_calc_zfac_ex (const RegionView3D *rv3d, const float co[3], bool *r_flip)
 
float ED_view3d_calc_zfac (const RegionView3D *rv3d, const float co[3])
 
float ED_view3d_calc_depth_for_comparison (const RegionView3D *rv3d, const float co[3])
 
static void view3d_win_to_ray_segment (const struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const float mval[2], float r_ray_co[3], float r_ray_dir[3], float r_ray_start[3], float r_ray_end[3])
 
bool ED_view3d_clip_segment (const RegionView3D *rv3d, float ray_start[3], float ray_end[3])
 
bool ED_view3d_win_to_ray_clipped_ex (struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const float mval[2], float r_ray_co[3], float r_ray_normal[3], float r_ray_start[3], bool do_clip_planes)
 
bool ED_view3d_win_to_ray_clipped (struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const float mval[2], float r_ray_start[3], float r_ray_normal[3], const bool do_clip_planes)
 
void ED_view3d_win_to_ray (const ARegion *region, const float mval[2], float r_ray_start[3], float r_ray_normal[3])
 
void ED_view3d_global_to_vector (const RegionView3D *rv3d, const float coord[3], float vec[3])
 
void ED_view3d_win_to_3d (const View3D *v3d, const ARegion *region, const float depth_pt[3], const float mval[2], float r_out[3])
 
void ED_view3d_win_to_3d_int (const View3D *v3d, const ARegion *region, const float depth_pt[3], const int mval[2], float r_out[3])
 
bool ED_view3d_win_to_3d_on_plane (const ARegion *region, const float plane[4], const float mval[2], const bool do_clip, float r_out[3])
 
bool ED_view3d_win_to_3d_on_plane_int (const ARegion *region, const float plane[4], const int mval[2], const bool do_clip, float r_out[3])
 
bool ED_view3d_win_to_3d_on_plane_with_fallback (const ARegion *region, const float plane[4], const float mval[2], const bool do_clip, const float plane_fallback[4], float r_out[3])
 
void ED_view3d_win_to_delta (const ARegion *region, const float xy_delta[2], const float zfac, float r_out[3])
 
void ED_view3d_win_to_origin (const ARegion *region, const float mval[2], float r_out[3])
 
void ED_view3d_win_to_vector (const ARegion *region, const float mval[2], float r_out[3])
 
bool ED_view3d_win_to_segment_clipped (const struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const float mval[2], float r_ray_start[3], float r_ray_end[3], const bool do_clip_planes)
 
Utility functions for projection
void ED_view3d_ob_project_mat_get (const RegionView3D *rv3d, const Object *ob, float r_pmat[4][4])
 
void ED_view3d_ob_project_mat_get_from_obmat (const RegionView3D *rv3d, const float obmat[4][4], float r_pmat[4][4])
 
void ED_view3d_project_v3 (const struct ARegion *region, const float world[3], float r_region_co[3])
 
void ED_view3d_project_v2 (const struct ARegion *region, const float world[3], float r_region_co[2])
 
bool ED_view3d_unproject_v3 (const struct ARegion *region, float regionx, float regiony, float regionz, float world[3])
 

Macro Definition Documentation

◆ BL_ZERO_CLIP

#define BL_ZERO_CLIP   0.001

Definition at line 25 of file view3d_project.c.

Function Documentation

◆ ED_view3d_calc_depth_for_comparison()

float ED_view3d_calc_depth_for_comparison ( const RegionView3D rv3d,
const float  co[3] 
)

◆ ED_view3d_calc_zfac()

float ED_view3d_calc_zfac ( const RegionView3D rv3d,
const float  co[3] 
)

Definition at line 302 of file view3d_project.c.

References ED_view3d_calc_zfac_ex(), and NULL.

Referenced by ED_view3d_calc_depth_for_comparison().

◆ ED_view3d_calc_zfac_ex()

float ED_view3d_calc_zfac_ex ( const RegionView3D rv3d,
const float  co[3],
bool r_flip 
)

Definition at line 279 of file view3d_project.c.

References mul_project_m4_v3_zfac(), and RegionView3D::persmat.

Referenced by ED_view3d_calc_zfac().

◆ ED_view3d_clip_segment()

bool ED_view3d_clip_segment ( const RegionView3D rv3d,
float  ray_start[3],
float  ray_end[3] 
)

◆ ED_view3d_global_to_vector()

void ED_view3d_global_to_vector ( const RegionView3D rv3d,
const float  coord[3],
float  vec[3] 
)

◆ ED_view3d_ob_project_mat_get()

void ED_view3d_ob_project_mat_get ( const RegionView3D rv3d,
const Object ob,
float  r_pmat[4][4] 
)

◆ ED_view3d_ob_project_mat_get_from_obmat()

void ED_view3d_ob_project_mat_get_from_obmat ( const RegionView3D rv3d,
const float  obmat[4][4],
float  r_pmat[4][4] 
)

Definition at line 690 of file view3d_project.c.

References mul_m4_m4m4(), RegionView3D::viewmat, and RegionView3D::winmat.

◆ ED_view3d_pixel_size()

float ED_view3d_pixel_size ( const RegionView3D rv3d,
const float  co[3] 
)

◆ ED_view3d_pixel_size_no_ui_scale()

float ED_view3d_pixel_size_no_ui_scale ( const RegionView3D rv3d,
const float  co[3] 
)

◆ ed_view3d_project__internal()

static eV3DProjStatus ed_view3d_project__internal ( const ARegion region,
const float  perspmat[4][4],
const bool  is_local,
const float  co[3],
float  r_co[2],
const eV3DProjTest  flag 
)
static

◆ ED_view3d_project_base()

eV3DProjStatus ED_view3d_project_base ( const struct ARegion region,
struct Base base 
)

◆ ED_view3d_project_float_ex()

eV3DProjStatus ED_view3d_project_float_ex ( const ARegion region,
float  perspmat[4][4],
const bool  is_local,
const float  co[3],
float  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_float_global()

eV3DProjStatus ED_view3d_project_float_global ( const ARegion region,
const float  co[3],
float  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_float_object()

eV3DProjStatus ED_view3d_project_float_object ( const ARegion region,
const float  co[3],
float  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_float_v2_m4()

void ED_view3d_project_float_v2_m4 ( const ARegion region,
const float  co[3],
float  r_co[2],
const float  mat[4][4] 
)

Definition at line 30 of file view3d_project.c.

References copy_v3_v3(), float(), mul_m4_v4(), vec4, ARegion::winx, ARegion::winy, and zero_v2().

◆ ED_view3d_project_float_v3_m4()

void ED_view3d_project_float_v3_m4 ( const ARegion region,
const float  co[3],
float  r_co[3],
const float  mat[4][4] 
)

Definition at line 52 of file view3d_project.c.

References copy_v3_v3(), float(), mul_m4_v4(), vec4, ARegion::winx, ARegion::winy, and zero_v3().

◆ ED_view3d_project_int_ex()

eV3DProjStatus ED_view3d_project_int_ex ( const ARegion region,
float  perspmat[4][4],
const bool  is_local,
const float  co[3],
int  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_int_global()

eV3DProjStatus ED_view3d_project_int_global ( const ARegion region,
const float  co[3],
int  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_int_object()

eV3DProjStatus ED_view3d_project_int_object ( const ARegion region,
const float  co[3],
int  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_short_ex()

eV3DProjStatus ED_view3d_project_short_ex ( const ARegion region,
float  perspmat[4][4],
const bool  is_local,
const float  co[3],
short  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_short_global()

eV3DProjStatus ED_view3d_project_short_global ( const ARegion region,
const float  co[3],
short  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_short_object()

eV3DProjStatus ED_view3d_project_short_object ( const ARegion region,
const float  co[3],
short  r_co[2],
const eV3DProjTest  flag 
)

◆ ED_view3d_project_v2()

void ED_view3d_project_v2 ( const struct ARegion region,
const float  world[3],
float  r_region_co[2] 
)

◆ ED_view3d_project_v3()

void ED_view3d_project_v3 ( const struct ARegion region,
const float  world[3],
float  r_region_co[3] 
)

Convert between region relative coordinates (x,y) and depth component z and a point in world space.

Definition at line 700 of file view3d_project.c.

References GPU_matrix_project_3fv(), ARegion::regiondata, RegionView3D::viewmat, RegionView3D::winmat, ARegion::winx, ARegion::winy, and world.

Referenced by cursor_draw_point_screen_space(), key_test_depth(), and object_transform_axis_target_calc_depth_init().

◆ ED_view3d_unproject_v3()

bool ED_view3d_unproject_v3 ( const struct ARegion region,
float  regionx,
float  regiony,
float  regionz,
float  world[3] 
)

◆ ED_view3d_win_to_3d()

void ED_view3d_win_to_3d ( const View3D v3d,
const ARegion region,
const float  depth_pt[3],
const float  mval[2],
float  r_out[3] 
)

◆ ED_view3d_win_to_3d_int()

void ED_view3d_win_to_3d_int ( const View3D v3d,
const ARegion region,
const float  depth_pt[3],
const int  mval[2],
float  r_out[3] 
)

Definition at line 519 of file view3d_project.c.

References ED_view3d_win_to_3d().

◆ ED_view3d_win_to_3d_on_plane()

bool ED_view3d_win_to_3d_on_plane ( const ARegion region,
const float  plane[4],
const float  mval[2],
const bool  do_clip,
float  r_out[3] 
)

◆ ED_view3d_win_to_3d_on_plane_int()

bool ED_view3d_win_to_3d_on_plane_int ( const ARegion region,
const float  plane[4],
const int  mval[2],
const bool  do_clip,
float  r_out[3] 
)

Definition at line 561 of file view3d_project.c.

References ED_view3d_win_to_3d_on_plane().

◆ ED_view3d_win_to_3d_on_plane_with_fallback()

bool ED_view3d_win_to_3d_on_plane_with_fallback ( const ARegion region,
const float  plane[4],
const float  mval[2],
const bool  do_clip,
const float  plane_fallback[4],
float  r_out[3] 
)

◆ ED_view3d_win_to_delta()

void ED_view3d_win_to_delta ( const ARegion region,
const float  xy_delta[2],
const float  zfac,
float  r_out[3] 
)

◆ ED_view3d_win_to_origin()

void ED_view3d_win_to_origin ( const ARegion region,
const float  mval[2],
float  r_out[3] 
)

◆ ED_view3d_win_to_ray()

void ED_view3d_win_to_ray ( const ARegion region,
const float  mval[2],
float  r_ray_start[3],
float  r_ray_normal[3] 
)

Definition at line 396 of file view3d_project.c.

References ED_view3d_win_to_origin(), and ED_view3d_win_to_vector().

◆ ED_view3d_win_to_ray_clipped()

bool ED_view3d_win_to_ray_clipped ( struct Depsgraph depsgraph,
const ARegion region,
const View3D v3d,
const float  mval[2],
float  r_ray_start[3],
float  r_ray_normal[3],
const bool  do_clip_planes 
)

Definition at line 384 of file view3d_project.c.

References depsgraph, ED_view3d_win_to_ray_clipped_ex(), and NULL.

◆ ED_view3d_win_to_ray_clipped_ex()

bool ED_view3d_win_to_ray_clipped_ex ( struct Depsgraph depsgraph,
const ARegion region,
const View3D v3d,
const float  mval[2],
float  r_ray_co[3],
float  r_ray_normal[3],
float  r_ray_start[3],
bool  do_clip_planes 
)

◆ ED_view3d_win_to_segment_clipped()

bool ED_view3d_win_to_segment_clipped ( const struct Depsgraph depsgraph,
const ARegion region,
const View3D v3d,
const float  mval[2],
float  r_ray_start[3],
float  r_ray_end[3],
const bool  do_clip_planes 
)

◆ ED_view3d_win_to_vector()

void ED_view3d_win_to_vector ( const ARegion region,
const float  mval[2],
float  r_out[3] 
)

◆ view3d_win_to_ray_segment()

static void view3d_win_to_ray_segment ( const struct Depsgraph depsgraph,
const ARegion region,
const View3D v3d,
const float  mval[2],
float  r_ray_co[3],
float  r_ray_dir[3],
float  r_ray_start[3],
float  r_ray_end[3] 
)
static