Blender  V2.93
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])
 

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

◆ comp_float_int_pair()

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

Definition at line 129 of file MOD_solidify_nonmanifold.c.

References Freestyle::a, 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 137 of file MOD_solidify_nonmanifold.c.

References add_v3_v3(), angle(), FaceKeyPair::angle, angle_signed_on_axis_normalized_v3v3_v3(), SolidifyModifierData::bevel_convex, BKE_mesh_calc_normals_poly(), BKE_object_defgroup_name_index(), BLI_assert, 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, NewEdgeRef::faces, OldEdgeFaceRef::faces_len, OldEdgeFaceRef::faces_reversed, SolidifyModifierData::flag, float(), EdgeGroup::is_orig_closed, EdgeGroup::is_singularity, l, len, len_squared_v3(), LIKELY, MPoly::loopstart, M_PI, SolidifyModifierData::mat_ofs, SolidifyModifierData::mat_ofs_rim, max_ff(), 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, 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, size(), blender::io::alembic::split(), sqrtf, sub_v3_v3v3(), SWAP, EdgeGroup::topo_group, Object::totcol, Mesh::totedge, Mesh::totloop, 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 50 of file MOD_solidify_nonmanifold.c.

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

Referenced by MOD_solidify_nonmanifold_modifyMesh().