26 if (face_vertex_indices.
size() < 3) {
31 float normal[3] = {0, 0, 0};
33 for (
int idx : face_vertex_indices) {
47 input.vert.reinitialize(face_vertex_indices.
size());
48 input.face.reinitialize(1);
49 input.face[0].resize(face_vertex_indices.
size());
50 for (
int64_t i = 0; i < face_vertex_indices.
size(); ++i) {
53 input.epsilon = 1.0e-6f;
54 input.need_ids =
true;
56 for (
size_t i = 0; i < face_vertex_indices.
size(); ++i) {
57 int idx = face_vertex_indices[i];
69 faces.reserve(res.face.size());
70 for (
const auto &f : res.face) {
73 for (
int64_t i = 0; i < f.size(); ++i) {
75 BLI_assert(idx >= 0 && idx < res.vert_orig.size());
76 if (res.vert_orig[idx].is_empty()) {
85 idx = res.vert_orig[idx][0];
90 faces.append(face_verts);
97 float axes_transform[3][3];
109 float3 max_coord(-INT_MAX);
110 float3 min_coord(INT_MAX);
112 for (
const float(&vertex)[3] : bb->
vec) {
113 for (
int axis = 0; axis < 3; axis++) {
114 max_coord[axis] =
max_ff(max_coord[axis], vertex[axis]);
115 min_coord[axis] =
min_ff(min_coord[axis], vertex[axis]);
118 const float max_diff =
max_fff(
119 max_coord[0] - min_coord[0], max_coord[1] - min_coord[1], max_coord[2] - min_coord[2]);
121 while (import_params.
clamp_size < max_diff * scale) {
struct BoundBox * BKE_mesh_boundbox_get(struct Object *ob)
General operations, lookup, etc. for blender objects.
void BKE_object_apply_mat4(struct Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
@ CDT_CONSTRAINTS_VALID_BMESH_WITH_HOLES
MINLINE float max_fff(float a, float b, float c)
MINLINE float max_ff(float a, float b)
MINLINE float min_ff(float a, float b)
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])
bool mat3_from_axis_conversion(int src_forward, int src_up, int dst_forward, int dst_up, float r_mat[3][3])
MINLINE float normalize_v3(float r[3])
MINLINE void add_newell_cross_v3_v3v3(float n[3], const float v_prev[3], const float v_curr[3])
MINLINE void copy_v3_fl(float r[3], float f)
Object is a sort of wrapper for general info.
constexpr const T & last(const int64_t n=0) const
constexpr int64_t size() const
void append(const T &value)
void reserve(const int64_t min_capacity)
blender::meshintersect::CDT_result< double > delaunay_2d_calc(const CDT_input< double > &input, CDT_output_type output_type)
IconTextureDrawCall normal
ccl_global KernelShaderEvalInput * input
Vector< Vector< int > > fixup_invalid_polygon(Span< float3 > vertex_coords, Span< int > face_vertex_indices)
void transform_object(Object *object, const OBJImportParams &import_params)
vec_base< double, 2 > double2