Blender V4.3
mesh_compare.cc File Reference
#include "BLI_array.hh"
#include "BLI_math_base.h"
#include "BLI_ordered_edge.hh"
#include "BLI_span.hh"
#include "BKE_attribute.hh"
#include "BKE_attribute_math.hh"
#include "BKE_mesh.hh"
#include "BKE_mesh_mapping.hh"
#include "BKE_mesh_compare.hh"

Go to the source code of this file.

Classes

class  blender::bke::compare_meshes::IndexMapping
 

Namespaces

namespace  blender
 
namespace  blender::bke
 
namespace  blender::bke::compare_meshes
 

Enumerations

enum class  blender::bke::compare_meshes::MeshMismatch : int8_t {
  blender::bke::compare_meshes::NumVerts , blender::bke::compare_meshes::NumEdges , blender::bke::compare_meshes::NumCorners , blender::bke::compare_meshes::NumFaces ,
  blender::bke::compare_meshes::VertexAttributes , blender::bke::compare_meshes::EdgeAttributes , blender::bke::compare_meshes::CornerAttributes , blender::bke::compare_meshes::FaceAttributes ,
  blender::bke::compare_meshes::EdgeTopology , blender::bke::compare_meshes::FaceTopology , blender::bke::compare_meshes::Attributes , blender::bke::compare_meshes::AttributeTypes ,
  blender::bke::compare_meshes::Indices
}
 

Functions

const char * blender::bke::compare_meshes::mismatch_to_string (const MeshMismatch &mismatch)
 
template<typename T >
static void blender::bke::compare_meshes::sort_indices (MutableSpan< int > indices, const Span< T > values, const int component_i)
 
static void blender::bke::compare_meshes::sort_indices_with_id_maps (MutableSpan< int > indices, const Span< int > values, const Span< int > values_to_sorted, const Span< int > set_ids)
 
template<typename T >
static void blender::bke::compare_meshes::sort_per_set_based_on_attributes (const Span< int > set_sizes, MutableSpan< int > sorted_to_domain1, MutableSpan< int > sorted_to_domain2, const Span< T > values1, const Span< T > values2, const int component_i)
 
static void blender::bke::compare_meshes::sort_per_set_with_id_maps (const Span< int > set_sizes, const Span< int > values1, const Span< int > values2, const Span< int > values1_to_sorted, const Span< int > values2_to_sorted, const Span< int > value_set_ids, MutableSpan< int > sorted_to_domain1, MutableSpan< int > sorted_to_domain2)
 
template<typename T >
static bool blender::bke::compare_meshes::values_different (const T value1, const T value2, const float threshold, const int component_i)
 
template<typename T >
static bool blender::bke::compare_meshes::update_set_ids (MutableSpan< int > set_ids, const Span< T > values1, const Span< T > values2, const Span< int > sorted_to_values1, MutableSpan< int > sorted_to_values2, const float threshold, const int component_i)
 
static bool blender::bke::compare_meshes::update_set_ids_with_id_maps (MutableSpan< int > set_ids, const Span< int > domain_to_values1, const Span< int > domain_to_values2, const Span< int > values1_to_sorted, const Span< int > values2_to_sorted, const Span< int > value_set_ids, const Span< int > sorted_to_domain1, const Span< int > sorted_to_domain2)
 
static void blender::bke::compare_meshes::update_set_sizes (const Span< int > set_ids, MutableSpan< int > set_sizes)
 
static void blender::bke::compare_meshes::edges_from_vertex_sets (const Span< int2 > edges, const Span< int > verts_to_sorted, const Span< int > vertex_set_ids, MutableSpan< OrderedEdge > r_edges)
 
static bool blender::bke::compare_meshes::sort_edges (const Span< int2 > edges1, const Span< int2 > edges2, const IndexMapping &verts, IndexMapping &edges)
 
static bool blender::bke::compare_meshes::sort_corners_based_on_domain (const Span< int > corner_domain1, const Span< int > corner_domain2, const IndexMapping &domain, IndexMapping &corners)
 
static void blender::bke::compare_meshes::calc_smallest_corner_ids (const Span< int > face_offsets, const Span< int > corners_to_sorted, const Span< int > corner_set_ids, MutableSpan< int > smallest_corner_ids)
 
static bool blender::bke::compare_meshes::sort_faces_based_on_corners (const IndexMapping &corners, const Span< int > face_offsets1, const Span< int > face_offsets2, IndexMapping &faces)
 
static bool blender::bke::compare_meshes::ignored_attribute (const StringRef id)
 
static std::optional< MeshMismatchblender::bke::compare_meshes::verify_attributes_compatible (const AttributeAccessor &mesh1_attributes, const AttributeAccessor &mesh2_attributes)
 
static std::optional< MeshMismatchblender::bke::compare_meshes::sort_domain_using_attributes (const AttributeAccessor &mesh1_attributes, const AttributeAccessor &mesh2_attributes, const AttrDomain domain, const Span< StringRef > excluded_attributes, IndexMapping &maps, const float threshold)
 
static void blender::bke::compare_meshes::make_set_sizes_one (IndexMapping &indices)
 
static bool blender::bke::compare_meshes::all_set_sizes_one (const Span< int > set_sizes)
 
static std::optional< MeshMismatchblender::bke::compare_meshes::construct_vertex_mapping (const Mesh &mesh1, const Mesh &mesh2, IndexMapping &verts, IndexMapping &edges)
 
std::optional< MeshMismatchblender::bke::compare_meshes::compare_meshes (const Mesh &mesh1, const Mesh &mesh2, float threshold)
 Checks if the two meshes are different, returning the type of mismatch if any. Changes in index order are detected, but treated as a mismatch.