Blender
V5.0
intern
slim
slim_matrix_transfer.h
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2023 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9
#pragma once
10
11
#include <memory>
12
#include <vector>
13
14
namespace
slim
{
15
16
struct
SLIMData
;
17
18
using
SLIMDataPtr
= std::unique_ptr<SLIMData>;
19
24
struct
MatrixTransferChart
{
25
int
verts_num
= 0;
26
int
faces_num
= 0;
27
int
pinned_vertices_num
= 0;
28
int
boundary_vertices_num
= 0;
29
int
edges_num
= 0;
30
32
bool
succeeded
=
false
;
33
35
std::vector<double>
v_matrices
;
37
std::vector<double>
uv_matrices
;
39
std::vector<double>
pp_matrices
;
41
std::vector<double>
el_vectors
;
43
std::vector<float>
w_vectors
;
44
46
std::vector<int>
f_matrices
;
48
std::vector<int>
p_matrices
;
50
std::vector<int>
e_matrices
;
52
std::vector<int>
b_vectors
;
53
54
SLIMDataPtr
data
;
55
56
MatrixTransferChart
();
57
MatrixTransferChart
(
MatrixTransferChart
&&);
58
59
MatrixTransferChart
(
const
MatrixTransferChart
&) =
delete
;
60
MatrixTransferChart
&
operator=
(
const
MatrixTransferChart
&) =
delete
;
61
62
~MatrixTransferChart
();
63
64
void
try_slim_solve
(
int
iter_num);
66
void
parametrize_single_iteration
();
72
void
transfer_uvs_blended
(
float
blend
);
73
void
free_slim_data
();
74
};
75
76
struct
PinnedVertexData
{
77
std::vector<int>
pinned_vertex_indices
;
78
std::vector<double>
pinned_vertex_positions_2D
;
79
std::vector<int>
selected_pins
;
80
};
81
82
struct
MatrixTransfer
{
83
bool
fixed_boundary
=
false
;
84
bool
use_weights
=
false
;
85
double
weight_influence
= 0.0;
86
int
reflection_mode
= 0;
87
int
n_iterations
= 0;
88
bool
skip_initialization
=
false
;
89
bool
is_minimize_stretch
=
false
;
90
91
std::vector<MatrixTransferChart>
charts
;
92
94
PinnedVertexData
pinned_vertex_data
;
95
96
MatrixTransfer
();
97
MatrixTransfer
(
const
MatrixTransfer
&) =
delete
;
98
MatrixTransfer
&
operator=
(
const
MatrixTransfer
&) =
delete
;
99
~MatrixTransfer
();
100
101
void
parametrize
();
102
104
void
parametrize_live
(
MatrixTransferChart
&chart,
const
PinnedVertexData
&
pinned_vertex_data
);
105
107
void
setup_slim_data
(
MatrixTransferChart
&chart)
const
;
108
};
109
110
}
// namespace slim
slim
Definition
GEO_uv_parametrizer.hh:9
slim::SLIMDataPtr
std::unique_ptr< SLIMData > SLIMDataPtr
Definition
slim_matrix_transfer.h:18
slim::MatrixTransferChart
Definition
slim_matrix_transfer.h:24
slim::MatrixTransferChart::pinned_vertices_num
int pinned_vertices_num
Definition
slim_matrix_transfer.h:27
slim::MatrixTransferChart::free_slim_data
void free_slim_data()
Definition
slim_matrix_transfer.cpp:23
slim::MatrixTransferChart::operator=
MatrixTransferChart & operator=(const MatrixTransferChart &)=delete
slim::MatrixTransferChart::w_vectors
std::vector< float > w_vectors
Definition
slim_matrix_transfer.h:43
slim::MatrixTransferChart::el_vectors
std::vector< double > el_vectors
Definition
slim_matrix_transfer.h:41
slim::MatrixTransferChart::p_matrices
std::vector< int > p_matrices
Definition
slim_matrix_transfer.h:48
slim::MatrixTransferChart::MatrixTransferChart
MatrixTransferChart()
slim::MatrixTransferChart::faces_num
int faces_num
Definition
slim_matrix_transfer.h:26
slim::MatrixTransferChart::v_matrices
std::vector< double > v_matrices
Definition
slim_matrix_transfer.h:35
slim::MatrixTransferChart::boundary_vertices_num
int boundary_vertices_num
Definition
slim_matrix_transfer.h:28
slim::MatrixTransferChart::uv_matrices
std::vector< double > uv_matrices
Definition
slim_matrix_transfer.h:37
slim::MatrixTransferChart::e_matrices
std::vector< int > e_matrices
Definition
slim_matrix_transfer.h:50
slim::MatrixTransferChart::data
SLIMDataPtr data
Definition
slim_matrix_transfer.h:54
slim::MatrixTransferChart::MatrixTransferChart
MatrixTransferChart(const MatrixTransferChart &)=delete
slim::MatrixTransferChart::MatrixTransferChart
MatrixTransferChart(MatrixTransferChart &&)
slim::MatrixTransferChart::verts_num
int verts_num
Definition
slim_matrix_transfer.h:25
slim::MatrixTransferChart::pp_matrices
std::vector< double > pp_matrices
Definition
slim_matrix_transfer.h:39
slim::MatrixTransferChart::transfer_uvs_blended
void transfer_uvs_blended(float blend)
Definition
slim_parametrizer.cpp:100
slim::MatrixTransferChart::try_slim_solve
void try_slim_solve(int iter_num)
Definition
slim_parametrizer.cpp:111
slim::MatrixTransferChart::b_vectors
std::vector< int > b_vectors
Definition
slim_matrix_transfer.h:52
slim::MatrixTransferChart::f_matrices
std::vector< int > f_matrices
Definition
slim_matrix_transfer.h:46
slim::MatrixTransferChart::succeeded
bool succeeded
Definition
slim_matrix_transfer.h:32
slim::MatrixTransferChart::parametrize_single_iteration
void parametrize_single_iteration()
Definition
slim_parametrizer.cpp:125
slim::MatrixTransferChart::edges_num
int edges_num
Definition
slim_matrix_transfer.h:29
slim::MatrixTransferChart::~MatrixTransferChart
~MatrixTransferChart()
slim::MatrixTransfer::n_iterations
int n_iterations
Definition
slim_matrix_transfer.h:87
slim::MatrixTransfer::parametrize
void parametrize()
Definition
slim_parametrizer.cpp:143
slim::MatrixTransfer::is_minimize_stretch
bool is_minimize_stretch
Definition
slim_matrix_transfer.h:89
slim::MatrixTransfer::~MatrixTransfer
~MatrixTransfer()
slim::MatrixTransfer::skip_initialization
bool skip_initialization
Definition
slim_matrix_transfer.h:88
slim::MatrixTransfer::reflection_mode
int reflection_mode
Definition
slim_matrix_transfer.h:86
slim::MatrixTransfer::MatrixTransfer
MatrixTransfer()
slim::MatrixTransfer::MatrixTransfer
MatrixTransfer(const MatrixTransfer &)=delete
slim::MatrixTransfer::setup_slim_data
void setup_slim_data(MatrixTransferChart &chart) const
Definition
slim_matrix_transfer.cpp:28
slim::MatrixTransfer::use_weights
bool use_weights
Definition
slim_matrix_transfer.h:84
slim::MatrixTransfer::charts
std::vector< MatrixTransferChart > charts
Definition
slim_matrix_transfer.h:91
slim::MatrixTransfer::fixed_boundary
bool fixed_boundary
Definition
slim_matrix_transfer.h:83
slim::MatrixTransfer::weight_influence
double weight_influence
Definition
slim_matrix_transfer.h:85
slim::MatrixTransfer::operator=
MatrixTransfer & operator=(const MatrixTransfer &)=delete
slim::MatrixTransfer::pinned_vertex_data
PinnedVertexData pinned_vertex_data
Definition
slim_matrix_transfer.h:94
slim::MatrixTransfer::parametrize_live
void parametrize_live(MatrixTransferChart &chart, const PinnedVertexData &pinned_vertex_data)
Definition
slim_parametrizer.cpp:131
slim::PinnedVertexData
Definition
slim_matrix_transfer.h:76
slim::PinnedVertexData::selected_pins
std::vector< int > selected_pins
Definition
slim_matrix_transfer.h:79
slim::PinnedVertexData::pinned_vertex_indices
std::vector< int > pinned_vertex_indices
Definition
slim_matrix_transfer.h:77
slim::PinnedVertexData::pinned_vertex_positions_2D
std::vector< double > pinned_vertex_positions_2D
Definition
slim_matrix_transfer.h:78
slim::SLIMData
Definition
slim.h:25
blend
static int blend(const Tex *tex, const float texvec[3], TexResult *texres)
Definition
texture_procedural.cc:53
Generated on
for Blender by
doxygen
1.16.1