Blender V4.5
BKE_mesh_remap.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
10
11#include "BLI_math_matrix.h"
13#include "BLI_offset_indices.hh"
14
15#include "BKE_mesh_mapping.hh"
16
17struct MemArena;
18struct Mesh;
19
20/* Generic ways to map some geometry elements from a source mesh to a destination one. */
21
24 int *indices_src; /* NULL if no source found. */
25 float *weights_src; /* NULL if no source found, else, always normalized! */
26 /* UNUSED (at the moment). */
27 // float hit_dist; /* FLT_MAX if irrelevant or no source found. */
28 int island; /* For loops only. */
29};
30
31/* All mapping computing func return this. */
34 MeshPairRemapItem *items; /* Array, one item per destination element. */
35
36 MemArena *mem; /* memory arena, internal use only. */
37};
38
39/* Helpers! */
40void BKE_mesh_remap_init(MeshPairRemap *map, int items_num);
42
44
56 const float (*vert_positions_dst)[3],
57 int numverts_dst,
58 const Mesh *me_src);
59
63void BKE_mesh_remap_find_best_match_from_mesh(const float (*vert_positions_dst)[3],
64 int numverts_dst,
65 const Mesh *me_src,
66 SpaceTransform *r_space_transform);
67
69 const SpaceTransform *space_transform,
70 float max_dist,
71 float ray_radius,
72 const float (*vert_positions_dst)[3],
73 int numverts_dst,
74 const Mesh *me_src,
75 Mesh *me_dst,
76 MeshPairRemap *r_map);
77
79 const SpaceTransform *space_transform,
80 float max_dist,
81 float ray_radius,
82 const float (*vert_positions_dst)[3],
83 int numverts_dst,
84 const blender::int2 *edges_dst,
85 int numedges_dst,
86 const Mesh *me_src,
87 Mesh *me_dst,
88 MeshPairRemap *r_map);
89
91 const SpaceTransform *space_transform,
92 float max_dist,
93 float ray_radius,
94 const Mesh *mesh_dst,
95 const float (*vert_positions_dst)[3],
96 int numverts_dst,
97 const int *corner_verts_dst,
98 int numloops_dst,
99 const blender::OffsetIndices<int> faces_dst,
100 const Mesh *me_src,
101 MeshRemapIslandsCalc gen_islands_src,
102 float islands_precision_src,
103 MeshPairRemap *r_map);
104
106 const SpaceTransform *space_transform,
107 float max_dist,
108 float ray_radius,
109 const Mesh *mesh_dst,
110 const float (*vert_positions_dst)[3],
111 int numverts_dst,
112 const int *corner_verts,
113 const blender::OffsetIndices<int> faces_dst,
114 const Mesh *me_src,
115 MeshPairRemap *r_map);
bool(*)(const float(*vert_positions)[3], int totvert, const blender::int2 *edges, int totedge, const bool *uv_seams, blender::OffsetIndices< int > faces, const int *corner_verts, const int *corner_edges, int corners_num, MeshIslandStore *r_island_store) MeshRemapIslandsCalc
void BKE_mesh_remap_calc_loops_from_mesh(int mode, const SpaceTransform *space_transform, float max_dist, float ray_radius, const Mesh *mesh_dst, const float(*vert_positions_dst)[3], int numverts_dst, const int *corner_verts_dst, int numloops_dst, const blender::OffsetIndices< int > faces_dst, const Mesh *me_src, MeshRemapIslandsCalc gen_islands_src, float islands_precision_src, MeshPairRemap *r_map)
void BKE_mesh_remap_init(MeshPairRemap *map, int items_num)
void BKE_mesh_remap_calc_edges_from_mesh(int mode, const SpaceTransform *space_transform, float max_dist, float ray_radius, const float(*vert_positions_dst)[3], int numverts_dst, const blender::int2 *edges_dst, int numedges_dst, const Mesh *me_src, Mesh *me_dst, MeshPairRemap *r_map)
void BKE_mesh_remap_free(MeshPairRemap *map)
void BKE_mesh_remap_calc_verts_from_mesh(int mode, const SpaceTransform *space_transform, float max_dist, float ray_radius, const float(*vert_positions_dst)[3], int numverts_dst, const Mesh *me_src, Mesh *me_dst, MeshPairRemap *r_map)
void BKE_mesh_remap_item_define_invalid(MeshPairRemap *map, int index)
void BKE_mesh_remap_calc_faces_from_mesh(int mode, const SpaceTransform *space_transform, float max_dist, float ray_radius, const Mesh *mesh_dst, const float(*vert_positions_dst)[3], int numverts_dst, const int *corner_verts, const blender::OffsetIndices< int > faces_dst, const Mesh *me_src, MeshPairRemap *r_map)
void BKE_mesh_remap_find_best_match_from_mesh(const float(*vert_positions_dst)[3], int numverts_dst, const Mesh *me_src, SpaceTransform *r_space_transform)
float BKE_mesh_remap_calc_difference_from_mesh(const SpaceTransform *space_transform, const float(*vert_positions_dst)[3], int numverts_dst, const Mesh *me_src)
VecBase< int32_t, 2 > int2
MeshPairRemapItem * items