Blender
V3.3
|
#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "BKE_editmesh.h"
#include "BKE_mesh.h"
#include "BLI_kdtree.h"
#include "ED_mesh.h"
Go to the source code of this file.
Classes | |
struct | MirrTopoVert_t |
Mesh Spatial Mirror API | |
#define | KD_THRESH 0.00002f |
struct { | |
void * tree | |
} | MirrKdStore = {NULL} |
void | ED_mesh_mirror_spatial_table_begin (Object *ob, BMEditMesh *em, Mesh *me_eval) |
int | ED_mesh_mirror_spatial_table_lookup (Object *ob, BMEditMesh *em, Mesh *me_eval, const float co[3]) |
void | ED_mesh_mirror_spatial_table_end (Object *UNUSED(ob)) |
Mesh Topology Mirror API | |
typedef uint | MirrTopoHash_t |
typedef struct MirrTopoVert_t | MirrTopoVert_t |
static int | mirrtopo_hash_sort (const void *l1, const void *l2) |
static int | mirrtopo_vert_sort (const void *v1, const void *v2) |
bool | ED_mesh_mirrtopo_recalc_check (BMEditMesh *em, Mesh *me, MirrTopoStore_t *mesh_topo_store) |
void | ED_mesh_mirrtopo_init (BMEditMesh *em, Mesh *me, MirrTopoStore_t *mesh_topo_store, const bool skip_em_vert_array_init) |
void | ED_mesh_mirrtopo_free (MirrTopoStore_t *mesh_topo_store) |
Mirror calculation for edit-mode and object mode.
Definition in file editors/mesh/mesh_mirror.c.
#define KD_THRESH 0.00002f |
Definition at line 27 of file editors/mesh/mesh_mirror.c.
typedef uint MirrTopoHash_t |
Definition at line 106 of file editors/mesh/mesh_mirror.c.
typedef struct MirrTopoVert_t MirrTopoVert_t |
void ED_mesh_mirror_spatial_table_begin | ( | Object * | ob, |
BMEditMesh * | em, | ||
Mesh * | me_eval | ||
) |
Definition at line 33 of file editors/mesh/mesh_mirror.c.
References BMEditMesh::bm, BM_ITER_MESH_INDEX, BM_mesh_elem_table_ensure(), BM_VERT, BM_VERTS_OF_MESH, BMVert::co, MVert::co, Object::data, ED_mesh_mirror_spatial_table_end(), Mesh::edit_mesh, MirrKdStore, Mesh::mvert, BMesh::totvert, and Mesh::totvert.
Referenced by ED_mesh_mirror_spatial_table_lookup(), mesh_get_x_mirror_faces(), and object_shape_key_mirror().
Definition at line 91 of file editors/mesh/mesh_mirror.c.
References MirrKdStore, and NULL.
Referenced by ED_mesh_mirror_spatial_table_begin().
int ED_mesh_mirror_spatial_table_lookup | ( | Object * | ob, |
BMEditMesh * | em, | ||
Mesh * | me_eval, | ||
const float | co[3] | ||
) |
Definition at line 69 of file editors/mesh/mesh_mirror.c.
References ED_mesh_mirror_spatial_table_begin(), KD_THRESH, MirrKdStore, and NULL.
Referenced by editbmesh_get_x_mirror_vert_spatial(), and mesh_get_x_mirror_vert_spatial().
void ED_mesh_mirrtopo_free | ( | MirrTopoStore_t * | mesh_topo_store | ) |
Definition at line 352 of file editors/mesh/mesh_mirror.c.
References MirrTopoStore_t::index_lookup, MEM_SAFE_FREE, mesh_topo_store, MirrTopoStore_t::prev_edge_tot, and MirrTopoStore_t::prev_vert_tot.
Referenced by ED_mesh_mirror_topo_table_end(), ED_mesh_mirrtopo_init(), and EDBM_verts_mirror_cache_begin_ex().
void ED_mesh_mirrtopo_init | ( | BMEditMesh * | em, |
Mesh * | me, | ||
MirrTopoStore_t * | mesh_topo_store, | ||
const bool | skip_em_vert_array_init | ||
) |
Definition at line 158 of file editors/mesh/mesh_mirror.c.
References Freestyle::a, BLI_assert, BMEditMesh::bm, BM_EDGES_OF_MESH, BM_elem_index_get, BM_ITER_MESH, BM_mesh_elem_index_ensure(), BM_mesh_elem_table_ensure(), BM_VERT, ED_mesh_mirrtopo_free(), hash, MirrTopoVert_t::hash, i1, MirrTopoStore_t::index_lookup, Mesh::medge, MEM_callocN, MEM_dupallocN, MEM_freeN, MEM_mallocN, mesh_topo_store, mirrtopo_hash_sort(), mirrtopo_vert_sort(), NULL, MirrTopoStore_t::prev_edge_tot, MirrTopoStore_t::prev_is_editmode, MirrTopoStore_t::prev_vert_tot, BMesh::totedge, Mesh::totedge, BMesh::totvert, Mesh::totvert, BMEdge::v1, BMEdge::v2, MirrTopoVert_t::v_index, and BMesh::vtable.
Referenced by ED_mesh_mirror_topo_table_begin(), and EDBM_verts_mirror_cache_begin_ex().
bool ED_mesh_mirrtopo_recalc_check | ( | BMEditMesh * | em, |
Mesh * | me, | ||
MirrTopoStore_t * | mesh_topo_store | ||
) |
Definition at line 135 of file editors/mesh/mesh_mirror.c.
References BMEditMesh::bm, MirrTopoStore_t::index_lookup, mesh_topo_store, NULL, MirrTopoStore_t::prev_edge_tot, MirrTopoStore_t::prev_is_editmode, MirrTopoStore_t::prev_vert_tot, BMesh::totedge, Mesh::totedge, BMesh::totvert, and Mesh::totvert.
Referenced by ed_mesh_mirror_topo_table_update().
Definition at line 113 of file editors/mesh/mesh_mirror.c.
Referenced by ED_mesh_mirrtopo_init().
Definition at line 124 of file editors/mesh/mesh_mirror.c.
Referenced by ED_mesh_mirrtopo_init().
struct { ... } MirrKdStore |
void* tree |
Definition at line 30 of file editors/mesh/mesh_mirror.c.
Referenced by blender::compositor::NodeGraph::add_bNodeTree(), KDL::Tree::addTree(), blender::bke::tests::AssetCatalogTest::assert_expected_tree_items(), blender::bke::tests::AssetCatalogTest::assert_expected_tree_root_items(), balance(), BKE_bvhtree_from_pointcloud_get(), BKE_object_as_kdtree(), BKE_pbvh_search_callback_occluded(), BKE_shrinkwrap_compute_smooth_normal(), BKE_shrinkwrap_find_nearest_surface(), BKE_shrinkwrap_project_normal(), BKE_shrinkwrap_remesh_target_project(), BKE_shrinkwrap_snap_point_to_surface(), BLI_bvhtree_balance(), BLI_bvhtree_find_nearest(), BLI_bvhtree_find_nearest_ex(), BLI_bvhtree_find_nearest_first(), BLI_bvhtree_find_nearest_projected(), BLI_bvhtree_free(), BLI_bvhtree_get_bounding_box(), BLI_bvhtree_get_epsilon(), BLI_bvhtree_get_len(), BLI_bvhtree_get_tree_type(), BLI_bvhtree_insert(), BLI_bvhtree_intersect_plane(), BLI_bvhtree_new(), BLI_bvhtree_overlap_thread_num(), BLI_bvhtree_range_query(), BLI_bvhtree_ray_cast(), BLI_bvhtree_ray_cast_all(), BLI_bvhtree_ray_cast_all_ex(), BLI_bvhtree_ray_cast_ex(), BLI_bvhtree_update_node(), BLI_bvhtree_update_tree(), BLI_bvhtree_walk_dfs(), BLI_dlrbTree_add(), BLI_dlrbTree_contains(), BLI_dlrbTree_free(), BLI_dlrbTree_init(), BLI_dlrbTree_insert(), BLI_dlrbTree_linkedlist_sync(), BLI_dlrbTree_search(), BLI_dlrbTree_search_exact(), BLI_dlrbTree_search_next(), BLI_dlrbTree_search_prev(), bm_edge_symmetry_map(), BMBVH_EdgeVisible(), bmesh_find_doubles_common(), brush_add(), build_implicit_tree_helper(), blender::ed::outliner::TreeDisplayViewLayer::buildTree(), blender::ed::outliner::TreeDisplayLibraries::buildTree(), blender::ed::outliner::TreeDisplayOverrideLibraryProperties::buildTree(), blender::ed::outliner::TreeDisplayOverrideLibraryHierarchies::buildTree(), blender::ed::outliner::TreeDisplaySequencer::buildTree(), blender::ed::outliner::TreeDisplayIDOrphans::buildTree(), blender::ed::outliner::TreeDisplayScenes::buildTree(), blender::ed::outliner::TreeDisplayDataAPI::buildTree(), bvhcache_has_tree(), bvhcache_insert(), bvhtree_balance(), bvhtree_build_from_mvert(), bvhtree_CreatePyObject(), bvhtree_from_editmesh_edges_create_tree(), bvhtree_from_editmesh_edges_ex(), bvhtree_from_editmesh_looptri_create_tree(), bvhtree_from_editmesh_looptri_ex(), bvhtree_from_editmesh_setup_data(), bvhtree_from_editmesh_verts_create_tree(), bvhtree_from_editmesh_verts_ex(), bvhtree_from_mesh_edges_create_tree(), bvhtree_from_mesh_edges_ex(), bvhtree_from_mesh_faces_create_tree(), bvhtree_from_mesh_looptri_create_tree(), bvhtree_from_mesh_looptri_ex(), bvhtree_from_mesh_setup_data(), bvhtree_from_mesh_verts_create_tree(), bvhtree_from_mesh_verts_ex(), bvhtree_node_inflate(), C_BVHTree_FromBMesh(), C_BVHTree_FromObject(), C_BVHTree_FromPolygons(), calc_duplicates_fast(), cast_ray_highpoly(), check_tree_for_time_node(), compute_geometry(), convert_channels(), convert_tree(), create_kdop_hull(), create_scene(), createFacepa(), deduplicate(), deduplicate_test(), dependsOnTime(), blender::bke::node_field_inferencing::determine_group_input_states(), blender::bke::node_field_inferencing::determine_group_output_states(), dynamic_paint_paint_particle_cell_point_cb_ex(), dynamicPaint_paintParticles(), ED_select_similar_compare_float_tree(), EDBM_verts_mirror_cache_begin_ex(), edge_ray_cast(), execute_posetree(), find_nearest(), find_nearest_cb(), find_nearest_n(), find_nearest_n_with_len_squared_cb(), find_nearest_points_test(), find_sockets_to_preview(), find_sockets_to_preview_for_spreadsheet(), blender::ed::space_node::viewer_linking::find_viewer_nodes(), free(), free_posetree(), free_tree(), blender::compositor::NodeGraph::from_bNodeTree(), VolumeMeshBuilder::generate_vertices_and_quads(), geometry_node_tree_copy_assign_exec(), blender::ed::space_node::viewer_linking::get_existing_viewer(), heap_down(), heap_swap(), heap_up(), heapsimple_down(), heapsimple_up(), iksolver_clear_data(), iksolver_execute_tree(), initialize_chain(), initialize_posetree(), insert(), insert_check_1(), insert_check_2(), insert_check_3(), isect_bvhtree_point_v3(), kdtree2d_balance(), kdtree2d_init(), kdtree2d_init_mapping(), kdtree2d_isect_tri(), kdtree2d_isect_tri_recursive(), kdtree2d_new(), kdtree2d_node_remove(), kdtree_order(), linkedlist_sync_add_node(), merged_element_search_fn_recursive(), mesh_looptri_target_project(), blender::geometry::mesh_merge_by_distance_all(), modifyGeometry(), nearest_world_tree(), nearest_world_tree_co(), new(), node_join(), blender::ed::space_node::viewer_linking::node_link_viewer(), node_minmax_init(), node_tree_insert(), blender::nodes::NodeMultiFunctions::NodeMultiFunctions(), non_recursive_bvh_div_nodes(), btCollisionWorld::objectQuerySingleInternal(), KDL::operator<<(), outliner_add_collection_objects(), outliner_find_item_at_y(), outliner_free_tree(), outliner_id_copy_tag(), outliner_id_remap_find_tree_element(), outliner_sync_selection_from_outliner(), outliner_sync_selection_to_outliner(), outliner_tree_traverse(), blender::compositor::OutputOpenExrMultiLayerOperation::OutputOpenExrMultiLayerOperation(), blender::compositor::OutputSingleLayerOperation::OutputSingleLayerOperation(), parent_set_vert_find(), parent_set_vertex_parent(), parent_set_vertex_parent_with_kdtree(), PE_update_mirror_cache(), blender::geometry::point_merge_by_distance(), process_nodes_for_depsgraph(), btCompoundCollisionAlgorithm::processCollision(), blender::bke::node_field_inferencing::propagate_data_requirements_from_right_to_left(), blender::bke::node_field_inferencing::propagate_field_status_from_left_to_right(), psys_find_parents(), psys_sph_density(), psys_thread_context_init_distribute(), range_search(), range_search_cb(), range_search_with_len_squared_cb(), RE_bake_pixels_populate_from_objects(), blender::bke::AssetCatalogService::read_into_tree(), refit_kdop_hull(), remove_doubles_exec(), rotate_left(), rotate_right(), blender::compositor::NodeOperation::set_bnodetree(), shrinkwrap_calc_normal_projection_cb_ex(), shrinkwrap_get_tarmat(), shrinkwrapModifier_deform(), sph_evaluate_func(), splineik_evaluate_bone(), splineik_evaluate_init(), splineik_execute_tree(), splineik_init_tree_from_pchan(), standard_test(), blender::draw::statvis_calc_intersect(), blender::draw::statvis_calc_thickness(), target_project_edge(), TEST(), blender::bke::tests::TEST_F(), traverse_tree(), blender::bke::node_field_inferencing::update_field_inferencing(), blender::bke::node_field_inferencing::update_socket_shapes(), uv_remove_doubles_to_selected(), uv_remove_doubles_to_unselected(), and blender::compositor::write_buffer_rect().