31 if (face_verts.
size() < 3) {
42 int idx = face_verts[i];
45 mul_v2_m3v3(coord2d, axis_mat, vert_positions[idx]);
46 input_verts[i] =
double2(coord2d.x, coord2d.y);
50 input_faces.
first().resize(input_verts.
size());
52 std::iota(input_faces.
first().begin(), input_faces.
first().end(), 0);
56 input.
vert = std::move(input_verts);
57 input.face = std::move(input_faces);
58 input.epsilon = 1.0e-6f;
59 input.need_ids =
true;
65 for (
const auto &res_face : res.
face) {
67 res_face_verts.
reserve(res_face.size());
68 for (
int64_t i = 0; i < res_face.size(); ++i) {
69 int idx = res_face[i];
80 res_face_verts.
append(idx);
83 faces.append(res_face_verts);
90 float axes_transform[3][3];
99 float scale_vec[3] = {
106 const Mesh *mesh =
static_cast<const Mesh *
>(
object->data);
111 while (import_params.
clamp_size < max_diff * scale) {
120 if (separator == 0) {
123 size_t pos = full_name.find_last_of(separator);
124 if (
pos == std::string::npos) {
127 return full_name.substr(
pos + 1);
General operations, lookup, etc. for blender objects.
void BKE_object_apply_mat4(Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
@ CDT_CONSTRAINTS_VALID_BMESH_WITH_HOLES
void axis_dominant_v3_to_m3(float r_mat[3][3], const float normal[3])
Normal to x,y matrix.
void unit_m3(float m[3][3])
void mul_v2_m3v3(float r[2], const float M[3][3], const float a[3])
void unit_m4(float m[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
void rescale_m4(float mat[4][4], const float scale[3])
bool mat3_from_axis_conversion(int src_forward, int src_up, int dst_forward, int dst_up, float r_mat[3][3])
MINLINE void copy_v3_fl(float r[3], float f)
Object is a sort of wrapper for general info.
constexpr int64_t size() const
constexpr IndexRange index_range() const
void append(const T &value)
void reserve(const int64_t min_capacity)
Array< Vector< int > > face
Array< Vector< int > > vert_orig
blender::meshintersect::CDT_result< double > delaunay_2d_calc(const CDT_input< double > &input, CDT_output_type output_type)
float3 face_normal_calc(Span< float3 > vert_positions, Span< int > face_verts)
void transform_object(Object *object, const OBJImportParams &import_params)
Vector< Vector< int > > fixup_invalid_face(Span< float3 > vert_positions, Span< int > face_verts)
std::string get_geometry_name(const std::string &full_name, char separator)
T reduce_max(const VecBase< T, Size > &a)
VecBase< double, 2 > double2