Blender V4.3
MOD_solidify_nonmanifold.cc File Reference
#include "BLI_math_matrix.h"
#include "BLI_math_vector.h"
#include "BLI_utildefines.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "MEM_guardedalloc.h"
#include "BKE_attribute.hh"
#include "BKE_customdata.hh"
#include "BKE_deform.hh"
#include "BKE_mesh.hh"
#include "MOD_modifiertypes.hh"
#include "MOD_solidify_util.hh"
#include "MOD_util.hh"

Go to the source code of this file.

Classes

struct  NewFaceRef
 
struct  OldEdgeFaceRef
 
struct  OldVertEdgeRef
 
struct  NewEdgeRef
 
struct  EdgeGroup
 
struct  FaceKeyPair
 

Macros

#define MOD_SOLIDIFY_EMPTY_TAG   uint(-1)
 

Functions

Local Utilities
static float project_v3_v3 (float r[3], const float a[3])
 
static float angle_signed_on_axis_normalized_v3v3_v3 (const float n[3], const float ref_n[3], const float axis[3])
 
static float clamp_nonzero (const float value, const float epsilon)
 
Main Solidify Function
static int comp_float_int_pair (const void *a, const void *b)
 
MeshMOD_solidify_nonmanifold_modifyMesh (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
 

Macro Definition Documentation

◆ MOD_SOLIDIFY_EMPTY_TAG

#define MOD_SOLIDIFY_EMPTY_TAG   uint(-1)

Function Documentation

◆ angle_signed_on_axis_normalized_v3v3_v3()

static float angle_signed_on_axis_normalized_v3v3_v3 ( const float n[3],
const float ref_n[3],
const float axis[3] )
static

◆ clamp_nonzero()

static float clamp_nonzero ( const float value,
const float epsilon )
static

Definition at line 59 of file MOD_solidify_nonmanifold.cc.

References BLI_assert, max_ff(), and min_ff().

Referenced by MOD_solidify_nonmanifold_modifyMesh().

◆ comp_float_int_pair()

static int comp_float_int_pair ( const void * a,
const void * b )
static

Definition at line 126 of file MOD_solidify_nonmanifold.cc.

References b, and int.

Referenced by MOD_solidify_nonmanifold_modifyMesh().

◆ MOD_solidify_nonmanifold_modifyMesh()

Mesh * MOD_solidify_nonmanifold_modifyMesh ( ModifierData * md,
const ModifierEvalContext * ctx,
Mesh * mesh )

Definition at line 134 of file MOD_solidify_nonmanifold.cc.

References add_v3_v3(), add_v3_v3v3(), angle(), FaceKeyPair::angle, angle_signed_on_axis_normalized_v3v3_v3(), angle_v3v3v3(), SolidifyModifierData::bevel_convex, BKE_defvert_ensure_index(), BKE_defvert_find_weight(), BKE_id_defgroup_name_index(), BKE_mesh_new_nomain_from_template(), BKE_modifier_set_error(), BLI_assert, CD_ORIGINDEX, CD_PROP_FLOAT, CD_SET_DEFAULT, CLAMP, clamp_f(), clamp_nonzero(), comp_float_int_pair(), copy_v3_v3(), cosf, count, cross_v3_v3v3(), CustomData_add_layer_named(), CustomData_copy_data(), CustomData_free_layer_named(), CustomData_get_layer_for_write(), CustomData_get_layer_named(), CustomData_get_layer_named_for_write(), blender::Span< T >::data(), SolidifyModifierData::defgrp_name, dot_v3v3(), e, EdgeGroup::edges, OldVertEdgeRef::edges, EdgeGroup::edges_len, OldVertEdgeRef::edges_len, ELEM, fabsf, FaceKeyPair::face, NewFaceRef::face, NewEdgeRef::faces, OldEdgeFaceRef::faces, OldEdgeFaceRef::faces_len, OldEdgeFaceRef::faces_reversed, blender::bke::SpanAttributeWriter< T >::finish(), SolidifyModifierData::flag, float, NewFaceRef::index, blender::offset_indices::OffsetIndices< T >::index_range(), insert(), int, invert_m3(), blender::Span< T >::is_empty(), EdgeGroup::is_orig_closed, EdgeGroup::is_singularity, l, len, len_squared_v3(), len_v3(), length(), LIKELY, NewEdgeRef::link_edge_groups, NewFaceRef::link_edges, blender::bke::AttributeAccessor::lookup(), M_PI, madd_v3_v3fl(), madd_v3_v3v3fl(), SolidifyModifierData::mat_ofs, SolidifyModifierData::mat_ofs_rim, max_ff(), MEM_calloc_arrayN, MEM_freeN(), MEM_malloc_arrayN, MEM_mallocN, MEM_reallocN_id, SolidifyModifierData::merge_tolerance, mesh, min_ff(), MOD_get_vgroup(), MOD_SOLIDIFY_EMPTY_TAG, MOD_SOLIDIFY_FLIP, MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_FLAT, MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_NONE, MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_ROUND, MOD_SOLIDIFY_NONMANIFOLD_FLAT_FACES, MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_CONSTRAINTS, MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_EVEN, MOD_SOLIDIFY_NOSHELL, MOD_SOLIDIFY_OFFSET_ANGLE_CLAMP, MOD_SOLIDIFY_RIM, MOD_SOLIDIFY_VGROUP_INV, mul_v3_fl(), mul_v3_m3v3(), mul_v3_v3fl(), negate_v3_v3(), NewEdgeRef::new_edge, EdgeGroup::new_vert, next, EdgeGroup::no, SolidifyModifierData::nonmanifold_boundary_mode, SolidifyModifierData::nonmanifold_offset_mode, nor, normalize_v3(), ModifierEvalContext::object, SolidifyModifierData::offset, SolidifyModifierData::offset_clamp, SolidifyModifierData::offset_fac, SolidifyModifierData::offset_fac_vg, NewEdgeRef::old_edge, EdgeGroup::open_face_edge, ORIGINDEX_NONE, pos, printf, project_v3_v3(), result, NewFaceRef::reversed, SolidifyModifierData::rim_defgrp_name, SolidifyModifierData::shell_defgrp_name, blender::IndexRange::size(), blender::offset_indices::OffsetIndices< T >::size(), size(), blender::Span< T >::slice(), blender::bke::SpanAttributeWriter< T >::span, EdgeGroup::split, sqrtf, blender::IndexRange::start(), sub_v3_v3(), sub_v3_v3v3(), swap_v4_v4(), EdgeGroup::topo_group, Object::totcol, UNLIKELY, OldEdgeFaceRef::used, v2, EdgeGroup::valid, MDeformWeight::weight, zero_m3(), and zero_v3().

Referenced by modify_mesh().

◆ project_v3_v3()

static float project_v3_v3 ( float r[3],
const float a[3] )
static

Similar to project_v3_v3v3_normalized that returns the dot-product.

Definition at line 35 of file MOD_solidify_nonmanifold.cc.

References dot_v3v3().

Referenced by MOD_solidify_nonmanifold_modifyMesh().