Blender  V3.3
Classes
editors/mesh/mesh_mirror.c File Reference
#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)
 

Detailed Description

Mirror calculation for edit-mode and object mode.

Definition in file editors/mesh/mesh_mirror.c.

Macro Definition Documentation

◆ KD_THRESH

#define KD_THRESH   0.00002f

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

Typedef Documentation

◆ MirrTopoHash_t

Definition at line 106 of file editors/mesh/mesh_mirror.c.

◆ MirrTopoVert_t

Function Documentation

◆ ED_mesh_mirror_spatial_table_begin()

void ED_mesh_mirror_spatial_table_begin ( Object ob,
BMEditMesh em,
Mesh me_eval 
)

◆ ED_mesh_mirror_spatial_table_end()

void ED_mesh_mirror_spatial_table_end ( Object UNUSEDob)

Definition at line 91 of file editors/mesh/mesh_mirror.c.

References MirrKdStore, and NULL.

Referenced by ED_mesh_mirror_spatial_table_begin().

◆ ED_mesh_mirror_spatial_table_lookup()

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

◆ ED_mesh_mirrtopo_free()

void ED_mesh_mirrtopo_free ( MirrTopoStore_t mesh_topo_store)

◆ ED_mesh_mirrtopo_init()

void ED_mesh_mirrtopo_init ( BMEditMesh em,
Mesh me,
MirrTopoStore_t mesh_topo_store,
const bool  skip_em_vert_array_init 
)

◆ ED_mesh_mirrtopo_recalc_check()

bool ED_mesh_mirrtopo_recalc_check ( BMEditMesh em,
Mesh me,
MirrTopoStore_t mesh_topo_store 
)

◆ mirrtopo_hash_sort()

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

Definition at line 113 of file editors/mesh/mesh_mirror.c.

Referenced by ED_mesh_mirrtopo_init().

◆ mirrtopo_vert_sort()

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

Definition at line 124 of file editors/mesh/mesh_mirror.c.

References hash, v1, and v2.

Referenced by ED_mesh_mirrtopo_init().

Variable Documentation

◆ 

struct { ... } MirrKdStore

◆ tree

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().