Blender
V3.3
|
#include <cstdlib>
#include "MEM_guardedalloc.h"
#include "BLI_float4x4.hh"
#include "BLI_kdopbvh.h"
#include "BLI_listbase.h"
#include "BLI_map.hh"
#include "BLI_math.h"
#include "BLI_math_vector.hh"
#include "BLI_utildefines.h"
#include "DNA_armature_types.h"
#include "DNA_curve_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_view3d_types.h"
#include "BKE_armature.h"
#include "BKE_bvhutils.h"
#include "BKE_curve.h"
#include "BKE_duplilist.h"
#include "BKE_editmesh.h"
#include "BKE_geometry_set.h"
#include "BKE_global.h"
#include "BKE_layer.h"
#include "BKE_mesh.h"
#include "BKE_mesh_runtime.h"
#include "BKE_object.h"
#include "BKE_tracking.h"
#include "DEG_depsgraph_query.h"
#include "ED_armature.h"
#include "ED_transform_snap_object_context.h"
#include "ED_view3d.h"
Go to the source code of this file.
Classes | |
struct | SnapData_Mesh |
struct | SnapData_EditMesh |
struct | SnapObjectContext |
struct | RayCastAll_Data |
struct | RaycastObjUserData |
struct | NearestWorldObjUserData |
struct | Nearest2dUserData |
struct | SnapObjUserData |
Functions | |
Utilities | |
static const Mesh * | mesh_for_snap (Object *ob_eval, eSnapEditType edit_mode_type, bool *r_use_hide) |
Snap Object Data | |
static void | snap_editmesh_minmax (SnapObjectContext *sctx, BMesh *bm, float r_min[3], float r_max[3]) |
static SnapData_Mesh * | snap_object_data_mesh_get (SnapObjectContext *sctx, Object *ob_eval, const Mesh *me_eval, bool use_hide) |
static Mesh_Runtime * | snap_object_data_editmesh_runtime_get (Object *ob_eval) |
static SnapData_EditMesh * | snap_object_data_editmesh_get (SnapObjectContext *sctx, Object *ob_eval, BMEditMesh *em) |
static BVHTreeFromMesh * | snap_object_data_mesh_treedata_get (SnapObjectContext *sctx, Object *ob_eval, const Mesh *me_eval, bool use_hide) |
static BVHTreeFromEditMesh * | snap_object_data_editmesh_treedata_get (SnapObjectContext *sctx, Object *ob_eval, BMEditMesh *em) |
Ray Cast Funcs | |
static SnapObjectHitDepth * | hit_depth_create (const float depth, const float co[3], const float no[3], int index, Object *ob_eval, const float obmat[4][4], uint ob_uuid) |
static int | hit_depth_cmp (const void *arg1, const void *arg2) |
static void | raycast_all_cb (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) |
static bool | raycast_tri_backface_culling_test (const float dir[3], const float v0[3], const float v1[3], const float v2[3], float no[3]) |
static void | mesh_looptri_raycast_backface_culling_cb (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) |
static void | editmesh_looptri_raycast_backface_culling_cb (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) |
static bool | raycastMesh (SnapObjectContext *sctx, const SnapObjectParams *params, const float ray_start[3], const float ray_dir[3], Object *ob_eval, const Mesh *me_eval, const float obmat[4][4], const uint ob_index, bool use_hide, float *ray_depth, float r_loc[3], float r_no[3], int *r_index, ListBase *r_hit_list) |
static bool | raycastEditMesh (SnapObjectContext *sctx, const SnapObjectParams *params, const float ray_start[3], const float ray_dir[3], Object *ob_eval, BMEditMesh *em, const float obmat[4][4], const uint ob_index, float *ray_depth, float r_loc[3], float r_no[3], int *r_index, ListBase *r_hit_list) |
static void | raycast_obj_fn (SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], bool is_object_active, void *data) |
static bool | raycastObjects (SnapObjectContext *sctx, const SnapObjectParams *params, const float ray_start[3], const float ray_dir[3], float *ray_depth, float r_loc[3], float r_no[3], int *r_index, Object **r_ob, float r_obmat[4][4], ListBase *r_hit_list) |
Surface Snap Funcs | |
static void | nearest_world_tree_co (BVHTree *tree, BVHTree_NearestPointCallback nearest_cb, void *treedata, float co[3], float r_co[3], float r_no[3], int *r_index, float *r_dist_sq) |
static bool | nearest_world_tree (SnapObjectContext *UNUSED(sctx), const struct SnapObjectParams *params, BVHTree *tree, BVHTree_NearestPointCallback nearest_cb, void *treedata, const float(*obmat)[4], const float init_co[3], const float curr_co[3], float *r_dist_sq, float *r_loc, float *r_no, int *r_index) |
static bool | nearest_world_mesh (SnapObjectContext *sctx, const struct SnapObjectParams *params, Object *ob_eval, const Mesh *me_eval, const float(*obmat)[4], bool use_hide, const float init_co[3], const float curr_co[3], float *r_dist_sq, float *r_loc, float *r_no, int *r_index) |
static bool | nearest_world_editmesh (SnapObjectContext *sctx, const struct SnapObjectParams *params, Object *ob_eval, BMEditMesh *em, const float(*obmat)[4], const float init_co[3], const float curr_co[3], float *r_dist_sq, float *r_loc, float *r_no, int *r_index) |
static void | nearest_world_object_fn (SnapObjectContext *sctx, const struct SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], bool is_object_active, void *data) |
static bool | nearestWorldObjects (SnapObjectContext *sctx, const struct SnapObjectParams *params, const float init_co[3], const float curr_co[3], float *r_loc, float *r_no, int *r_index, Object **r_ob, float r_obmat[4][4]) |
Snap Nearest utilities | |
static bool | snap_bound_box_check_dist (const float min[3], const float max[3], const float lpmat[4][4], const float win_size[2], const float mval[2], float dist_px_sq) |
Internal Object Snapping API | |
static eSnapMode | snap_mesh_polygon (SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], float *dist_px, float r_loc[3], float r_no[3], int *r_index) |
static eSnapMode | snap_mesh_edge_verts_mixed (SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], float original_dist_px, const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3], int *r_index) |
static eSnapMode | snapArmature (SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], bool is_object_active, float *dist_px, float r_loc[3], float *UNUSED(r_no), int *r_index) |
static eSnapMode | snapCurve (SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], float *dist_px, float r_loc[3], float *UNUSED(r_no), int *r_index) |
static eSnapMode | snap_object_center (const SnapObjectContext *sctx, Object *ob_eval, const float obmat[4][4], float *dist_px, float r_loc[3], float *UNUSED(r_no), int *r_index) |
static eSnapMode | snapCamera (const SnapObjectContext *sctx, Object *object, const float obmat[4][4], float *dist_px, float r_loc[3], float *r_no, int *r_index) |
static eSnapMode | snapMesh (SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const Mesh *me_eval, const float obmat[4][4], bool use_hide, float *dist_px, float r_loc[3], float r_no[3], int *r_index) |
static eSnapMode | snapEditMesh (SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, BMEditMesh *em, const float obmat[4][4], float *dist_px, float r_loc[3], float r_no[3], int *r_index) |
static void | snap_obj_fn (SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], bool is_object_active, void *data) |
static eSnapMode | snapObjectsRay (SnapObjectContext *sctx, const SnapObjectParams *params, float *dist_px, float r_loc[3], float r_no[3], int *r_index, Object **r_ob, float r_obmat[4][4]) |
Public Object Snapping API | |
SnapObjectContext * | ED_transform_snap_object_context_create (Scene *scene, int flag) |
void | ED_transform_snap_object_context_destroy (SnapObjectContext *sctx) |
void | ED_transform_snap_object_context_set_editmesh_callbacks (SnapObjectContext *sctx, bool(*test_vert_fn)(BMVert *, void *user_data), bool(*test_edge_fn)(BMEdge *, void *user_data), bool(*test_face_fn)(BMFace *, void *user_data), void *user_data) |
bool | ED_transform_snap_object_project_ray_ex (SnapObjectContext *sctx, Depsgraph *depsgraph, const View3D *v3d, const SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], float *ray_depth, float r_loc[3], float r_no[3], int *r_index, Object **r_ob, float r_obmat[4][4]) |
bool | ED_transform_snap_object_project_ray_all (SnapObjectContext *sctx, Depsgraph *depsgraph, const View3D *v3d, const SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], float ray_depth, bool sort, ListBase *r_hit_list) |
static bool | transform_snap_context_project_ray_impl (SnapObjectContext *sctx, Depsgraph *depsgraph, const View3D *v3d, const SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], float *ray_depth, float r_co[3], float r_no[3]) |
bool | ED_transform_snap_object_project_ray (SnapObjectContext *sctx, Depsgraph *depsgraph, const View3D *v3d, const SnapObjectParams *params, const float ray_origin[3], const float ray_direction[3], float *ray_depth, float r_co[3], float r_no[3]) |
static eSnapMode | transform_snap_context_project_view3d_mixed_impl (SnapObjectContext *sctx, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const eSnapMode snap_to_flag, const SnapObjectParams *params, const float init_co[3], const float mval[2], const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3], int *r_index, Object **r_ob, float r_obmat[4][4], float r_face_nor[3]) |
eSnapMode | ED_transform_snap_object_project_view3d_ex (SnapObjectContext *sctx, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const eSnapMode snap_to, const SnapObjectParams *params, const float init_co[3], const float mval[2], const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3], int *r_index, Object **r_ob, float r_obmat[4][4], float r_face_nor[3]) |
eSnapMode | ED_transform_snap_object_project_view3d (SnapObjectContext *sctx, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const eSnapMode snap_to, const SnapObjectParams *params, const float init_co[3], const float mval[2], const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3]) |
bool | ED_transform_snap_object_project_all_view3d_ex (SnapObjectContext *sctx, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const SnapObjectParams *params, const float mval[2], float ray_depth, bool sort, ListBase *r_hit_list) |
Internal Data Types | |
#define | MAX_CLIPPLANE_LEN 3 |
enum | eViewProj { VIEW_PROJ_NONE = -1 , VIEW_PROJ_ORTHO = 0 , VIEW_PROJ_PERSP = -1 } |
Iterator | |
using | IterSnapObjsCallback = void(*)(SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], bool is_object_active, void *data) |
static bool | snap_object_is_snappable (const SnapObjectContext *sctx, const eSnapTargetSelect snap_target_select, const Base *base_act, const Base *base) |
static void | iter_snap_objects (SnapObjectContext *sctx, const SnapObjectParams *params, IterSnapObjsCallback sob_callback, void *data) |
Callbacks | |
using | Nearest2DGetVertCoCallback = void(*)(const int index, const Nearest2dUserData *data, const float **r_co) |
using | Nearest2DGetEdgeVertsCallback = void(*)(const int index, const Nearest2dUserData *data, int r_v_index[2]) |
using | Nearest2DGetTriVertsCallback = void(*)(const int index, const Nearest2dUserData *data, int r_v_index[3]) |
using | Nearest2DGetTriEdgesCallback = void(*)(const int index, const Nearest2dUserData *data, int r_e_index[3]) |
using | Nearest2DCopyVertNoCallback = void(*)(const int index, const Nearest2dUserData *data, float r_no[3]) |
static void | cb_mvert_co_get (const int index, const Nearest2dUserData *data, const float **r_co) |
static void | cb_bvert_co_get (const int index, const Nearest2dUserData *data, const float **r_co) |
static void | cb_mvert_no_copy (const int index, const Nearest2dUserData *data, float r_no[3]) |
static void | cb_bvert_no_copy (const int index, const Nearest2dUserData *data, float r_no[3]) |
static void | cb_medge_verts_get (const int index, const Nearest2dUserData *data, int r_v_index[2]) |
static void | cb_bedge_verts_get (const int index, const Nearest2dUserData *data, int r_v_index[2]) |
static void | cb_mlooptri_edges_get (const int index, const Nearest2dUserData *data, int r_v_index[3]) |
static void | cb_mlooptri_verts_get (const int index, const Nearest2dUserData *data, int r_v_index[3]) |
static bool | test_projected_vert_dist (const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, const bool is_persp, const float co[3], float *dist_px_sq, float r_co[3]) |
static bool | test_projected_edge_dist (const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, const bool is_persp, const float va[3], const float vb[3], float *dist_px_sq, float r_co[3]) |
static void | cb_snap_vert (void *userdata, int index, const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, BVHTreeNearest *nearest) |
static void | cb_snap_edge (void *userdata, int index, const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, BVHTreeNearest *nearest) |
static void | cb_snap_edge_verts (void *userdata, int index, const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, BVHTreeNearest *nearest) |
static void | cb_snap_tri_edges (void *userdata, int index, const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, BVHTreeNearest *nearest) |
static void | cb_snap_tri_verts (void *userdata, int index, const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, BVHTreeNearest *nearest) |
static void | nearest2d_data_init_mesh (SnapData_Mesh *sod, bool is_persp, bool use_backface_culling, Nearest2dUserData *r_nearest2d) |
static void | nearest2d_data_init_editmesh (SnapData_EditMesh *sod, bool is_persp, bool use_backface_culling, Nearest2dUserData *r_nearest2d) |
#define MAX_CLIPPLANE_LEN 3 |
Definition at line 55 of file transform_snap_object.cc.
using IterSnapObjsCallback = void (*)(SnapObjectContext *sctx, const SnapObjectParams *params, Object *ob_eval, const float obmat[4][4], bool is_object_active, void *data) |
Definition at line 470 of file transform_snap_object.cc.
using Nearest2DCopyVertNoCallback = void (*)(const int index, const Nearest2dUserData *data, float r_no[3]) |
Definition at line 1554 of file transform_snap_object.cc.
using Nearest2DGetEdgeVertsCallback = void (*)(const int index, const Nearest2dUserData *data, int r_v_index[2]) |
Definition at line 1544 of file transform_snap_object.cc.
using Nearest2DGetTriEdgesCallback = void (*)(const int index, const Nearest2dUserData *data, int r_e_index[3]) |
Definition at line 1551 of file transform_snap_object.cc.
using Nearest2DGetTriVertsCallback = void (*)(const int index, const Nearest2dUserData *data, int r_v_index[3]) |
Definition at line 1547 of file transform_snap_object.cc.
using Nearest2DGetVertCoCallback = void (*)(const int index, const Nearest2dUserData *data, const float **r_co) |
Definition at line 1541 of file transform_snap_object.cc.
enum eViewProj |
Enumerator | |
---|---|
VIEW_PROJ_NONE | |
VIEW_PROJ_ORTHO | |
VIEW_PROJ_PERSP |
Definition at line 57 of file transform_snap_object.cc.
|
static |
Definition at line 1613 of file transform_snap_object.cc.
References BM_edge_at_index(), BM_elem_index_get, data, BMEdge::v1, and BMEdge::v2.
Referenced by nearest2d_data_init_editmesh().
|
static |
Definition at line 1587 of file transform_snap_object.cc.
References BM_vert_at_index(), BMVert::co, and data.
Referenced by nearest2d_data_init_editmesh().
|
static |
Definition at line 1598 of file transform_snap_object.cc.
References BM_vert_at_index(), copy_v3_v3(), data, and BMVert::no.
Referenced by nearest2d_data_init_editmesh().
|
static |
Definition at line 1605 of file transform_snap_object.cc.
References data.
Referenced by nearest2d_data_init_mesh().
|
static |
Definition at line 1621 of file transform_snap_object.cc.
References data, MLoop::e, ELEM, MLoopTri::tri, MLoop::v, MEdge::v1, and MEdge::v2.
Referenced by nearest2d_data_init_mesh().
|
static |
Definition at line 1639 of file transform_snap_object.cc.
References data, MLoopTri::tri, and MLoop::v.
Referenced by nearest2d_data_init_mesh().
|
static |
Definition at line 1582 of file transform_snap_object.cc.
References data.
Referenced by nearest2d_data_init_mesh().
|
static |
Definition at line 1593 of file transform_snap_object.cc.
References copy_v3_v3(), and data.
Referenced by nearest2d_data_init_mesh().
|
static |
Definition at line 1733 of file transform_snap_object.cc.
References BVHTreeNearest::co, data, BVHTreeNearest::dist_sq, BVHTreeNearest::index, BVHTreeNearest::no, sub_v3_v3v3(), and test_projected_edge_dist().
Referenced by cb_snap_tri_edges(), snap_mesh_polygon(), snapEditMesh(), and snapMesh().
|
static |
Definition at line 1762 of file transform_snap_object.cc.
References cb_snap_vert(), data, and BVHTreeNearest::index.
Referenced by snapMesh().
|
static |
Definition at line 1782 of file transform_snap_object.cc.
References cb_snap_edge(), data, BVHTreeNearest::index, DistProjectedAABBPrecalc::ray_direction, and raycast_tri_backface_culling_test().
Referenced by snapMesh().
|
static |
Definition at line 1817 of file transform_snap_object.cc.
References cb_snap_vert(), data, BVHTreeNearest::index, DistProjectedAABBPrecalc::ray_direction, and raycast_tri_backface_culling_test().
Referenced by snapMesh().
|
static |
Definition at line 1709 of file transform_snap_object.cc.
References BVHTreeNearest::co, data, BVHTreeNearest::dist_sq, BVHTreeNearest::index, BVHTreeNearest::no, and test_projected_vert_dist().
Referenced by cb_snap_edge_verts(), cb_snap_tri_verts(), snap_mesh_polygon(), snapEditMesh(), and snapMesh().
SnapObjectContext* ED_transform_snap_object_context_create | ( | Scene * | scene, |
int | flag | ||
) |
Definition at line 3201 of file transform_snap_object.cc.
References SnapObjectContext::flag, scene, and SnapObjectContext::scene.
Referenced by add_vertex_invoke(), ED_view3d_cursor3d_position_rotation(), EDBM_project_snap_verts(), gizmo_move_invoke(), gpencil_bake_grease_pencil_animation_exec(), gpencil_strokes_reproject_exec(), initSnappingMode(), initWalkInfo(), v3d_cursor_snap_context_ensure(), and wm_xr_raycast().
void ED_transform_snap_object_context_destroy | ( | SnapObjectContext * | sctx | ) |
Definition at line 3212 of file transform_snap_object.cc.
Referenced by add_vertex_invoke(), ED_view3d_cursor3d_position_rotation(), EDBM_project_snap_verts(), freeSnapping(), gizmo_move_exit(), gpencil_bake_grease_pencil_animation_exec(), gpencil_strokes_reproject_exec(), v3d_cursor_snap_context_ensure(), v3d_cursor_snap_free(), walkEnd(), and wm_xr_raycast().
void ED_transform_snap_object_context_set_editmesh_callbacks | ( | SnapObjectContext * | sctx, |
bool(*)(BMVert *, void *user_data) | test_vert_fn, | ||
bool(*)(BMEdge *, void *user_data) | test_edge_fn, | ||
bool(*)(BMFace *, void *user_data) | test_face_fn, | ||
void * | user_data | ||
) |
Definition at line 3217 of file transform_snap_object.cc.
References SnapObjectContext::callbacks, SnapObjectContext::edit_mesh, and user_data.
bool ED_transform_snap_object_project_all_view3d_ex | ( | SnapObjectContext * | sctx, |
Depsgraph * | depsgraph, | ||
const ARegion * | region, | ||
const View3D * | v3d, | ||
const SnapObjectParams * | params, | ||
const float | mval[2], | ||
float | ray_depth, | ||
bool | sort, | ||
ListBase * | r_hit_list | ||
) |
Definition at line 3632 of file transform_snap_object.cc.
References depsgraph, ED_transform_snap_object_project_ray_all(), ED_view3d_win_to_ray_clipped_ex(), params, and sort().
bool ED_transform_snap_object_project_ray | ( | SnapObjectContext * | sctx, |
Depsgraph * | depsgraph, | ||
const View3D * | v3d, | ||
const SnapObjectParams * | params, | ||
const float | ray_origin[3], | ||
const float | ray_direction[3], | ||
float * | ray_depth, | ||
float | r_co[3], | ||
float | r_no[3] | ||
) |
Definition at line 3341 of file transform_snap_object.cc.
References BVH_RAYCAST_DIST_MAX, depsgraph, params, and transform_snap_context_project_ray_impl().
bool ED_transform_snap_object_project_ray_all | ( | SnapObjectContext * | sctx, |
Depsgraph * | depsgraph, | ||
const View3D * | v3d, | ||
const SnapObjectParams * | params, | ||
const float | ray_start[3], | ||
const float | ray_normal[3], | ||
float | ray_depth, | ||
bool | sort, | ||
ListBase * | r_hit_list | ||
) |
Definition at line 3260 of file transform_snap_object.cc.
References BLI_assert, BLI_listbase_sort(), BVH_RAYCAST_DIST_MAX, depsgraph, SnapObjectContext::depsgraph, hit_depth_cmp(), params, raycastObjects(), SnapObjectContext::runtime, sort(), and SnapObjectContext::v3d.
Referenced by ED_transform_snap_object_project_all_view3d_ex().
bool ED_transform_snap_object_project_ray_ex | ( | SnapObjectContext * | sctx, |
Depsgraph * | depsgraph, | ||
const View3D * | v3d, | ||
const SnapObjectParams * | params, | ||
const float | ray_start[3], | ||
const float | ray_normal[3], | ||
float * | ray_depth, | ||
float | r_loc[3], | ||
float | r_no[3], | ||
int * | r_index, | ||
Object ** | r_ob, | ||
float | r_obmat[4][4] | ||
) |
Definition at line 3231 of file transform_snap_object.cc.
References depsgraph, SnapObjectContext::depsgraph, params, raycastObjects(), SnapObjectContext::runtime, and SnapObjectContext::v3d.
Referenced by transform_snap_context_project_ray_impl().
eSnapMode ED_transform_snap_object_project_view3d | ( | SnapObjectContext * | sctx, |
Depsgraph * | depsgraph, | ||
const ARegion * | region, | ||
const View3D * | v3d, | ||
const eSnapMode | snap_to, | ||
const SnapObjectParams * | params, | ||
const float | init_co[3], | ||
const float | mval[2], | ||
const float | prev_co[3], | ||
float * | dist_px, | ||
float | r_loc[3], | ||
float | r_no[3] | ||
) |
Definition at line 3601 of file transform_snap_object.cc.
References depsgraph, ED_transform_snap_object_project_view3d_ex(), and params.
eSnapMode ED_transform_snap_object_project_view3d_ex | ( | SnapObjectContext * | sctx, |
Depsgraph * | depsgraph, | ||
const ARegion * | region, | ||
const View3D * | v3d, | ||
const eSnapMode | snap_to, | ||
const SnapObjectParams * | params, | ||
const float | init_co[3], | ||
const float | mval[2], | ||
const float | prev_co[3], | ||
float * | dist_px, | ||
float | r_loc[3], | ||
float | r_no[3], | ||
int * | r_index, | ||
Object ** | r_ob, | ||
float | r_obmat[4][4], | ||
float | r_face_nor[3] | ||
) |
Definition at line 3566 of file transform_snap_object.cc.
References depsgraph, params, and transform_snap_context_project_view3d_mixed_impl().
Referenced by ED_transform_snap_object_project_view3d().
|
static |
Definition at line 689 of file transform_snap_object.cc.
References bvhtree_ray_tri_intersection(), BVHTreeRayHit::co, BMVert::co, data, BVHTreeRay::direction, BVHTreeRayHit::dist, BVHTreeRayHit::index, BMEditMesh::looptris, madd_v3_v3v3fl(), BVHTreeRayHit::no, normalize_v3_v3(), BVHTreeRay::origin, raycast_tri_backface_culling_test(), and BMLoop::v.
Referenced by raycastEditMesh().
Definition at line 614 of file transform_snap_object.cc.
References SnapObjectHitDepth::depth.
Referenced by ED_transform_snap_object_project_ray_all().
|
static |
Definition at line 592 of file transform_snap_object.cc.
References SnapObjectHitDepth::co, copy_m4_m4(), copy_v3_v3(), SnapObjectHitDepth::depth, SnapObjectHitDepth::index, SnapObjectHitDepth::no, SnapObjectHitDepth::ob_eval, SnapObjectHitDepth::ob_uuid, and SnapObjectHitDepth::obmat.
Referenced by raycast_all_cb().
|
static |
Walks through all objects in the scene to create the list of objects to snap.
Definition at line 534 of file transform_snap_object.cc.
References ViewLayer::basact, BKE_object_has_geometry_set_instances(), BLI_assert, data, DEG_get_evaluated_object(), DEG_get_input_view_layer(), DEG_is_evaluated_object(), SnapObjectContext::depsgraph, free_object_duplilist(), LISTBASE_FOREACH, OB_DUPLI, ViewLayer::object_bases, object_duplilist(), Object::obmat, params, SnapObjectContext::runtime, SnapObjectContext::scene, snap_object_is_snappable(), and Object::transflag.
Referenced by nearestWorldObjects(), raycastObjects(), and snapObjectsRay().
|
static |
Mesh used for snapping.
BKE_editmesh_from_object(ob_eval)
should be used.Definition at line 178 of file transform_snap_object.cc.
References BKE_object_get_editmesh_eval_cage(), BKE_object_get_editmesh_eval_final(), BKE_object_get_evaluated_mesh(), BKE_object_is_in_editmode(), ME_WRAPPER_TYPE_BMESH, Mesh::runtime, SNAP_GEOM_CAGE, SNAP_GEOM_EDIT, SNAP_GEOM_FINAL, and Mesh_Runtime::wrapper_type.
Referenced by nearest_world_object_fn(), raycast_obj_fn(), and snap_obj_fn().
|
static |
Definition at line 662 of file transform_snap_object.cc.
References bvhtree_ray_tri_intersection(), BVHTreeRayHit::co, MVert::co, data, BVHTreeRay::direction, BVHTreeRayHit::dist, BVHTreeRayHit::index, madd_v3_v3v3fl(), BVHTreeRayHit::no, normalize_v3_v3(), BVHTreeRay::origin, raycast_tri_backface_culling_test(), MLoopTri::tri, and UNPACK3.
Referenced by raycastMesh().
|
static |
Definition at line 1869 of file transform_snap_object.cc.
References BMEditMesh::bm, Nearest2dUserData::bm, cb_bedge_verts_get(), cb_bvert_co_get(), cb_bvert_no_copy(), Nearest2dUserData::copy_vert_no, BVHTreeFromEditMesh::em, Nearest2dUserData::get_edge_verts_index, Nearest2dUserData::get_tri_edges_index, Nearest2dUserData::get_tri_verts_index, Nearest2dUserData::get_vert_co, Nearest2dUserData::is_persp, SnapData_EditMesh::treedata_editmesh, and Nearest2dUserData::use_backface_culling.
Referenced by snap_mesh_edge_verts_mixed(), snap_mesh_polygon(), and snapEditMesh().
|
static |
Definition at line 1848 of file transform_snap_object.cc.
References cb_medge_verts_get(), cb_mlooptri_edges_get(), cb_mlooptri_verts_get(), cb_mvert_co_get(), cb_mvert_no_copy(), Nearest2dUserData::copy_vert_no, BVHTreeFromMesh::edge, Nearest2dUserData::edge, Nearest2dUserData::get_edge_verts_index, Nearest2dUserData::get_tri_edges_index, Nearest2dUserData::get_tri_verts_index, Nearest2dUserData::get_vert_co, Nearest2dUserData::is_persp, BVHTreeFromMesh::loop, Nearest2dUserData::loop, BVHTreeFromMesh::looptri, Nearest2dUserData::looptri, SnapData_Mesh::treedata_mesh, Nearest2dUserData::use_backface_culling, BVHTreeFromMesh::vert, Nearest2dUserData::vert, BVHTreeFromMesh::vert_normals, and Nearest2dUserData::vert_normals.
Referenced by snap_mesh_edge_verts_mixed(), snap_mesh_polygon(), and snapMesh().
|
static |
Definition at line 1348 of file transform_snap_object.cc.
References BVHTreeFromEditMesh::nearest_callback, nearest_world_tree(), params, snap_object_data_editmesh_treedata_get(), and BVHTreeFromEditMesh::tree.
Referenced by nearest_world_object_fn().
|
static |
Definition at line 1316 of file transform_snap_object.cc.
References BVHTreeFromMesh::nearest_callback, nearest_world_tree(), params, snap_object_data_mesh_treedata_get(), and BVHTreeFromMesh::tree.
Referenced by nearest_world_object_fn().
|
static |
Definition at line 1378 of file transform_snap_object.cc.
References BKE_editmesh_from_object(), BKE_object_get_evaluated_mesh(), BLI_assert_msg, copy_m4_m4(), NearestWorldObjUserData::curr_co, data, DEG_get_original_object(), NearestWorldObjUserData::init_co, mesh_for_snap(), nearest_world_editmesh(), nearest_world_mesh(), OB_CURVES_LEGACY, OB_FONT, OB_MESH, OB_SURF, params, NearestWorldObjUserData::r_dist_sq, NearestWorldObjUserData::r_index, NearestWorldObjUserData::r_loc, NearestWorldObjUserData::r_no, NearestWorldObjUserData::r_ob, NearestWorldObjUserData::r_obmat, NearestWorldObjUserData::ret, and Object::type.
Referenced by nearestWorldObjects().
|
static |
Definition at line 1238 of file transform_snap_object.cc.
References add_v3_v3(), copy_v3_v3(), invert_m4_m4(), max_ff(), mul_v3_fl(), mul_v3_m3v3(), mul_v3_m4v3(), nearest_world_tree_co(), normalize_v3(), params, sub_v3_v3v3(), transpose_m3_m4(), and tree.
Referenced by nearest_world_editmesh(), and nearest_world_mesh().
|
static |
Definition at line 1206 of file transform_snap_object.cc.
References BLI_bvhtree_find_nearest(), BVHTreeNearest::co, copy_v3_fl(), copy_v3_v3(), KDL::diff(), BVHTreeNearest::dist_sq, BVHTreeNearest::index, len_squared_v3(), BVHTreeNearest::no, sub_v3_v3v3(), and tree.
Referenced by nearest_world_tree().
|
static |
Walks through all objects in the scene to find the nearest location on target surface.
sctx | Snap context to store data. |
params | Settings for snapping. |
init_co | Initial location of source point. |
prev_co | Current location of source point after transformation but before snapping. |
r_loc | Location of nearest point on target surface. |
r_no | Normal of nearest point on target surface. |
r_index | Index of nearest polygon on target surface. |
r_ob | Nearest target object. |
r_obmat | Nearest target matrix (may not be Object.obmat with dupli-instances). |
Definition at line 1479 of file transform_snap_object.cc.
References NearestWorldObjUserData::curr_co, data, NearestWorldObjUserData::init_co, iter_snap_objects(), nearest_world_object_fn(), params, NearestWorldObjUserData::r_index, NearestWorldObjUserData::r_loc, NearestWorldObjUserData::r_no, NearestWorldObjUserData::r_ob, and NearestWorldObjUserData::r_obmat.
Referenced by transform_snap_context_project_view3d_mixed_impl().
|
static |
Definition at line 630 of file transform_snap_object.cc.
References BLI_addtail(), BVHTreeRayHit::co, copy_v3_v3(), data, BVHTreeRayHit::dist, hit_depth_create(), BVHTreeRayHit::index, mul_m3_v3(), mul_v3_m4v3(), BVHTreeRayHit::no, normal, and normalize_v3().
Referenced by raycastEditMesh(), and raycastMesh().
|
static |
Definition at line 1015 of file transform_snap_object.cc.
References BKE_editmesh_from_object(), BKE_object_get_evaluated_mesh(), BLI_assert_msg, copy_m4_m4(), data, DEG_get_original_object(), Object::dt, ELEM, mesh_for_snap(), OB_BOUNDBOX, OB_CURVES_LEGACY, OB_FONT, RaycastObjUserData::ob_index, OB_MESH, OB_SURF, OB_WIRE, params, RaycastObjUserData::r_hit_list, RaycastObjUserData::r_index, RaycastObjUserData::r_loc, RaycastObjUserData::r_no, RaycastObjUserData::r_ob, RaycastObjUserData::r_obmat, RaycastObjUserData::ray_depth, RaycastObjUserData::ray_dir, RaycastObjUserData::ray_start, raycastEditMesh(), raycastMesh(), RaycastObjUserData::ret, Object::type, UNLIKELY, and RaycastObjUserData::use_occlusion_test.
Referenced by raycastObjects().
|
static |
Definition at line 654 of file transform_snap_object.cc.
References cross_tri_v3(), dot_v3v3(), v1, and v2.
Referenced by cb_snap_tri_edges(), cb_snap_tri_verts(), editmesh_looptri_raycast_backface_culling_cb(), and mesh_looptri_raycast_backface_culling_cb().
|
static |
Definition at line 858 of file transform_snap_object.cc.
References BLI_bvhtree_ray_cast(), BLI_bvhtree_ray_cast_all(), BMEditMesh::bm, BM_elem_index_get, BVH_RAYCAST_DIST_MAX, copy_v3_v3(), data, editmesh_looptri_raycast_backface_culling_cb(), BVHTreeFromEditMesh::em, BMLoop::f, BVHTreeRayHit::index, invert_m4_m4(), isect_ray_aabb_v3_simple(), BMEditMesh::looptris, madd_v3_v3fl(), SnapData_EditMesh::max, SnapData_EditMesh::min, mul_m3_v3(), mul_m4_v3(), mul_mat3_m4_v3(), normalize_v3(), params, raycast_all_cb(), BVHTreeFromEditMesh::raycast_callback, snap_object_data_editmesh_get(), snap_object_data_editmesh_treedata_get(), BMesh::totface, transpose_m3_m4(), BVHTreeFromEditMesh::tree, and SnapData_EditMesh::treedata_editmesh.
Referenced by raycast_obj_fn().
|
static |
Definition at line 718 of file transform_snap_object.cc.
References BKE_object_boundbox_get(), BLI_assert, BLI_bvhtree_ray_cast(), BLI_bvhtree_ray_cast_all(), BVH_RAYCAST_DIST_MAX, copy_v3_v3(), data, BVHTreeRayHit::index, invert_m4_m4(), isect_ray_aabb_v3_simple(), BVHTreeFromMesh::looptri, madd_v3_v3fl(), mesh_looptri_raycast_backface_culling_cb(), mul_m3_v3(), mul_m4_v3(), mul_mat3_m4_v3(), normalize_v3(), params, MLoopTri::poly, raycast_all_cb(), BVHTreeFromMesh::raycast_callback, snap_object_data_mesh_get(), Mesh::totpoly, transpose_m3_m4(), BVHTreeFromMesh::tree, SnapData_Mesh::treedata_mesh, and BoundBox::vec.
Referenced by raycast_obj_fn().
|
static |
Walks through all objects in the scene to find the hit
on object surface.
sctx | Snap context to store data. |
ray_depth | maximum depth allowed for r_co, elements deeper than this value will be ignored. |
r_loc | Hit location. |
r_no | Hit normal (optional). |
r_index | Hit index or -1 when no valid index is found. (currently only set to the polygon index when using snap_to == SCE_SNAP_MODE_FACE_RAYCAST ). |
r_ob | Hit object. |
r_obmat | Object matrix (may not be Object.obmat with dupli-instances). |
r_hit_list | List of SnapObjectHitDepth (caller must free). |
Definition at line 1142 of file transform_snap_object.cc.
References data, iter_snap_objects(), params, raycast_obj_fn(), SnapObjectContext::runtime, SNAP_GEOM_EDIT, SnapObjectContext::v3d, and XRAY_FLAG_ENABLED.
Referenced by ED_transform_snap_object_project_ray_all(), ED_transform_snap_object_project_ray_ex(), and transform_snap_context_project_view3d_mixed_impl().
|
static |
Definition at line 1511 of file transform_snap_object.cc.
References dist_squared_to_projected_aabb(), dist_squared_to_projected_aabb_precalc(), max, and min.
Referenced by snapArmature(), snapCurve(), snapEditMesh(), and snapMesh().
|
static |
Calculate the minimum and maximum coordinates of the box that encompasses this mesh.
Definition at line 220 of file transform_snap_object.cc.
References bm, BM_ITER_MESH, BM_VERTS_OF_MESH, SnapObjectContext::callbacks, BMVert::co, SnapObjectContext::edit_mesh, INIT_MINMAX, minmax_v3v3_v3(), and v.
Referenced by snap_object_data_editmesh_get().
|
static |
Definition at line 2025 of file transform_snap_object.cc.
References BKE_editmesh_from_object(), copy_v3_v3(), Nearest2dUserData::copy_vert_no, dist_squared_to_projected_aabb_precalc(), SnapObjectContext::editmesh_caches, Nearest2dUserData::get_edge_verts_index, Nearest2dUserData::get_vert_co, IN_RANGE, BVHTreeNearest::index, interp_v3_v3v3(), invert_m4_m4(), Nearest2dUserData::is_persp, isect_ray_line_v3(), len_squared_v3v3(), line_point_factor_v3(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), SnapObjectContext::mesh_caches, mid_v3_v3v3(), mul_m4_m4m4(), mul_m4_v3(), mul_transposed_mat3_m4_v3(), mul_v3_m4v3(), SnapObjectContext::mval, nearest2d_data_init_editmesh(), nearest2d_data_init_mesh(), normalize_v3(), OB_MESH, params, SnapObjectContext::pmat, DistProjectedAABBPrecalc::ray_direction, DistProjectedAABBPrecalc::ray_origin, SnapObjectContext::runtime, SCE_SNAP_MODE_EDGE, SCE_SNAP_MODE_EDGE_MIDPOINT, SCE_SNAP_MODE_EDGE_PERPENDICULAR, SCE_SNAP_MODE_VERTEX, SnapObjectContext::snap_to_flag, sqrtf, square_f(), test_projected_vert_dist(), Object::type, SnapObjectContext::view_proj, VIEW_PROJ_PERSP, and SnapObjectContext::win_size.
Referenced by transform_snap_context_project_view3d_mixed_impl().
|
static |
Definition at line 1892 of file transform_snap_object.cc.
References BKE_editmesh_from_object(), BLI_assert, BMEditMesh::bm, BM_EDGE, BM_elem_index_get, BM_FACE, BM_face_at_index(), BM_FACE_FIRST_LOOP, BM_mesh_elem_index_ensure(), BM_mesh_elem_table_ensure(), BM_VERT, cb_snap_edge(), cb_snap_vert(), SnapObjectContext::clip_plane, SnapObjectContext::clip_plane_len, copy_v3_v3(), dist_squared_to_projected_aabb_precalc(), BMLoop::e, MLoop::e, BVHTreeFromMesh::edge, SnapObjectContext::editmesh_caches, BVHTreeNearest::index, invert_m4_m4(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), BVHTreeFromMesh::loop, MPoly::loopstart, MAX_CLIPPLANE_LEN, SnapObjectContext::mesh_caches, mul_m4_m4m4(), mul_m4_v3(), mul_transposed_mat3_m4_v3(), mul_v4_m4v4(), SnapObjectContext::mval, nearest2d_data_init_editmesh(), nearest2d_data_init_mesh(), BMLoop::next, normalize_v3(), params, SnapObjectContext::pmat, SnapObjectContext::runtime, SCE_SNAP_MODE_EDGE, SCE_SNAP_MODE_NONE, SCE_SNAP_MODE_VERTEX, SnapObjectContext::snap_to_flag, sqrtf, square_f(), MPoly::totloop, transpose_m4_m4(), BMLoop::v, MLoop::v, SnapObjectContext::view_proj, VIEW_PROJ_PERSP, and SnapObjectContext::win_size.
Referenced by transform_snap_context_project_view3d_mixed_impl().
|
static |
Definition at line 3043 of file transform_snap_object.cc.
References ATTR_FALLTHROUGH, BKE_editmesh_from_object(), BKE_object_get_evaluated_mesh(), BKE_object_is_in_editmode(), BLI_assert_msg, copy_m4_m4(), data, DEG_get_original_object(), SnapObjUserData::dist_px, Object::dt, mesh_for_snap(), OB_ARMATURE, OB_BOUNDBOX, OB_CAMERA, OB_CURVES_LEGACY, OB_EMPTY, OB_FONT, OB_GPENCIL, OB_LAMP, OB_MESH, OB_SURF, params, SnapObjUserData::r_index, SnapObjUserData::r_loc, SnapObjUserData::r_no, SnapObjUserData::r_ob, SnapObjUserData::r_obmat, SnapObjUserData::ret, SCE_SNAP_MODE_NONE, SNAP_GEOM_FINAL, snap_object_center(), snapArmature(), snapCamera(), snapCurve(), snapEditMesh(), snapMesh(), Object::type, and UNLIKELY.
Referenced by snapObjectsRay().
|
static |
Definition at line 2524 of file transform_snap_object.cc.
References SnapObjectContext::clip_plane, SnapObjectContext::clip_plane_len, dist_squared_to_projected_aabb_precalc(), SnapObjectContext::mval, OB_DUPLI, SnapObjectContext::pmat, SnapObjectContext::runtime, SCE_SNAP_MODE_NONE, SCE_SNAP_MODE_VERTEX, SnapObjectContext::snap_to_flag, sqrtf, square_f(), test_projected_vert_dist(), Object::transflag, SnapObjectContext::view_proj, VIEW_PROJ_PERSP, and SnapObjectContext::win_size.
Referenced by snap_obj_fn(), and snapCamera().
|
static |
Definition at line 342 of file transform_snap_object.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new(), BLI_assert, BMEditMesh::bm, Mesh_Runtime::bvh_cache, bvhcache_has_tree(), SnapData_EditMesh::bvhtree, BVHTreeFromEditMesh::cached, SnapData_EditMesh::cached, SnapData_EditMesh::clear(), SnapObjectContext::editmesh_caches, BVHTreeFromEditMesh::em, G, init, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), SnapData_EditMesh::max, SnapObjectContext::mesh_caches, SnapData_EditMesh::mesh_runtime, SnapData_EditMesh::min, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove(), snap_editmesh_minmax(), snap_object_data_editmesh_runtime_get(), BVHTreeFromEditMesh::tree, and SnapData_EditMesh::treedata_editmesh.
Referenced by raycastEditMesh(), snap_object_data_editmesh_treedata_get(), and snapEditMesh().
|
static |
Definition at line 327 of file transform_snap_object.cc.
References BKE_object_get_editmesh_eval_cage(), BKE_object_get_editmesh_eval_final(), Object::data, and Mesh::runtime.
Referenced by snap_object_data_editmesh_get().
|
static |
Definition at line 417 of file transform_snap_object.cc.
References BKE_bvhtree_from_editmesh_get(), BKE_editmesh_from_object(), BLI_assert, BLI_BITMAP_NEW, BMEditMesh::bm, bm, BM_iter_mesh_bitmap_from_filter_tessface(), Mesh_Runtime::bvh_cache, bvhtree_from_editmesh_looptri_ex(), BVHTREE_FROM_EM_LOOPTRI, SnapObjectContext::callbacks, DEG_get_original_object(), SnapObjectContext::edit_mesh, BVHTreeFromEditMesh::em, Mesh_Runtime::eval_mutex, MEM_freeN, SnapData_EditMesh::mesh_runtime, poly_to_tri_count(), snap_object_data_editmesh_get(), BMesh::totface, BMesh::totloop, BMEditMesh::tottri, BVHTreeFromEditMesh::tree, and SnapData_EditMesh::treedata_editmesh.
Referenced by nearest_world_editmesh(), and raycastEditMesh().
|
static |
Definition at line 238 of file transform_snap_object.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new(), MLoopTri_Store::array, BKE_bvhtree_from_mesh_get(), BKE_editmesh_from_object(), BLI_assert, Mesh_Runtime::bvh_cache, bvhcache_has_tree(), SnapData_Mesh::bvhtree, BVHTREE_FROM_LOOPTRI, BVHTREE_FROM_LOOPTRI_NO_HIDDEN, BVHTreeFromMesh::cached, SnapData_Mesh::cached, SnapData_Mesh::clear(), BVHTreeFromMesh::edge, SnapObjectContext::editmesh_caches, SnapData_Mesh::has_looptris, SnapData_Mesh::has_loose_edge, SnapData_Mesh::has_loose_vert, init, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), BVHTreeFromMesh::loop, BVHTreeFromMesh::looptri, Mesh_Runtime::looptris, Mesh::medge, SnapObjectContext::mesh_caches, Mesh::mloop, Mesh::mpoly, Mesh::mvert, OB_MESH, SnapData_Mesh::poly, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove(), Mesh::runtime, BVHTreeFromMesh::tree, SnapData_Mesh::treedata_mesh, Object::type, BVHTreeFromMesh::vert, and BVHTreeFromMesh::vert_normals.
Referenced by raycastMesh(), snap_object_data_mesh_treedata_get(), and snapMesh().
|
static |
Definition at line 408 of file transform_snap_object.cc.
References snap_object_data_mesh_get(), and SnapData_Mesh::treedata_mesh.
Referenced by nearest_world_mesh().
|
static |
Definition at line 477 of file transform_snap_object.cc.
References BA_SNAP_FIX_DEPS_FIASCO, BA_TRANSFORM_LOCKED_IN_PLACE, BA_WAS_SEL, BASE_SELECTABLE, BASE_SELECTED, BASE_VISIBLE, Base::flag, Base::flag_legacy, Object::mode, NULL, OB_MODE_EDIT, OB_MODE_OBJECT, Base::object, SnapObjectContext::runtime, SCE_SNAP_TARGET_ALL, SCE_SNAP_TARGET_NOT_ACTIVE, SCE_SNAP_TARGET_NOT_EDITED, SCE_SNAP_TARGET_NOT_NONEDITED, SCE_SNAP_TARGET_NOT_SELECTED, SCE_SNAP_TARGET_ONLY_SELECTABLE, and SnapObjectContext::v3d.
Referenced by iter_snap_objects().
|
static |
Definition at line 2185 of file transform_snap_object.cc.
References BKE_armature_boundbox_get(), BONE_HIDDEN_A, BONE_HIDDEN_P, BONE_HIDDEN_PG, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, bPose::chanbase, SnapObjectContext::clip_plane, SnapObjectContext::clip_plane_len, Object::data, dist_squared_to_projected_aabb_precalc(), bArmature::edbo, ListBase::first, Bone::flag, bArmature::layer, LISTBASE_FOREACH, MAX_CLIPPLANE_LEN, Object::mode, mul_m4_m4m4(), mul_m4_v3(), mul_v4_m4v4(), SnapObjectContext::mval, OB_MODE_POSE, params, SnapObjectContext::pmat, Object::pose, SnapObjectContext::runtime, SCE_SNAP_MODE_EDGE, SCE_SNAP_MODE_FACE_RAYCAST, SCE_SNAP_MODE_NONE, SCE_SNAP_MODE_VERTEX, SCE_SNAP_TARGET_NOT_SELECTED, snap_bound_box_check_dist(), SnapObjectContext::snap_to_flag, sqrtf, square_f(), test_projected_edge_dist(), test_projected_vert_dist(), transpose_m4_m4(), BoundBox::vec, SnapObjectContext::view_proj, VIEW_PROJ_PERSP, and SnapObjectContext::win_size.
Referenced by snap_obj_fn().
|
static |
Definition at line 2574 of file transform_snap_object.cc.
References BKE_object_movieclip_get(), BKE_tracking_camera_get_reconstructed_interpolate(), BKE_tracking_get_camera_object_matrix(), BKE_tracking_object_get_tracks(), RenderData::cfra, SnapObjectContext::clip_plane, SnapObjectContext::clip_plane_len, copy_v3_v3(), dist_squared_to_projected_aabb_precalc(), float(), invert_m4_m4(), LISTBASE_FOREACH, mul_m4_v3(), SnapObjectContext::mval, OB_DUPLI, MovieTracking::objects, SnapObjectContext::pmat, Scene::r, SnapObjectContext::runtime, SCE_SNAP_MODE_NONE, SCE_SNAP_MODE_VERTEX, scene, SnapObjectContext::scene, snap_object_center(), SnapObjectContext::snap_to_flag, sqrtf, square_f(), test_projected_vert_dist(), TRACK_HAS_BUNDLE, MovieClip::tracking, TRACKING_OBJECT_CAMERA, Object::transflag, SnapObjectContext::view_proj, VIEW_PROJ_PERSP, and SnapObjectContext::win_size.
Referenced by snap_obj_fn().
|
static |
Definition at line 2353 of file transform_snap_object.cc.
References BKE_curve_boundbox_get(), BKE_object_is_in_editmode(), SnapObjectContext::clip_plane, SnapObjectContext::clip_plane_len, Object::data, dist_squared_to_projected_aabb_precalc(), Curve::editnurb, float(), SnapObjectContext::has_occlusion_plane, HD_ALIGN, LISTBASE_FOREACH, MAX_CLIPPLANE_LEN, mul_m4_m4m4(), mul_m4_v3(), mul_v4_m4v4(), SnapObjectContext::mval, Curve::nurb, EditNurb::nurbs, params, SnapObjectContext::pmat, SnapObjectContext::runtime, SCE_SNAP_MODE_NONE, SCE_SNAP_MODE_VERTEX, SCE_SNAP_TARGET_NOT_SELECTED, SELECT, snap_bound_box_check_dist(), SnapObjectContext::snap_to_flag, sqrtf, square_f(), test_projected_vert_dist(), transpose_m4_m4(), BoundBox::vec, SnapObjectContext::view_proj, VIEW_PROJ_PERSP, and SnapObjectContext::win_size.
Referenced by snap_obj_fn().
|
static |
Definition at line 2847 of file transform_snap_object.cc.
References BKE_bvhtree_from_editmesh_get(), BLI_assert, BLI_BITMAP_NEW, BLI_bvhtree_find_nearest_projected(), BMEditMesh::bm, BM_EDGE, BM_EDGES_OF_MESH, BM_iter_mesh_bitmap_from_filter(), BM_mesh_elem_index_ensure(), BM_mesh_elem_table_ensure(), BM_VERT, BM_VERTS_OF_MESH, bool, Mesh_Runtime::bvh_cache, SnapData_EditMesh::bvhtree, bvhtree_from_editmesh_edges_ex(), bvhtree_from_editmesh_verts_ex(), BVHTREE_FROM_EM_EDGES, BVHTREE_FROM_EM_VERTS, SnapData_EditMesh::cached, SnapObjectContext::callbacks, cb_snap_edge(), cb_snap_vert(), SnapObjectContext::clip_plane, SnapObjectContext::clip_plane_len, copy_v3_v3(), SnapObjectContext::edit_mesh, Mesh_Runtime::eval_mutex, BVHTreeNearest::index, invert_m4_m4(), SnapData_EditMesh::max, MAX_CLIPPLANE_LEN, MEM_freeN, SnapData_EditMesh::mesh_runtime, SnapData_EditMesh::min, mul_m4_m4m4(), mul_m4_v3(), mul_transposed_mat3_m4_v3(), mul_v4_m4v4(), SnapObjectContext::mval, nearest2d_data_init_editmesh(), normalize_v3(), params, SnapObjectContext::pmat, SnapObjectContext::runtime, SCE_SNAP_MODE_EDGE, SCE_SNAP_MODE_FACE_RAYCAST, SCE_SNAP_MODE_NONE, SCE_SNAP_MODE_VERTEX, snap_bound_box_check_dist(), snap_object_data_editmesh_get(), SnapObjectContext::snap_to_flag, sqrtf, square_f(), BMesh::totedge, BMesh::totvert, transpose_m4_m4(), BVHTreeFromEditMesh::tree, SnapObjectContext::view_proj, VIEW_PROJ_PERSP, and SnapObjectContext::win_size.
Referenced by snap_obj_fn().
|
static |
Definition at line 2668 of file transform_snap_object.cc.
References BKE_bvhtree_from_mesh_get(), BKE_object_boundbox_get(), BLI_assert, BLI_bvhtree_find_nearest_projected(), SnapData_Mesh::bvhtree, BVHTREE_FROM_LOOSEEDGES, BVHTREE_FROM_LOOSEVERTS, BVHTreeFromMesh::cached, SnapData_Mesh::cached, cb_snap_edge(), cb_snap_edge_verts(), cb_snap_tri_edges(), cb_snap_tri_verts(), cb_snap_vert(), SnapObjectContext::clip_plane, SnapObjectContext::clip_plane_len, copy_v3_v3(), SnapData_Mesh::has_loose_edge, SnapData_Mesh::has_loose_vert, BVHTreeNearest::index, invert_m4_m4(), MAX_CLIPPLANE_LEN, mul_m4_m4m4(), mul_m4_v3(), mul_transposed_mat3_m4_v3(), mul_v4_m4v4(), SnapObjectContext::mval, nearest2d_data_init_mesh(), normalize_v3(), params, SnapObjectContext::pmat, SnapObjectContext::runtime, SCE_SNAP_MODE_EDGE, SCE_SNAP_MODE_FACE_RAYCAST, SCE_SNAP_MODE_NONE, SCE_SNAP_MODE_VERTEX, snap_bound_box_check_dist(), snap_object_data_mesh_get(), SnapObjectContext::snap_to_flag, sqrtf, square_f(), Mesh::totedge, Mesh::totvert, transpose_m4_m4(), BVHTreeFromMesh::tree, SnapData_Mesh::treedata_mesh, BoundBox::vec, SnapObjectContext::view_proj, VIEW_PROJ_PERSP, and SnapObjectContext::win_size.
Referenced by snap_obj_fn().
|
static |
Walks through all objects in the scene to find the closest snap element ray.
sctx | Snap context to store data. |
dist_px | Maximum threshold distance (in pixels). |
r_loc | Hit location. |
r_no | Hit normal (optional). |
r_index | Hit index or -1 when no valid index is found. (currently only set to the polygon index when using snap_to == SCE_SNAP_MODE_FACE_RAYCAST ). |
r_ob | Hit object. |
r_obmat | Object matrix (may not be Object.obmat with dupli-instances). |
Definition at line 3168 of file transform_snap_object.cc.
References data, iter_snap_objects(), params, SCE_SNAP_MODE_NONE, and snap_obj_fn().
Referenced by transform_snap_context_project_view3d_mixed_impl().
|
static |
Definition at line 1680 of file transform_snap_object.cc.
References copy_v3_v3(), interp_v3_v3v3(), isect_ray_line_v3(), DistProjectedAABBPrecalc::ray_direction, DistProjectedAABBPrecalc::ray_origin, and test_projected_vert_dist().
Referenced by cb_snap_edge(), and snapArmature().
|
static |
Definition at line 1649 of file transform_snap_object.cc.
References copy_v3_v3(), dot_m4_v3_row_x(), dot_m4_v3_row_y(), isect_point_planes_v3_negated(), len_squared_v2v2(), mul_project_m4_v3_zfac(), mul_v2_fl(), DistProjectedAABBPrecalc::mval, DistProjectedAABBPrecalc::pmat, and w().
Referenced by cb_snap_vert(), snap_mesh_edge_verts_mixed(), snap_object_center(), snapArmature(), snapCamera(), snapCurve(), and test_projected_edge_dist().
|
static |
Convenience function for snap ray-casting.
Given a ray, cast it into the scene (snapping to faces).
Definition at line 3312 of file transform_snap_object.cc.
References depsgraph, ED_transform_snap_object_project_ray_ex(), params, and ret.
Referenced by ED_transform_snap_object_project_ray().
|
static |
Definition at line 3361 of file transform_snap_object.cc.
References BLI_assert, BLI_ASSERT_UNIT_V3, BVH_RAYCAST_DIST_MAX, SnapObjectContext::clip_plane, SnapObjectContext::clip_plane_len, copy_m4_m4(), copy_v2_v2(), copy_v3_v3(), copy_v4_v4(), depsgraph, SnapObjectContext::depsgraph, dot_v3v3(), ED_view3d_win_to_ray_clipped_ex(), SnapObjectContext::has_occlusion_plane, RegionView3D::is_persp, SnapObjectContext::mval, nearestWorldObjects(), negate_v4(), OB_CURVES_LEGACY, params, RegionView3D::persmat, plane_from_point_normal_v3(), planes_from_projmat(), SnapObjectContext::pmat, raycastObjects(), SnapObjectContext::region, ARegion::regiondata, SnapObjectContext::runtime, SCE_SNAP_MODE_EDGE, SCE_SNAP_MODE_EDGE_MIDPOINT, SCE_SNAP_MODE_EDGE_PERPENDICULAR, SCE_SNAP_MODE_FACE_NEAREST, SCE_SNAP_MODE_FACE_RAYCAST, SCE_SNAP_MODE_GEOM, SCE_SNAP_MODE_NONE, SCE_SNAP_MODE_VERTEX, snap_mesh_edge_verts_mixed(), snap_mesh_polygon(), SnapObjectContext::snap_to_flag, snapObjectsRay(), Object::type, SnapObjectContext::v3d, SnapObjectContext::view_proj, VIEW_PROJ_ORTHO, VIEW_PROJ_PERSP, SnapObjectContext::win_size, ARegion::winx, ARegion::winy, and XRAY_ENABLED.
Referenced by ED_transform_snap_object_project_view3d_ex().