|
Blender
V2.93
|
#include "MEM_guardedalloc.h"#include "BLI_alloca.h"#include "BLI_array.h"#include "BLI_linklist.h"#include "BLI_listbase.h"#include "BLI_math.h"#include "BLI_memarena.h"#include "BLI_smallhash.h"#include "BLI_string.h"#include "BLT_translation.h"#include "BKE_bvhutils.h"#include "BKE_context.h"#include "BKE_editmesh.h"#include "BKE_editmesh_bvh.h"#include "BKE_report.h"#include "GPU_immediate.h"#include "GPU_matrix.h"#include "GPU_state.h"#include "ED_mesh.h"#include "ED_screen.h"#include "ED_space_api.h"#include "ED_view3d.h"#include "WM_api.h"#include "WM_types.h"#include "DNA_object_types.h"#include "UI_interface.h"#include "UI_resources.h"#include "RNA_access.h"#include "RNA_define.h"#include "DEG_depsgraph.h"#include "DEG_depsgraph_query.h"#include "mesh_intern.h"Go to the source code of this file.
Classes | |
| struct | KnifeColors |
| struct | KnifeVert |
| struct | Ref |
| struct | KnifeEdge |
| struct | KnifeLineHit |
| struct | KnifePosData |
| struct | KnifeTool_OpData |
Macros | |
| #define | USE_NET_ISLAND_CONNECT |
| #define | KMAXDIST (10 * U.dpi_fac) /* max mouse distance from edge before not detecting it */ |
| #define | KNIFE_FLT_EPS 0.00001f |
| #define | KNIFE_FLT_EPS_SQUARED (KNIFE_FLT_EPS * KNIFE_FLT_EPS) |
| #define | KNIFE_FLT_EPSBIG 0.0005f |
| #define | KNIFE_FLT_EPS_PX_VERT 0.5f |
| #define | KNIFE_FLT_EPS_PX_EDGE 0.05f |
| #define | KNIFE_FLT_EPS_PX_FACE 0.05f |
| #define | WM_MODALKEY(_id) |
| #define | F_ISECT_IS_UNKNOWN(f) BM_elem_flag_test(BM_FACE_FIRST_LOOP(f), BM_ELEM_TAG) |
| #define | F_ISECT_SET_UNKNOWN(f) BM_elem_flag_enable(BM_FACE_FIRST_LOOP(f), BM_ELEM_TAG) |
| #define | F_ISECT_SET_OUTSIDE(f) BM_elem_flag_disable(BM_FACE_FIRST_LOOP(f), BM_ELEM_TAG) |
Typedefs | |
| typedef struct KnifeColors | KnifeColors |
| typedef struct KnifeVert | KnifeVert |
| typedef struct Ref | Ref |
| typedef struct KnifeEdge | KnifeEdge |
| typedef struct KnifeLineHit | KnifeLineHit |
| typedef struct KnifePosData | KnifePosData |
| typedef struct KnifeTool_OpData | KnifeTool_OpData |
Interactive editmesh knife tool.
Definition in file editmesh_knife.c.
| #define F_ISECT_IS_UNKNOWN | ( | f | ) | BM_elem_flag_test(BM_FACE_FIRST_LOOP(f), BM_ELEM_TAG) |
| #define F_ISECT_SET_OUTSIDE | ( | f | ) | BM_elem_flag_disable(BM_FACE_FIRST_LOOP(f), BM_ELEM_TAG) |
| #define F_ISECT_SET_UNKNOWN | ( | f | ) | BM_elem_flag_enable(BM_FACE_FIRST_LOOP(f), BM_ELEM_TAG) |
Definition at line 77 of file editmesh_knife.c.
| #define KNIFE_FLT_EPS 0.00001f |
Definition at line 82 of file editmesh_knife.c.
| #define KNIFE_FLT_EPS_PX_EDGE 0.05f |
Definition at line 87 of file editmesh_knife.c.
| #define KNIFE_FLT_EPS_PX_FACE 0.05f |
Definition at line 88 of file editmesh_knife.c.
| #define KNIFE_FLT_EPS_PX_VERT 0.5f |
Definition at line 86 of file editmesh_knife.c.
| #define KNIFE_FLT_EPS_SQUARED (KNIFE_FLT_EPS * KNIFE_FLT_EPS) |
Definition at line 83 of file editmesh_knife.c.
| #define KNIFE_FLT_EPSBIG 0.0005f |
Definition at line 84 of file editmesh_knife.c.
| #define USE_NET_ISLAND_CONNECT |
Definition at line 75 of file editmesh_knife.c.
| #define WM_MODALKEY | ( | _id | ) |
| typedef struct KnifeColors KnifeColors |
| typedef struct KnifeLineHit KnifeLineHit |
| typedef struct KnifePosData KnifePosData |
| typedef struct KnifeTool_OpData KnifeTool_OpData |
| anonymous enum |
Definition at line 251 of file editmesh_knife.c.
|
static |
Definition at line 1082 of file editmesh_knife.c.
References BLI_ghash_insert(), BLI_ghash_lookup(), knife_append_list_no_dup(), and knife_empty_list().
Referenced by knife_add_cut().
Definition at line 691 of file editmesh_knife.c.
References KnifeEdge::basef, KnifeEdge::e, if(), and NULL.
Referenced by knife_find_line_hits().
Definition at line 651 of file editmesh_knife.c.
References BLI_listbase_is_single(), KnifeEdge::e, KnifeVert::edges, KnifeEdge::faces, ListBase::first, if(), Ref::next, NULL, Ref::ref, and KnifeVert::v.
Referenced by knife_find_line_hits().
|
static |
Definition at line 1687 of file editmesh_knife.c.
References BM_EDGE, BM_edge_in_face(), BM_edge_is_boundary(), BM_EDGES_OF_FACE, BM_FACE, BM_ITER_ELEM, BM_VERT, BM_vert_in_face(), coinciding_edges(), e, and user_data.
Referenced by point_is_visible().
|
static |
Calculate the center and maximum excursion of mesh.
Definition at line 1644 of file editmesh_knife.c.
References BMEditMesh::bm, bm, BM_ITER_MESH, BM_VERTS_OF_MESH, KnifeTool_OpData::cagecos, BMVert::co, KnifeTool_OpData::em, INIT_MINMAX, len_v3v3(), max, mid_v3_v3v3(), min, minmax_v3v3_v3(), minmax_v3v3_v3_array(), KnifeTool_OpData::ortho_extent, KnifeTool_OpData::ortho_extent_center, BMesh::totvert, and v.
Referenced by knife_find_line_hits().
|
static |
Definition at line 1804 of file editmesh_knife.c.
References add_v3_v3(), center, closest(), madd_v3_v3v3fl(), normalize_v3(), project_plane_normalized_v3_v3v3(), sub_v3_v3(), sub_v3_v3v3(), v1, and v2.
Referenced by knife_find_line_hits().
Definition at line 1667 of file editmesh_knife.c.
References BMVert::co, equals_v3v3(), BMEdge::v1, and BMEdge::v2.
Referenced by bm_ray_cast_cb_elem_not_in_face_check().
| use_tag | When set, tag all faces inside the polylines. |
Definition at line 3167 of file editmesh_knife.c.
References BMEditMesh::bm, bm, BM_EDGE, BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_face_calc_point_in_face(), BM_FACE_FIRST_LOOP, BM_FACES_OF_EDGE, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_mesh_elem_hflag_enable_all(), C, KnifeTool_OpData::cut_through, BMLoop::e, e, ED_view3d_ob_project_mat_get(), edbm_mesh_knife_point_isect(), KnifeTool_OpData::em, BMLoop::f, F_ISECT_IS_UNKNOWN, F_ISECT_SET_OUTSIDE, F_ISECT_SET_UNKNOWN, float(), KnifeTool_OpData::ignore_edge_snapping, KnifeTool_OpData::ignore_vert_snapping, knife_add_cut(), knife_finish_cut(), knife_project_v2(), knife_recalc_projmat(), knife_start_cut(), knifetool_exit_ex(), knifetool_finish_ex(), knifetool_init(), knifetool_init_bmbvh(), knifetool_update_mval(), LinkNode::link, MEM_allocN_len, MEM_callocN, KnifeTool_OpData::mode, LinkNode::next, BMLoop::next, NULL, KnifeTool_OpData::ob, point_is_visible(), BMLoop::radial_next, KnifeTool_OpData::region, and ARegion::regiondata.
Referenced by knifeproject_exec().
Definition at line 3146 of file editmesh_knife.c.
References float(), isect_point_poly_v2(), LinkNode::link, MEM_allocN_len, and LinkNode::next.
Referenced by EDBM_mesh_knife().
Definition at line 728 of file editmesh_knife.c.
References ListBase::first, Ref::next, NULL, and Ref::ref.
Referenced by knife_add_single_cut(), knife_append_list_no_dup(), knife_make_cuts(), and knife_split_edge().
|
static |
Definition at line 833 of file editmesh_knife.c.
References BLI_ghash_insert(), BLI_ghash_lookup(), BM_FACES_OF_EDGE, BM_ITER_ELEM, e, KnifeEdge::e, KnifeEdge::faces, get_bm_knife_vert(), knife_add_to_vert_edges(), knife_append_list(), new_knife_edge(), KnifeTool_OpData::origedgemap, KnifeEdge::v1, and KnifeEdge::v2.
Referenced by knife_add_single_cut(), and knife_get_face_kedges().
|
static |
Definition at line 806 of file editmesh_knife.c.
References BLI_ghash_insert(), BLI_ghash_lookup(), BM_elem_index_get, BM_FACES_OF_VERT, BM_ITER_ELEM, KnifeTool_OpData::cagecos, BMVert::co, KnifeVert::faces, knife_append_list(), new_knife_vert(), KnifeTool_OpData::origvertmap, v, and KnifeVert::v.
Referenced by get_bm_knife_edge().
|
static |
Definition at line 1557 of file editmesh_knife.c.
References BLI_assert, BLI_ghash_lookup(), KnifeTool_OpData::facetrimap, and POINTER_AS_INT.
Referenced by knife_ray_intersect_face().
|
static |
Definition at line 1443 of file editmesh_knife.c.
References add_hit_to_facehits(), BLI_ghash_free(), BLI_ghash_ptr_new(), BLI_ghashIterator_getKey(), BLI_ghashIterator_getValue(), KnifePosData::bmface, KnifeTool_OpData::curr, KnifeLineHit::f, KnifeVert::faces, KnifeEdge::faces, ListBase::first, GHASH_ITER, KnifeTool_OpData::is_drag_hold, KnifeLineHit::kfe, knife_cut_face(), linehit_to_knifepos(), KnifeTool_OpData::linehits, MEM_freeN, NULL, prepare_linehits_for_cut(), KnifeTool_OpData::prev, r, KnifeTool_OpData::totlinehit, KnifeLineHit::v, and KnifePosData::vert.
Referenced by EDBM_mesh_knife(), and knifetool_modal().
|
static |
Definition at line 755 of file editmesh_knife.c.
References BM_FACES_OF_EDGE, BM_ITER_ELEM, e, KnifeVert::faces, and knife_append_list().
Referenced by knife_split_edge().
|
static |
Definition at line 1123 of file editmesh_knife.c.
References KnifeEdge::basef, BLI_assert, BM_edge_exists(), KnifeLineHit::cagehit, KnifeEdge::e, KnifeLineHit::f, KnifeVert::faces, KnifeEdge::faces, find_ref(), get_bm_knife_edge(), KnifeLineHit::hit, KnifeVert::is_cut, KnifeEdge::is_cut, KnifeVert::is_face, KnifeLineHit::kfe, knife_add_single_cut__is_linehit_outside_face(), knife_add_to_vert_edges(), knife_append_list(), knife_edge_append_face(), knife_split_edge(), knife_verts_edge_in_face(), new_knife_edge(), new_knife_vert(), KnifeVert::v, KnifeLineHit::v, KnifeEdge::v1, and KnifeEdge::v2.
Referenced by knife_cut_face().
|
static |
special purpose function, if the linehit is connected to a real edge/vert return true if co is outside the face.
Definition at line 1100 of file editmesh_knife.c.
References BM_face_edge_share_loop(), BM_face_vert_share_loop(), BM_loop_point_side_of_edge_test(), BM_loop_point_side_of_loop_test(), KnifeEdge::e, KnifeLineHit::kfe, l, KnifeVert::v, and KnifeLineHit::v.
Referenced by knife_add_single_cut().
|
static |
Definition at line 748 of file editmesh_knife.c.
References KnifeVert::edges, knife_append_list(), KnifeEdge::v1, and KnifeEdge::v2.
Referenced by get_bm_knife_edge(), knife_add_single_cut(), and knife_split_edge().
|
static |
Definition at line 719 of file editmesh_knife.c.
References BLI_addtail(), BLI_mempool_calloc(), Ref::ref, and KnifeTool_OpData::refs.
Referenced by get_bm_knife_edge(), get_bm_knife_vert(), knife_add_edge_faces_to_vert(), knife_add_single_cut(), knife_add_to_vert_edges(), knife_append_list_no_dup(), knife_edge_append_face(), knife_get_face_kedges(), knife_make_cuts(), and knife_split_edge().
|
static |
Definition at line 741 of file editmesh_knife.c.
References find_ref(), and knife_append_list().
Referenced by add_hit_to_facehits().
|
static |
Definition at line 1203 of file editmesh_knife.c.
References BLI_listbase_count_at_most(), ListBase::first, knife_add_single_cut(), and r.
Referenced by knife_add_cut().
|
static |
Definition at line 877 of file editmesh_knife.c.
References KnifeEdge::faces, knife_append_list(), and knife_get_face_kedges().
Referenced by knife_add_single_cut(), and knife_split_edge().
|
static |
Definition at line 710 of file editmesh_knife.c.
References KnifeTool_OpData::arena, BLI_listbase_clear(), and BLI_memarena_alloc().
Referenced by add_hit_to_facehits(), knife_get_face_kedges(), and knife_make_cuts().
|
static |
Definition at line 2339 of file editmesh_knife.c.
References KnifeVert::cageco, KnifeVert::co, copy_v3_v3(), KnifeTool_OpData::curr, dist_squared_to_line_segment_v2(), ED_view3d_clipping_test(), KnifeTool_OpData::ethresh, ListBase::first, KnifeTool_OpData::ignore_edge_snapping, KnifeTool_OpData::ignore_vert_snapping, interp_v3_v3v3(), KnifeTool_OpData::is_angle_snapping, KnifeTool_OpData::is_interactive, KNIFE_FLT_EPS, knife_get_face_kedges(), knife_interp_v3_v3v3(), knife_project_v2(), knife_snap_edge_in_angle(), knife_snap_size(), line_point_factor_v2(), line_point_factor_v3(), mid_v3_v3v3(), KnifePosData::mval, new_knife_vert(), Ref::next, NULL, Ref::ref, ViewContext::rv3d, RV3D_CLIPPING_ENABLED, KnifeTool_OpData::snap_midpoints, KnifeEdge::v1, KnifeEdge::v2, ViewContext::v3d, and KnifeTool_OpData::vc.
Referenced by knife_snap_update_from_mval().
|
static |
Definition at line 2170 of file editmesh_knife.c.
References add_v3_v3v3(), BKE_bmbvh_ray_cast(), BM_elem_flag_test, BM_ELEM_SELECT, KnifeTool_OpData::bmbvh, copy_v3_v3(), KnifeTool_OpData::curr, EDBM_face_find_nearest(), KnifeTool_OpData::is_interactive, KMAXDIST, knife_input_ray_segment(), ViewContext::mval, KnifePosData::mval, normalize_v3_v3(), NULL, KnifeTool_OpData::only_select, sub_v3_v3v3(), and KnifeTool_OpData::vc.
Referenced by knife_snap_update_from_mval().
|
static |
Definition at line 2433 of file editmesh_knife.c.
References KnifeVert::cageco, KnifeVert::co, copy_v2_v2(), copy_v3_v3(), KnifeTool_OpData::curr, dist_squared_to_line_segment_v2(), ED_view3d_clipping_test(), KnifeTool_OpData::ignore_vert_snapping, KnifeTool_OpData::is_angle_snapping, KnifeTool_OpData::is_interactive, KNIFE_FLT_EPS, KNIFE_FLT_EPSBIG, knife_project_v2(), knife_snap_size(), len_squared_v2v2(), KnifePosData::mval, NULL, KnifeTool_OpData::prev, ViewContext::rv3d, RV3D_CLIPPING_ENABLED, KnifeEdge::v1, KnifeEdge::v2, ViewContext::v3d, KnifeTool_OpData::vc, and KnifeTool_OpData::vthresh.
Referenced by knife_snap_update_from_mval().
Definition at line 767 of file editmesh_knife.c.
References ListBase::first, Ref::next, NULL, and Ref::ref.
Referenced by knife_split_edge().
|
static |
Definition at line 1826 of file editmesh_knife.c.
References BKE_bmbvh_tree_get(), BLI_array_append, BLI_array_declare, BLI_array_len, BLI_bvhtree_intersect_plane(), BLI_smallhash_haskey(), BLI_smallhash_init(), BLI_smallhash_insert(), BLI_smallhash_iternew(), BLI_smallhash_iternew_p(), BLI_smallhash_iternext(), BLI_smallhash_iternext_p(), BLI_smallhash_lookup(), BLI_smallhash_reinsert(), BLI_smallhash_release(), BM_elem_flag_test, bm_elem_from_knife_edge(), bm_elem_from_knife_vert(), BM_ELEM_SELECT, KnifeTool_OpData::bmbvh, KnifePosData::cage, KnifeVert::cageco, KnifeLineHit::cagehit, calc_ortho_extent(), clip_to_ortho_planes(), closest_to_line_segment_v2(), BMVert::co, KnifeVert::co, copy_v2_v2(), copy_v3_v3(), cross_v3_v3v3(), KnifeTool_OpData::curr, ViewContext::depsgraph, dist_squared_to_line_segment_v2(), ED_view3d_win_to_segment_clipped(), KnifePosData::edge, ELEM, KnifeTool_OpData::em, BMLoop::f, KnifeLineHit::f, fabsf, faces, ListBase::first, KnifeLineHit::hit, KnifeTool_OpData::is_drag_hold, KnifeTool_OpData::is_interactive, KnifeTool_OpData::is_ortho, isect_line_line_v3(), isect_seg_seg_v2_point_ex(), KnifeLineHit::kfe, KNIFE_FLT_EPS_PX_EDGE, KNIFE_FLT_EPS_PX_FACE, KNIFE_FLT_EPS_PX_VERT, KNIFE_FLT_EPS_SQUARED, knife_get_face_kedges(), knife_input_ray_segment(), knife_project_v2(), knife_ray_intersect_face(), KnifeLineHit::l, len_squared_v2v2(), len_v2v2(), KnifeTool_OpData::linehits, BMEditMesh::looptris, MEM_freeN, mid_v2_v2v2(), mid_v3_v3v3(), mul_m4_v3(), KnifePosData::mval, Ref::next, NULL, KnifeTool_OpData::ob_imat, KnifeTool_OpData::only_select, KnifeTool_OpData::ortho_extent, KnifeTool_OpData::ortho_extent_center, KnifeLineHit::perc, RegionView3D::persp, plane_from_point_normal_v3(), point_is_visible(), KnifeTool_OpData::prev, Ref::ref, KnifeTool_OpData::region, result, ViewContext::rv3d, RV3D_CAMOB, KnifeLineHit::schit, set_linehit_depth(), set_lowest_face_tri(), KnifeTool_OpData::snap_midpoints, sub_v3_v3v3(), KnifeTool_OpData::totlinehit, transform_point_by_seg_v3(), tree, v, KnifeLineHit::v, KnifeEdge::v1, v1, v2, KnifeEdge::v2, ViewContext::v3d, KnifeTool_OpData::vc, and KnifePosData::vert.
Referenced by knife_update_active().
|
static |
Definition at line 1510 of file editmesh_knife.c.
References KnifeTool_OpData::linehits, MEM_freeN, NULL, and KnifeTool_OpData::totlinehit.
Referenced by EDBM_mesh_knife(), and knifetool_modal().
|
static |
Definition at line 857 of file editmesh_knife.c.
References BLI_ghash_insert(), BLI_ghash_lookup(), BM_EDGES_OF_FACE, BM_ITER_ELEM, e, get_bm_knife_edge(), KnifeTool_OpData::kedgefacemap, knife_append_list(), and knife_empty_list().
Referenced by knife_edge_append_face(), knife_find_closest_edge_of_face(), knife_find_line_hits(), knife_ray_intersect_face(), and knife_sample_screen_density_from_closest_face().
|
static |
Definition at line 2620 of file editmesh_knife.c.
References KnifeColors::curpoint, KnifeColors::curpoint_a, KnifeColors::edge, KnifeColors::line, KnifeColors::point, KnifeColors::point_a, SPACE_VIEW3D, TH_ACTIVE_SPLINE, TH_HANDLE_SEL_VECT, TH_NURB_ULINE, TH_NURB_VLINE, and UI_GetThemeColorType3ubv().
Referenced by knifetool_init().
|
static |
Definition at line 574 of file editmesh_knife.c.
References ED_view3d_unproject(), mul_m4_v3(), KnifeTool_OpData::ob_imat, ViewContext::region, and KnifeTool_OpData::vc.
Referenced by knife_find_closest_face(), knife_find_line_hits(), knife_start_cut(), and knife_update_active().
|
static |
Definition at line 2316 of file editmesh_knife.c.
References interp_v3_v3v3(), KnifeTool_OpData::is_ortho, mul_project_m4_v3(), mul_v3_project_m4_v3(), KnifeTool_OpData::projmat, KnifeTool_OpData::projmat_inv, v1, and v2.
Referenced by knife_find_closest_edge_of_face().
|
static |
Definition at line 1347 of file editmesh_knife.c.
References KnifeEdge::basef, BLI_listbase_sort_r(), BLI_mempool_iternew(), BLI_mempool_iterstep(), BLI_smallhash_init(), BLI_smallhash_insert(), BLI_smallhash_iternew(), BLI_smallhash_iternext(), BLI_smallhash_lookup(), BLI_smallhash_release(), BMEditMesh::bm, bm, BM_edge_select_set(), BM_edge_split(), BM_ELEM_SELECT, BMVert::co, KnifeVert::co, e, KnifeEdge::e, EDBM_flag_disable_all(), KnifeVert::edges, KnifeTool_OpData::em, find_ref(), ListBase::first, KnifeEdge::is_cut, KnifeTool_OpData::kedges, knife_append_list(), knife_empty_list(), knife_make_face_cuts(), KnifeTool_OpData::kverts, line_point_factor_v3(), Ref::next, KnifeTool_OpData::only_select, Ref::ref, KnifeTool_OpData::select_result, sort_verts_by_dist_cb(), and KnifeVert::v.
Referenced by knifetool_finish_ex().
|
static |
Definition at line 1216 of file editmesh_knife.c.
References KnifeTool_OpData::arena, BLI_array_alloca, BLI_assert, BLI_gset_add(), BLI_gset_clear(), BLI_gset_len(), BLI_listbase_count(), BLI_memarena_clear(), BMEditMesh::bm, bm, BM_edge_create(), BM_edge_exists(), BM_edge_in_face(), BM_edge_is_wire(), BM_edge_kill(), BM_edge_select_set(), BM_elem_flag_test, BM_ELEM_SELECT, BM_face_split_edgenet(), BM_face_split_edgenet_connect_islands(), BM_vert_create(), KnifeVert::co, e, KnifeEdge::e, KnifeTool_OpData::edge_visit, KnifeTool_OpData::edgenet, KnifeTool_OpData::em, ListBase::first, MEM_freeN, Ref::next, NULL, Ref::ref, KnifeTool_OpData::select_result, KnifeVert::v, KnifeEdge::v1, and KnifeEdge::v2.
Referenced by knife_make_cuts().
|
static |
Definition at line 2154 of file editmesh_knife.c.
References KnifePosData::bmface, KnifePosData::cage, KnifePosData::co, KnifePosData::edge, KnifePosData::mval, NULL, KnifePosData::vert, zero_v2(), and zero_v3().
Referenced by knife_snap_update_from_mval(), and knifetool_init().
|
static |
Definition at line 569 of file editmesh_knife.c.
References ED_view3d_project_float_v2_m4(), KnifeTool_OpData::projmat, and KnifeTool_OpData::region.
Referenced by EDBM_mesh_knife(), knife_find_closest_edge_of_face(), knife_find_closest_vert_of_edge(), knife_find_line_hits(), knife_ray_intersect_face(), knife_sample_screen_density_from_closest_face(), knife_snap_update_from_mval(), and knifetool_modal().
|
static |
Find intersection of v1-v2 with face f. Only take intersections that are at least face_tol_sq (in screen space) away from other intersection elements. If v1-v2 is coplanar with f, call that "no intersection though it really means "infinite number of intersections". In such a case we should have gotten hits on edges or verts of the face.
Definition at line 1574 of file editmesh_knife.c.
References BLI_assert, BM_elem_index_get, KnifeVert::cageco, KnifeTool_OpData::cagecos, BMVert::co, dist_squared_to_line_segment_v2(), dist_squared_to_plane_v3(), KnifeTool_OpData::em, ListBase::first, get_lowest_face_tri(), interp_v3_v3v3v3_uv(), isect_ray_tri_epsilon_v3(), KNIFE_FLT_EPS, knife_get_face_kedges(), knife_project_v2(), BMEditMesh::looptris, Ref::next, normal_tri_v3(), normalize_v3(), plane_from_point_normal_v3(), Ref::ref, sub_v3_v3v3(), BMEditMesh::tottri, BMLoop::v, v, KnifeEdge::v1, v1, v2, and KnifeEdge::v2.
Referenced by knife_find_line_hits().
|
static |
Definition at line 630 of file editmesh_knife.c.
References KnifeTool_OpData::clipend, KnifeTool_OpData::clipsta, ViewContext::depsgraph, ED_view3d_clip_range_get(), ED_view3d_ob_project_mat_get(), invert_m4_m4(), invert_m4_m4_safe_ortho(), KnifeTool_OpData::is_ortho, mul_v3_mat3_m4v3(), normalize_v3(), KnifeTool_OpData::ob, KnifeTool_OpData::ob_imat, Object::obmat, KnifeTool_OpData::proj_zaxis, KnifeTool_OpData::projmat, KnifeTool_OpData::projmat_inv, KnifeTool_OpData::region, ARegion::regiondata, ViewContext::rv3d, ViewContext::v3d, KnifeTool_OpData::vc, and RegionView3D::viewinv.
Referenced by EDBM_mesh_knife(), knifetool_init(), knifetool_modal(), and knifetool_update_mval().
|
static |
Find the 2d screen space density of vertices within a radius. Used to scale snapping distance for picking edges/verts.
Arguments f and cageco should be the result of a call to knife_find_closest_face.
Definition at line 2226 of file editmesh_knife.c.
References Freestyle::c, KnifeVert::cageco, ED_view3d_clipping_test(), ListBase::first, knife_get_face_kedges(), knife_project_v2(), len_squared_v2v2(), Ref::next, Ref::ref, ViewContext::rv3d, RV3D_CLIPPING_ENABLED, KnifeEdge::v1, KnifeEdge::v2, ViewContext::v3d, and KnifeTool_OpData::vc.
Referenced by knife_snap_size().
|
static |
Definition at line 2517 of file editmesh_knife.c.
References add_v2_v2v2(), KnifeTool_OpData::angle, copy_v2_v2(), KnifeTool_OpData::curr, DEG2RADF, is_zero_v2(), KnifePosData::mval, KnifeTool_OpData::mval, KnifeTool_OpData::prev, snap_v2_angle(), and sub_v2_v2v2().
Referenced by knife_snap_update_from_mval().
|
static |
Definition at line 2289 of file editmesh_knife.c.
References KnifeTool_OpData::curr, isect_line_line_v2_point(), KNIFE_FLT_EPSBIG, len_squared_v2v2(), line_point_factor_v2(), KnifePosData::mval, and KnifeTool_OpData::prev.
Referenced by knife_find_closest_edge_of_face().
|
static |
kcd->curr must be up to date. Definition at line 2274 of file editmesh_knife.c.
References BLI_assert, KnifePosData::bmface, KnifePosData::cage, KnifeTool_OpData::curr, float(), KnifeTool_OpData::is_interactive, KnifePosData::is_space, knife_sample_screen_density_from_closest_face(), and min_ff().
Referenced by knife_find_closest_edge_of_face(), and knife_find_closest_vert_of_edge().
|
static |
kcd->curr.co & kcd->curr.cage are set.In this case is_space is nearly always false. There are some situations when vertex or edge can be snapped to, when is_space is true. In this case the selection-buffer is used to select the face, then the closest vert or edge is set, and those will enable is_co_set.
Definition at line 2545 of file editmesh_knife.c.
References KnifeTool_OpData::angle_snapping, KnifePosData::bmface, KnifePosData::cage, KnifePosData::co, copy_v2_v2(), KnifeTool_OpData::curr, KnifePosData::edge, KnifeTool_OpData::ignore_edge_snapping, KnifeTool_OpData::is_angle_snapping, KnifePosData::is_space, knife_find_closest_edge_of_face(), knife_find_closest_face(), knife_find_closest_vert_of_edge(), knife_pos_data_clear(), knife_project_v2(), knife_snap_angle(), KnifeTool_OpData::mode, KnifePosData::mval, NULL, KnifeTool_OpData::prev, and KnifePosData::vert.
Referenced by knife_update_active().
|
static |
Definition at line 883 of file editmesh_knife.c.
References KnifeEdge::basef, BLI_addtail(), BLI_remlink(), KnifeEdge::e, KnifeVert::edges, KnifeVert::faces, KnifeEdge::faces, find_ref(), ListBase::first, KnifeVert::is_cut, KnifeEdge::is_cut, knife_add_edge_faces_to_vert(), knife_add_to_vert_edges(), knife_append_list(), knife_edge_append_face(), knife_find_common_face(), new_knife_edge(), new_knife_vert(), Ref::next, Ref::ref, KnifeEdge::v1, and KnifeEdge::v2.
Referenced by knife_add_single_cut().
|
static |
Definition at line 938 of file editmesh_knife.c.
References KnifePosData::cage, KnifePosData::co, copy_v3_v3(), KnifeTool_OpData::curr, KnifePosData::edge, KnifePosData::is_space, isect_line_plane_v3(), knife_input_ray_segment(), mul_m4_v3(), KnifePosData::mval, negate_v3_v3(), NULL, KnifeTool_OpData::ob_imat, RegionView3D::ofs, KnifeTool_OpData::prev, KnifeTool_OpData::proj_zaxis, ViewContext::rv3d, KnifeTool_OpData::vc, KnifePosData::vert, and zero_v3().
Referenced by EDBM_mesh_knife(), and knifetool_modal().
|
static |
Definition at line 2755 of file editmesh_knife.c.
References BLI_assert, KnifePosData::cage, copy_v3_v3(), KnifeTool_OpData::curr, isect_line_plane_v3(), knife_find_line_hits(), knife_input_ray_segment(), knife_snap_update_from_mval(), KnifeTool_OpData::mode, KnifePosData::mval, KnifeTool_OpData::mval, KnifeTool_OpData::prev, and KnifeTool_OpData::proj_zaxis.
Referenced by knifetool_modal(), and knifetool_update_mval().
|
static |
Definition at line 524 of file editmesh_knife.c.
References KnifeTool_OpData::angle_snapping, BLI_snprintf(), C, KnifeTool_OpData::cut_through, ED_workspace_status_text(), KnifeTool_OpData::ignore_edge_snapping, KNF_MODAL_ADD_CUT, KNF_MODAL_ADD_CUT_CLOSED, KNF_MODAL_ANGLE_SNAP_TOGGLE, KNF_MODAL_CANCEL, KNF_MODAL_CONFIRM, KNF_MODAL_CUT_THROUGH_TOGGLE, KNF_MODAL_IGNORE_SNAP_ON, KNF_MODAL_MIDPOINT_ON, KNF_MODAL_NEW_CUT, KNF_MODAL_PANNING, KnifeTool_OpData::snap_midpoints, TIP_, UI_MAX_DRAW_STR, WM_bool_as_string(), and WM_MODALKEY.
Referenced by knifetool_invoke(), and knifetool_modal().
Definition at line 589 of file editmesh_knife.c.
References BM_face_point_inside_test(), BM_face_vert_share_loop(), BM_loop_is_adjacent(), BMVert::co, mid_v3_v3v3(), NULL, v1, and v2.
Referenced by knife_add_single_cut().
|
static |
Definition at line 2829 of file editmesh_knife.c.
References C, and knifetool_exit().
Referenced by MESH_OT_knife_tool().
Definition at line 341 of file editmesh_knife.c.
References batch, BLI_mempool_iternew(), BLI_mempool_iterstep(), BLI_mempool_len(), KnifePosData::bmface, KnifePosData::cage, KnifeVert::cageco, KnifeLineHit::cagehit, KnifeTool_OpData::colors, KnifeColors::curpoint, KnifeColors::curpoint_a, KnifeTool_OpData::curr, KnifeColors::edge, KnifePosData::edge, GPU_batch_create_ex(), GPU_batch_discard(), GPU_batch_draw(), GPU_batch_draw_range(), GPU_BATCH_OWNS_VBO, GPU_batch_program_set_builtin(), GPU_batch_uniform_4fv, GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_NONE, GPU_COMP_F32, GPU_DEPTH_LESS_EQUAL, GPU_DEPTH_NONE, GPU_depth_test(), GPU_FETCH_FLOAT, GPU_line_width(), GPU_matrix_mul, GPU_matrix_pop(), GPU_matrix_pop_projection(), GPU_matrix_push(), GPU_matrix_push_projection(), GPU_point_size(), GPU_polygon_offset(), GPU_PRIM_LINES, GPU_PRIM_POINTS, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertbuf_attr_set(), GPU_vertbuf_create_with_format, GPU_vertbuf_data_alloc(), GPU_vertformat_attr_add(), GPUBatch, immBegin(), immBeginBatchAtMost(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniformColor3ubv(), immVertex3fv(), immVertexFormat(), KnifeTool_OpData::is_angle_snapping, KnifeVert::is_cut, KnifeEdge::is_cut, KnifeTool_OpData::kedges, knifetool_draw_angle_snapping(), KnifeTool_OpData::kverts, KnifeColors::line, KnifeTool_OpData::linehits, KnifeTool_OpData::mode, NULL, KnifeTool_OpData::ob, Object::obmat, KnifeColors::point, KnifeColors::point_a, pos, KnifeTool_OpData::prev, rgba_uchar_to_float(), KnifeTool_OpData::totkedge, KnifeTool_OpData::totkvert, KnifeTool_OpData::totlinehit, UI_DPI_FAC, KnifeLineHit::v, KnifeEdge::v1, KnifeEdge::v2, and KnifePosData::vert.
Referenced by knifetool_init().
|
static |
Definition at line 270 of file editmesh_knife.c.
References KnifePosData::cage, copy_v3_v3(), KnifeTool_OpData::curr, ED_view3d_win_to_3d(), GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_line_width(), GPU_PRIM_LINES, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniformThemeColor3(), immVertex3fv(), immVertexFormat(), isect_ray_plane_v3(), madd_v3_v3v3fl(), mul_m4_v3(), KnifePosData::mval, NULL, KnifeTool_OpData::ob, KnifeTool_OpData::ob_imat, Object::obmat, planes_from_projmat(), pos, KnifeTool_OpData::prev, KnifeTool_OpData::projmat, KnifeTool_OpData::region, sub_v3_v3v3(), TH_TRANSFORM, UNPACK3, v1, v2, ViewContext::v3d, and KnifeTool_OpData::vc.
Referenced by knifetool_draw().
|
static |
Definition at line 2741 of file editmesh_knife.c.
References C, wmOperator::customdata, knifetool_exit_ex(), and NULL.
Referenced by knifetool_cancel(), and knifetool_modal().
|
static |
Definition at line 2700 of file editmesh_knife.c.
References KnifeTool_OpData::arena, BLI_ghash_free(), BLI_gset_free(), BLI_memarena_free(), BLI_mempool_destroy(), C, CTX_wm_window(), KnifeTool_OpData::draw_handle, ED_region_draw_cb_exit(), ED_region_tag_redraw(), KnifeTool_OpData::edge_visit, KnifeTool_OpData::edgenet, KnifeTool_OpData::facetrimap, KnifeTool_OpData::is_interactive, KnifeTool_OpData::kedgefacemap, KnifeTool_OpData::kedges, knifetool_free_bmbvh(), KnifeTool_OpData::kverts, KnifeTool_OpData::linehits, MEM_freeN, NULL, KnifeTool_OpData::origedgemap, KnifeTool_OpData::origvertmap, KnifeTool_OpData::refs, KnifeTool_OpData::region, ARegion::type, and WM_cursor_modal_restore().
Referenced by EDBM_mesh_knife(), and knifetool_exit().
|
static |
Definition at line 2817 of file editmesh_knife.c.
References wmOperator::customdata, and knifetool_finish_ex().
Referenced by knifetool_modal().
|
static |
Definition at line 2805 of file editmesh_knife.c.
References Object::data, EDBM_mesh_normals_update(), EDBM_selectmode_flush(), EDBM_update_generic(), KnifeTool_OpData::em, knife_make_cuts(), knifetool_free_bmbvh(), and KnifeTool_OpData::ob.
Referenced by EDBM_mesh_knife(), and knifetool_finish().
|
static |
Definition at line 2607 of file editmesh_knife.c.
References BKE_bmbvh_free(), KnifeTool_OpData::bmbvh, KnifeTool_OpData::cagecos, MEM_freeN, and NULL.
Referenced by knifetool_exit_ex(), and knifetool_finish_ex().
|
static |
Definition at line 2636 of file editmesh_knife.c.
References KnifeTool_OpData::arena, BKE_editmesh_from_object(), BLI_ghash_ptr_new(), BLI_gset_ptr_new(), BLI_memarena_new(), BLI_MEMPOOL_ALLOW_ITER, BLI_mempool_create(), C, KnifeTool_OpData::colors, CTX_data_edit_object(), CTX_data_scene(), CTX_wm_region(), KnifeTool_OpData::curr, KnifeTool_OpData::cut_through, KnifeTool_OpData::draw_handle, ED_region_draw_cb_activate(), ED_region_tag_redraw(), KnifeTool_OpData::edge_visit, KnifeTool_OpData::edgenet, KnifeTool_OpData::em, em_setup_viewcontext(), KnifeTool_OpData::ethresh, KnifeTool_OpData::facetrimap, invert_m4_m4_safe_ortho(), KnifeTool_OpData::is_interactive, KnifeTool_OpData::kedgefacemap, KnifeTool_OpData::kedges, KMAXDIST, knife_init_colors(), knife_pos_data_clear(), knife_recalc_projmat(), knifetool_draw(), knifetool_init_bmbvh(), KnifeTool_OpData::kverts, MEM_SIZE_OPTIMAL, KnifeTool_OpData::ob, KnifeTool_OpData::ob_imat, Object::obmat, KnifeTool_OpData::only_select, KnifeTool_OpData::origedgemap, KnifeTool_OpData::origvertmap, KnifeTool_OpData::prev, KnifeTool_OpData::refs, KnifeTool_OpData::region, REGION_DRAW_POST_VIEW, SCE_SELECT_FACE, scene, KnifeTool_OpData::scene, KnifeTool_OpData::select_result, BMEditMesh::selectmode, ARegion::type, KnifeTool_OpData::vc, and KnifeTool_OpData::vthresh.
Referenced by EDBM_mesh_knife(), and knifetool_invoke().
|
static |
Definition at line 2588 of file editmesh_knife.c.
References BKE_bmbvh_new_from_editmesh(), BKE_editmesh_from_object(), BKE_editmesh_vert_coords_alloc(), BMEditMesh::bm, BM_mesh_elem_index_ensure(), BM_VERT, KnifeTool_OpData::bmbvh, BMBVH_RESPECT_HIDDEN, BMBVH_RESPECT_SELECT, BMBVH_RETURN_ORIG, KnifeTool_OpData::cagecos, KnifeTool_OpData::cut_through, DEG_get_evaluated_id(), ViewContext::depsgraph, KnifeTool_OpData::em, float(), Object::id, Scene::id, NULL, KnifeTool_OpData::ob, KnifeTool_OpData::only_select, KnifeTool_OpData::scene, and KnifeTool_OpData::vc.
Referenced by EDBM_mesh_knife(), and knifetool_init().
|
static |
Definition at line 3062 of file editmesh_knife.c.
References BKE_editmesh_from_object(), BKE_report(), BLI_assert, BMEditMesh::bm, C, CTX_data_edit_object(), CTX_wm_window(), wmOperator::customdata, EVT_MODAL_MAP, wmOperator::flag, KM_NOTHING, KNF_MODAL_ADD_CUT, knife_update_header(), knifetool_init(), knifetool_modal(), knifetool_update_mval_i(), MEM_callocN, wmEvent::mval, OP_IS_MODAL_CURSOR_REGION, OPERATOR_CANCELLED, OPERATOR_RUNNING_MODAL, wmEvent::prevval, wmOperator::ptr, wmOperator::reports, ret, RNA_boolean_get(), RPT_ERROR, BMesh::totfacesel, UNUSED_VARS_NDEBUG, WM_CURSOR_KNIFE, WM_cursor_modal_set(), and WM_event_add_modal_handler().
Referenced by MESH_OT_knife_tool().
|
static |
Definition at line 2867 of file editmesh_knife.c.
References KnifeTool_OpData::angle_snapping, BKE_editmesh_from_object(), C, KnifePosData::cage, CTX_data_edit_object(), KnifeTool_OpData::curr, wmOperator::customdata, KnifeTool_OpData::cut_through, ED_region_tag_redraw(), ED_view3d_init_mats_rv3d(), ED_workspace_status_text(), KnifeTool_OpData::em, em_setup_viewcontext(), EVT_MODAL_MAP, wmOperator::flag, KnifeTool_OpData::ignore_edge_snapping, KnifeTool_OpData::ignore_vert_snapping, KnifeTool_OpData::init, KnifeTool_OpData::is_drag_hold, KM_RELEASE, KNF_MODAL_ADD_CUT, KNF_MODAL_ADD_CUT_CLOSED, KNF_MODAL_ANGLE_SNAP_TOGGLE, KNF_MODAL_CANCEL, KNF_MODAL_CONFIRM, KNF_MODAL_CUT_THROUGH_TOGGLE, KNF_MODAL_IGNORE_SNAP_OFF, KNF_MODAL_IGNORE_SNAP_ON, KNF_MODAL_MIDPOINT_OFF, KNF_MODAL_MIDPOINT_ON, KNF_MODAL_NEW_CUT, KNF_MODAL_PANNING, knife_add_cut(), knife_finish_cut(), knife_project_v2(), knife_recalc_projmat(), knife_start_cut(), knife_update_active(), knife_update_header(), knifetool_exit(), knifetool_finish(), knifetool_update_mval(), knifetool_update_mval_i(), KnifeTool_OpData::mode, MOUSEMOVE, MOUSEPAN, MOUSEROTATE, MOUSEZOOM, KnifePosData::mval, wmEvent::mval, NDOF_MOTION, NULL, OB_MESH, OP_IS_MODAL_CURSOR_REGION, OPERATOR_CANCELLED, OPERATOR_FINISHED, OPERATOR_PASS_THROUGH, OPERATOR_RUNNING_MODAL, KnifeTool_OpData::prev, KnifeTool_OpData::prevmode, wmEvent::prevval, ViewContext::region, KnifeTool_OpData::region, ViewContext::rv3d, KnifeTool_OpData::snap_midpoints, KnifeTool_OpData::totlinehit, Object::type, wmEvent::type, wmEvent::val, KnifeTool_OpData::vc, WHEELDOWNMOUSE, and WHEELUPMOUSE.
Referenced by knifetool_invoke(), and MESH_OT_knife_tool().
| wmKeyMap* knifetool_modal_keymap | ( | wmKeyConfig * | keyconf | ) |
Definition at line 2835 of file editmesh_knife.c.
References KNF_MODAL_ADD_CUT, KNF_MODAL_ADD_CUT_CLOSED, KNF_MODAL_ANGLE_SNAP_TOGGLE, KNF_MODAL_CANCEL, KNF_MODAL_CONFIRM, KNF_MODAL_CUT_THROUGH_TOGGLE, KNF_MODAL_IGNORE_SNAP_OFF, KNF_MODAL_IGNORE_SNAP_ON, KNF_MODAL_MIDPOINT_OFF, KNF_MODAL_MIDPOINT_ON, KNF_MODAL_NEW_CUT, KNF_MODAL_PANNING, wmKeyMap::modal_items, NULL, WM_modalkeymap_assign(), WM_modalkeymap_ensure(), and WM_modalkeymap_find().
Referenced by ED_keymap_mesh().
|
static |
Definition at line 2782 of file editmesh_knife.c.
References copy_v2_v2(), ED_region_tag_redraw(), knife_recalc_projmat(), knife_update_active(), KnifeTool_OpData::mval, and KnifeTool_OpData::region.
Referenced by EDBM_mesh_knife(), knifetool_modal(), and knifetool_update_mval_i().
|
static |
Definition at line 2792 of file editmesh_knife.c.
References knifetool_update_mval(), and UNPACK2.
Referenced by knifetool_invoke(), and knifetool_modal().
|
static |
Definition at line 976 of file editmesh_knife.c.
References KnifeLineHit::l, KnifeLineHit::m, and KnifeLineHit::v.
Referenced by prepare_linehits_for_cut().
|
static |
Definition at line 962 of file editmesh_knife.c.
References KnifePosData::bmface, KnifePosData::cage, KnifeLineHit::cagehit, KnifePosData::co, copy_v2_v2(), copy_v3_v3(), KnifePosData::edge, KnifeLineHit::f, KnifeLineHit::hit, KnifeLineHit::kfe, KnifePosData::mval, KnifeLineHit::schit, KnifeLineHit::v, and KnifePosData::vert.
Referenced by knife_add_cut().
| void MESH_OT_knife_tool | ( | wmOperatorType * | ot | ) |
Definition at line 3109 of file editmesh_knife.c.
References wmOperatorType::cancel, wmOperatorType::description, ED_operator_editmesh_view3d(), wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, knifetool_cancel(), knifetool_invoke(), knifetool_modal(), wmOperatorType::modal, wmOperatorType::name, OPTYPE_BLOCKING, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, PROP_HIDDEN, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_property_flag(), and wmOperatorType::srna.
Referenced by ED_operatortypes_mesh().
|
static |
Definition at line 799 of file editmesh_knife.c.
References BLI_mempool_calloc(), KnifeTool_OpData::kedges, and KnifeTool_OpData::totkedge.
Referenced by get_bm_knife_edge(), knife_add_single_cut(), and knife_split_edge().
|
static |
Definition at line 787 of file editmesh_knife.c.
References BLI_mempool_calloc(), KnifeVert::cageco, KnifeVert::co, copy_v3_v3(), KnifeTool_OpData::kverts, and KnifeTool_OpData::totkvert.
Referenced by get_bm_knife_vert(), knife_add_single_cut(), knife_find_closest_edge_of_face(), and knife_split_edge().
|
static |
Check if p is visible (not clipped, not occluded by another face). s in screen projection of p.
| ele_test | Optional vert/edge/face to use when p is on the surface of the geometry, intersecting faces matching this face (or connected when an vert/edge) will be ignored. |
Definition at line 1729 of file editmesh_knife.c.
References BKE_bmbvh_ray_cast(), BKE_bmbvh_ray_cast_filter(), bm_ray_cast_cb_elem_not_in_face_check(), KnifeTool_OpData::bmbvh, View3D::clip_end, RegionView3D::clip_local, clip_segment_v3_plane_n(), copy_v3_v3(), KnifeTool_OpData::cut_through, ED_view3d_clipping_test(), ED_view3d_unproject(), KnifeTool_OpData::is_ortho, KNIFE_FLT_EPS, len_v3v3(), madd_v3_v3v3fl(), mul_m4_v3(), normalize_v3(), NULL, KnifeTool_OpData::ob_imat, RegionView3D::persp, ViewContext::region, ViewContext::rv3d, RV3D_CAMOB, RV3D_CLIPPING_ENABLED, sub_v3_v3(), ViewContext::v3d, KnifeTool_OpData::vc, and view.
Referenced by EDBM_mesh_knife(), and knife_find_line_hits().
|
static |
Definition at line 1007 of file editmesh_knife.c.
References fabsf, KnifeLineHit::kfe, KNIFE_FLT_EPSBIG, KnifeLineHit::l, linehit_compare(), KnifeTool_OpData::linehits, KnifeLineHit::m, KnifeTool_OpData::totlinehit, and KnifeLineHit::v.
Referenced by knife_add_cut().
|
static |
Definition at line 1820 of file editmesh_knife.c.
References KnifeLineHit::cagehit, dot_m4_v3_row_z(), KnifeLineHit::m, RegionView3D::persmatob, ViewContext::rv3d, and KnifeTool_OpData::vc.
Referenced by knife_find_line_hits().
|
static |
Definition at line 1533 of file editmesh_knife.c.
References BLI_assert, BLI_ghash_insert(), BLI_ghash_lookup(), KnifeTool_OpData::em, BMLoop::f, KnifeTool_OpData::facetrimap, BMEditMesh::looptris, and POINTER_FROM_INT.
Referenced by knife_find_line_hits().
|
static |
Snaps a 2d vector to an angle, relative to v_ref.
Definition at line 2499 of file editmesh_knife.c.
References angle(), angle_signed_v2v2(), angle_to_mat2(), BLI_ASSERT_UNIT_V2, mul_v2_m2v2(), normalize_v2_v2(), r, and v.
Referenced by knife_snap_angle().
|
static |
Definition at line 1329 of file editmesh_knife.c.
References KnifeVert::co, and len_squared_v3v3().
Referenced by knife_make_cuts().