Blender V4.3
mesh_mirror.cc File Reference
#include "MEM_guardedalloc.h"
#include "DNA_object_types.h"
#include "BKE_editmesh.hh"
#include "BKE_mesh.hh"
#include "BKE_mesh_types.hh"
#include "BLI_kdtree.h"
#include "ED_mesh.hh"

Go to the source code of this file.

Classes

struct  MirrTopoVert_t
 

Mesh Spatial Mirror API

#define KD_THRESH   0.00002f
 
struct { 
 
   KDTree_3d *   tree 
 
MirrKdStore = {nullptr} 
 
void ED_mesh_mirror_spatial_table_begin (Object *ob, BMEditMesh *em, Mesh *mesh_eval)
 
int ED_mesh_mirror_spatial_table_lookup (Object *ob, BMEditMesh *em, Mesh *mesh_eval, const float co[3])
 
void ED_mesh_mirror_spatial_table_end (Object *)
 

Mesh Topology Mirror API

using MirrTopoHash_t = uint
 
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 *mesh, MirrTopoStore_t *mesh_topo_store)
 
void ED_mesh_mirrtopo_init (BMEditMesh *em, Mesh *mesh, MirrTopoStore_t *mesh_topo_store, const bool skip_em_vert_array_init)
 
void ED_mesh_mirrtopo_free (MirrTopoStore_t *mesh_topo_store)
 

Detailed Description

Mirror calculation for edit-mode and object mode.

Definition in file editors/mesh/mesh_mirror.cc.

Macro Definition Documentation

◆ KD_THRESH

#define KD_THRESH   0.00002f

Definition at line 27 of file editors/mesh/mesh_mirror.cc.

Referenced by ED_mesh_mirror_spatial_table_lookup().

Typedef Documentation

◆ MirrTopoHash_t

Definition at line 107 of file editors/mesh/mesh_mirror.cc.

Function Documentation

◆ ED_mesh_mirror_spatial_table_begin()

◆ ED_mesh_mirror_spatial_table_end()

◆ ED_mesh_mirror_spatial_table_lookup()

int ED_mesh_mirror_spatial_table_lookup ( Object * ob,
BMEditMesh * em,
Mesh * mesh_eval,
const float co[3] )

◆ ED_mesh_mirrtopo_free()

◆ ED_mesh_mirrtopo_init()

◆ ED_mesh_mirrtopo_recalc_check()

◆ mirrtopo_hash_sort()

static int mirrtopo_hash_sort ( const void * l1,
const void * l2 )
static

Definition at line 114 of file editors/mesh/mesh_mirror.cc.

Referenced by ED_mesh_mirrtopo_init().

◆ mirrtopo_vert_sort()

static int mirrtopo_vert_sort ( const void * v1,
const void * v2 )
static

Definition at line 125 of file editors/mesh/mesh_mirror.cc.

References hash, and v2.

Referenced by ED_mesh_mirrtopo_init().

Variable Documentation

◆ [struct]

◆ tree

KDTree_3d* tree

Definition at line 30 of file editors/mesh/mesh_mirror.cc.

Referenced by blender::compositor::NodeGraph::add_bNodeTree(), blender::realtime_compositor::add_output_nodes(), blender::ed::space_node::add_root_catalogs_draw(), KDL::Tree::addTree(), blender::bke::anonymous_attribute_inferencing::analyze_anonymous_attribute_usages(), balance(), BKE_bvhtree_from_mesh_edges_init(), BKE_bvhtree_from_mesh_tris_init(), BKE_bvhtree_from_mesh_verts_init(), BKE_bvhtree_from_pointcloud_get(), BKE_object_as_kdtree(), 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_self(), 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_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::nodes::node_geo_index_of_nearest_cc::build_kdtree(), blender::ed::asset::shelf::AssetCatalogSelectorTree::Item::build_row(), blender::ed::outliner::TreeDisplayDataAPI::build_tree(), blender::ed::outliner::TreeDisplayIDOrphans::build_tree(), blender::ed::outliner::TreeDisplayLibraries::build_tree(), blender::ed::outliner::TreeDisplayOverrideLibraryHierarchies::build_tree(), blender::ed::outliner::TreeDisplayOverrideLibraryProperties::build_tree(), blender::ed::outliner::TreeDisplayScenes::build_tree(), blender::ed::outliner::TreeDisplaySequencer::build_tree(), blender::ed::outliner::TreeDisplayViewLayer::build_tree(), blender::nodes::gizmos::build_tree_gizmo_propagation(), bvhcache_has_tree(), bvhcache_insert(), bvhtree_balance(), bvhtree_build_from_mvert(), bvhtree_CreatePyObject(), bvhtree_from_mesh_corner_tris_create_tree(), bvhtree_from_mesh_corner_tris_ex(), bvhtree_from_mesh_edges_create_tree(), bvhtree_from_mesh_edges_ex(), bvhtree_from_mesh_faces_create_tree(), 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(), blender::ed::geometry::catalog_assets_draw(), blender::ed::object::catalog_assets_draw(), blender::ed::geometry::catalog_assets_draw_unassigned(), blender::ed::object::check_geometry_node_group_sockets(), blender::check_tree_for_time_node(), blender::ed::geometry::clear_operator_asset_trees(), blender::realtime_compositor::compute_schedule(), convert_channels(), convert_tree(), create_kdop_hull(), create_scene(), createFacepa(), blender::ed::greasepencil::curve_merge_by_distance(), blender::ed::greasepencil::curves_merge_endpoints_by_distance(), deduplicate(), deduplicate_test(), blender::depends_on_time(), blender::bke::node_field_inferencing::determine_group_input_states(), blender::bke::node_field_inferencing::determine_group_output_states(), blender::bke::discover_tree_zones(), 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(), blender::nodes::geo_eval_log::GeoTreeLog::ensure_node_warnings(), execute_posetree(), blender::asset_system::tests::AssetCatalogTreeTestFunctions::expect_tree_items(), blender::asset_system::tests::AssetCatalogTreeTestFunctions::expect_tree_root_items(), blender::nodes::inverse_eval::find_local_inverse_eval_targets(), find_nearest(), find_nearest_cb(), find_nearest_n(), find_nearest_n_with_len_squared_cb(), blender::nodes::node_geo_index_of_nearest_cc::find_nearest_non_self(), find_nearest_points_test(), blender::nodes::node_geo_index_of_nearest_cc::find_neighbors(), blender::nodes::find_node_tree_dependencies(), blender::nodes::find_output_attributes_to_store(), blender::ed::space_node::viewer_linking::find_overlapping_node(), blender::find_side_effect_nodes_for_nested_node(), blender::bke::find_zone_nodes(), blender::nodes::gizmos::foreach_active_gizmo_exposed_to_modifier(), blender::nodes::gizmos::foreach_gizmo_for_group_input(), blender::nodes::gizmos::foreach_gizmo_for_input(), free(), free_posetree(), blender::bke::pbvh::free_tree(), blender::compositor::NodeGraph::from_bNodeTree(), VolumeMeshBuilder::generate_vertices_and_quads(), blender::ed::object::geometry_node_tree_copy_assign_exec(), blender::ed::space_node::get_compute_context_hash_for_node_editor(), blender::bke::bNodeZoneType::get_corresponding_input(), blender::bke::bNodeZoneType::get_corresponding_input(), blender::bke::bNodeZoneType::get_corresponding_output(), blender::bke::bNodeZoneType::get_corresponding_output(), blender::bke::anonymous_attribute_inferencing::get_relations_by_node(), blender::ed::geometry::get_static_item_tree(), blender::ed::object::get_static_item_tree(), blender::bke::get_tree_zones(), blender::nodes::node_geo_index_of_nearest_cc::IndexOfNearestFieldInput::get_varray_for_context(), blender::ed::sculpt_paint::grease_pencil_fill_extension_cut(), heap_down(), heap_swap(), heap_up(), heapsimple_down(), heapsimple_up(), hide_simulation_node_skip_socket_value(), iksolver_clear_data(), iksolver_execute_tree(), initialize_chain(), blender::nodes::initialize_group_input(), initialize_posetree(), insert(), insert_check_1(), insert_check_2(), insert_check_3(), blender::bke::is_tree_changed(), 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(), blender::ed::outliner::merged_element_search_fn_recursive(), mesh_corner_tris_target_project(), blender::geometry::mesh_merge_by_distance_all(), blender::modifyGeometry(), nearest_world_tree(), nearest_world_tree_co(), new(), blender::ed::space_node::node_add_catalog_assets_draw(), blender::ed::space_node::node_add_unassigned_assets_draw(), blender::ed::space_node::node_can_be_inserted_on_link(), blender::ed::space_node::node_clipboard_copy_exec(), blender::ed::space_node::node_clipboard_paste_exec(), blender::nodes::node_geo_attribute_capture_cc::node_declare(), blender::nodes::node_geo_foreach_geometry_element_cc::input_node::node_declare(), blender::nodes::node_geo_foreach_geometry_element_cc::output_node::node_declare(), blender::nodes::node_geo_repeat_cc::repeat_input_node::node_declare(), blender::nodes::node_geo_repeat_cc::repeat_output_node::node_declare(), blender::nodes::node_geo_simulation_cc::sim_output_node::node_declare(), blender::ed::space_node::node_find_indicated_socket(), blender::ed::space_node::node_get_invalid_links_extra_info(), node_join(), blender::nodes::node_geo_foreach_geometry_element_cc::input_node::node_layout(), blender::ed::space_node::node_link_is_gizmo_link(), node_minmax_init(), node_reroute_add_storage(), blender::bke::node_socket_move_default_value(), blender::bke::pbvh::node_tree_insert(), blender::bke::node_tree_to_dot(), blender::nodes::NodeMultiFunctions::NodeMultiFunctions(), nodetree_mark_previews_dirty_reccursive(), non_recursive_bvh_div_nodes(), btCollisionWorld::objectQuerySingleInternal(), KDL::operator<<(), blender::ed::outliner::outliner_add_collection_objects(), blender::ed::outliner::outliner_find_item_at_y(), blender::ed::outliner::outliner_free_tree(), blender::ed::outliner::outliner_id_copy_tag(), blender::ed::outliner::outliner_id_remap_find_tree_element(), blender::ed::outliner::outliner_sync_selection_from_outliner(), blender::ed::outliner::outliner_sync_selection_to_outliner(), blender::ed::outliner::outliner_tree_traverse(), blender::ed::object::parent_set_vert_find(), blender::ed::object::parent_set_vertex_parent(), blender::ed::object::parent_set_vertex_parent_with_kdtree(), PE_update_mirror_cache(), blender::geometry::point_merge_by_distance(), blender::ed::space_node::viewer_linking::position_viewer_node(), blender::nodes::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(), blender::bke::node_field_inferencing::propagate_special_data_requirements(), psys_find_parents(), psys_sph_density(), psys_thread_context_init_distribute(), blender::ed::space_node::push_compute_context_for_tree_path(), range_search(), range_search_cb(), range_search_with_len_squared_cb(), RE_bake_pixels_populate_from_objects(), blender::asset_system::AssetCatalogService::read_into_tree(), refit_kdop_hull(), remove_doubles_exec(), blender::ed::object::root_catalogs_draw(), rotate_left(), rotate_right(), blender::bke::pbvh::search_callback_occluded(), blender::compositor::NodeOperation::set_bnodetree(), blender::nodes::inverse_eval::set_socket_value(), blender::nodes::inverse_eval::set_value_node_value(), shrinkwrap_calc_normal_projection_cb_ex(), shrinkwrap_get_tarmat(), shrinkwrapModifier_deform(), shrinkwrapParams_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(), blender::ed::space_node::std_node_socket_draw(), blender::nodes::store_output_attributes(), target_project_edge(), TEST(), TEST(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::bke::node_tree_runtime::topology_cache_is_available(), blender::bke::pbvh::traverse_tree(), blender::ed::object::ui_template_modifier_asset_menu_items(), blender::ed::space_node::ui_template_node_asset_menu_items(), blender::ed::geometry::ui_template_node_operator_asset_menu_items(), blender::ed::geometry::ui_template_node_operator_asset_root_items(), uiTemplateNodeInputs(), blender::ed::object::unassigned_assets_draw(), blender::bke::anonymous_attribute_inferencing::update_anonymous_attribute_relations(), blender::bke::node_field_inferencing::update_field_inferencing(), blender::nodes::update_input_properties_from_node_tree(), blender::nodes::update_output_properties_from_node_tree(), blender::bke::node_field_inferencing::update_socket_states(), blender::nodes::gizmos::update_tree_gizmo_propagation(), blender::bke::update_zone_border_links(), uv_remove_doubles_to_selected(), uv_remove_doubles_to_unselected(), blender::ed::viewer_path::viewer_path_for_geometry_node(), and blender::nodes::node_geo_sample_nearest_surface_cc::SampleNearestSurfaceFunction::~SampleNearestSurfaceFunction().