Blender V5.0
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 blender::Span<blender::float3> vert_positions_dst,
57 const Mesh *me_src);
58
63 const Mesh *me_src,
64 SpaceTransform *r_space_transform);
65
67 const SpaceTransform *space_transform,
68 float max_dist,
69 float ray_radius,
70 blender::Span<blender::float3> vert_positions_dst,
71 const Mesh *me_src,
72 Mesh *me_dst,
73 MeshPairRemap *r_map);
74
76 const SpaceTransform *space_transform,
77 float max_dist,
78 float ray_radius,
79 blender::Span<blender::float3> vert_positions_dst,
81 const Mesh *me_src,
82 Mesh *me_dst,
83 MeshPairRemap *r_map);
84
86 const SpaceTransform *space_transform,
87 float max_dist,
88 float ray_radius,
89 const Mesh *mesh_dst,
90 blender::Span<blender::float3> vert_positions_dst,
91 blender::Span<int> corner_verts_dst,
92 const blender::OffsetIndices<int> faces_dst,
93 const Mesh *me_src,
94 MeshRemapIslandsCalc gen_islands_src,
95 float islands_precision_src,
96 MeshPairRemap *r_map);
97
99 const SpaceTransform *space_transform,
100 float max_dist,
101 float ray_radius,
102 const Mesh *mesh_dst,
103 blender::Span<blender::float3> vert_positions_dst,
104 blender::Span<int> corner_verts,
105 const blender::OffsetIndices<int> faces_dst,
106 const Mesh *me_src,
107 MeshPairRemap *r_map);
bool(*)(blender::Span< blender::float3 > vert_positions, blender::Span< blender::int2 > edges, blender::Span< bool > uv_seams, blender::OffsetIndices< int > faces, blender::Span< int > corner_verts, blender::Span< int > corner_edges, MeshIslandStore *r_island_store) MeshRemapIslandsCalc
void BKE_mesh_remap_init(MeshPairRemap *map, int items_num)
void BKE_mesh_remap_find_best_match_from_mesh(blender::Span< blender::float3 > vert_positions_dst, const Mesh *me_src, SpaceTransform *r_space_transform)
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, blender::Span< blender::float3 > vert_positions_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, blender::Span< blender::float3 > vert_positions_dst, blender::Span< int > corner_verts, const blender::OffsetIndices< int > faces_dst, const Mesh *me_src, MeshPairRemap *r_map)
void BKE_mesh_remap_calc_edges_from_mesh(int mode, const SpaceTransform *space_transform, float max_dist, float ray_radius, blender::Span< blender::float3 > vert_positions_dst, blender::Span< blender::int2 > edges_dst, const Mesh *me_src, Mesh *me_dst, MeshPairRemap *r_map)
float BKE_mesh_remap_calc_difference_from_mesh(const SpaceTransform *space_transform, blender::Span< blender::float3 > vert_positions_dst, const Mesh *me_src)
void BKE_mesh_remap_calc_loops_from_mesh(int mode, const SpaceTransform *space_transform, float max_dist, float ray_radius, const Mesh *mesh_dst, blender::Span< blender::float3 > vert_positions_dst, blender::Span< int > corner_verts_dst, const blender::OffsetIndices< int > faces_dst, const Mesh *me_src, MeshRemapIslandsCalc gen_islands_src, float islands_precision_src, MeshPairRemap *r_map)
MeshPairRemapItem * items