Blender  V3.3
Classes | Macros
MOD_solidify_nonmanifold.c File Reference
#include "BLI_utildefines.h"
#include "BLI_math.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "MEM_guardedalloc.h"
#include "BKE_deform.h"
#include "BKE_mesh.h"
#include "BKE_particle.h"
#include "MOD_modifiertypes.h"
#include "MOD_solidify_util.h"
#include "MOD_util.h"

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

typedef struct NewFaceRef NewFaceRef
 
typedef struct OldEdgeFaceRef OldEdgeFaceRef
 
typedef struct OldVertEdgeRef OldVertEdgeRef
 
typedef struct NewEdgeRef NewEdgeRef
 
typedef struct EdgeGroup EdgeGroup
 
typedef struct FaceKeyPair FaceKeyPair
 
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)

Typedef Documentation

◆ EdgeGroup

typedef struct EdgeGroup EdgeGroup

◆ FaceKeyPair

typedef struct FaceKeyPair FaceKeyPair

◆ NewEdgeRef

typedef struct NewEdgeRef NewEdgeRef

◆ NewFaceRef

typedef struct NewFaceRef NewFaceRef

◆ OldEdgeFaceRef

◆ OldVertEdgeRef

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

◆ comp_float_int_pair()

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

Definition at line 125 of file MOD_solidify_nonmanifold.c.

References Freestyle::a, usdtokens::b(), x, and y.

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 133 of file MOD_solidify_nonmanifold.c.

References add_v3_v3(), angle(), FaceKeyPair::angle, angle_signed_on_axis_normalized_v3v3_v3(), SolidifyModifierData::bevel_convex, BKE_id_defgroup_name_index(), BKE_mesh_poly_normals_ensure(), BLI_assert, clamp_nonzero(), MVert::co, comp_float_int_pair(), copy_v3_v3(), SolidifyModifierData::defgrp_name, e, MLoop::e, OldVertEdgeRef::edges, EdgeGroup::edges, OldVertEdgeRef::edges_len, EdgeGroup::edges_len, ELEM, fabsf, NewFaceRef::face, FaceKeyPair::face, faces, OldEdgeFaceRef::faces, OldEdgeFaceRef::faces_len, OldEdgeFaceRef::faces_reversed, SolidifyModifierData::flag, float(), usdtokens::g(), Mesh::id, if(), EdgeGroup::is_orig_closed, EdgeGroup::is_singularity, l, len, len_squared_v3(), LIKELY, MPoly::loopstart, M_PI, SolidifyModifierData::mat_ofs, SolidifyModifierData::mat_ofs_rim, Mesh::medge, MEM_calloc_arrayN, MEM_freeN, MEM_malloc_arrayN, MEM_mallocN, SolidifyModifierData::merge_tolerance, mesh, Mesh::mloop, MOD_get_vgroup(), MOD_SOLIDIFY_EMPTY_TAG, MOD_SOLIDIFY_FLIP, MOD_SOLIDIFY_NONMANIFOLD_FLAT_FACES, MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_CONSTRAINTS, MOD_SOLIDIFY_NOSHELL, MOD_SOLIDIFY_OFFSET_ANGLE_CLAMP, MOD_SOLIDIFY_RIM, MOD_SOLIDIFY_VGROUP_INV, Mesh::mpoly, mul_v3_fl(), Mesh::mvert, negate_v3_v3(), next, SolidifyModifierData::nonmanifold_offset_mode, nor, normalize_v3(), NULL, ModifierEvalContext::object, offset, SolidifyModifierData::offset, SolidifyModifierData::offset_clamp, SolidifyModifierData::offset_fac, SolidifyModifierData::offset_fac_vg, NewEdgeRef::old_edge, pos, project_v3_v3(), result, NewFaceRef::reversed, SolidifyModifierData::rim_defgrp_name, SolidifyModifierData::shell_defgrp_name, blender::io::alembic::split(), sqrtf, sub_v3_v3v3(), SWAP, EdgeGroup::topo_group, Object::totcol, Mesh::totedge, MPoly::totloop, Mesh::totpoly, Mesh::totvert, UNLIKELY, OldEdgeFaceRef::used, v, MLoop::v, v1, MEdge::v1, v2, MEdge::v2, EdgeGroup::valid, and zero_v3().

Referenced by modifyMesh().

◆ 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 36 of file MOD_solidify_nonmanifold.c.

References Freestyle::a, dot_v3v3(), and r.

Referenced by MOD_solidify_nonmanifold_modifyMesh().