Blender  V3.3
Classes | Macros
MOD_solidify_extrude.c File Reference
#include "BLI_utildefines.h"
#include "BLI_bitmap.h"
#include "BLI_math.h"
#include "BLI_utildefines_stack.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  EdgeFaceRef
 

Macros

#define INVALID_UNUSED   ((uint)-1)
 
#define INVALID_PAIR   ((uint)-2)
 
#define INIT_VERT_ARRAY_OFFSETS(test)
 
#define SOLIDIFY_SIDE_NORMALS
 

Functions

Main Solidify Function
MeshMOD_solidify_extrude_modifyMesh (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
 

High Quality Normal Calculation Function

#define USE_NONMANIFOLD_WORKAROUND
 
typedef struct EdgeFaceRef EdgeFaceRef
 
BLI_INLINE bool edgeref_is_init (const EdgeFaceRef *edge_ref)
 
static void mesh_calc_hq_normal (Mesh *mesh, const float(*poly_nors)[3], float(*r_vert_nors)[3])
 

Macro Definition Documentation

◆ INIT_VERT_ARRAY_OFFSETS

#define INIT_VERT_ARRAY_OFFSETS (   test)
Value:
if (((ofs_new >= ofs_orig) == do_flip) == test) { \
i_end = verts_num; \
do_shell_align = true; \
mv = mvert; \
} \
else { \
if (do_shell) { \
i_end = verts_num; \
do_shell_align = true; \
} \
else { \
i_end = newVerts; \
do_shell_align = false; \
} \
mv = &mvert[verts_num]; \
} \
(void)0
SyclQueue void void size_t num_bytes void

◆ INVALID_PAIR

#define INVALID_PAIR   ((uint)-2)

◆ INVALID_UNUSED

#define INVALID_UNUSED   ((uint)-1)

◆ SOLIDIFY_SIDE_NORMALS

#define SOLIDIFY_SIDE_NORMALS

◆ USE_NONMANIFOLD_WORKAROUND

#define USE_NONMANIFOLD_WORKAROUND

Definition at line 36 of file MOD_solidify_extrude.c.

Typedef Documentation

◆ EdgeFaceRef

typedef struct EdgeFaceRef EdgeFaceRef

Function Documentation

◆ edgeref_is_init()

BLI_INLINE bool edgeref_is_init ( const EdgeFaceRef edge_ref)

Definition at line 46 of file MOD_solidify_extrude.c.

References EdgeFaceRef::p1, and EdgeFaceRef::p2.

Referenced by mesh_calc_hq_normal().

◆ mesh_calc_hq_normal()

static void mesh_calc_hq_normal ( Mesh mesh,
const float(*)  poly_nors[3],
float(*)  r_vert_nors[3] 
)
static

◆ MOD_solidify_extrude_modifyMesh()

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

Definition at line 158 of file MOD_solidify_extrude.c.

References add_v3_v3(), angle(), angle_normalized_v3v3(), angle_signed_on_axis_v3v3_v3(), SolidifyModifierData::bevel_convex, BKE_defvert_ensure_index(), BKE_defvert_find_weight(), BKE_id_defgroup_name_index(), BKE_mesh_new_nomain_from_template(), BKE_mesh_normals_tag_dirty(), BKE_mesh_poly_normals_ensure(), BKE_mesh_vertex_normals_are_dirty(), BKE_mesh_vertex_normals_ensure(), BLI_assert, BLI_BITMAP_ENABLE, BLI_BITMAP_NEW, BLI_BITMAP_TEST, MEdge::bweight, CD_CALLOC, CD_MDEFORMVERT, CD_ORIGINDEX, CLAMP, clamp_f(), clamp_i(), MVert::co, copy_v3_v3(), copy_vn_fl(), copy_vn_i(), cosf, MEdge::crease, SolidifyModifierData::crease_inner, SolidifyModifierData::crease_outer, SolidifyModifierData::crease_rim, CustomData_add_layer(), CustomData_copy_data(), CustomData_duplicate_referenced_layer(), CustomData_get_layer(), SolidifyModifierData::defgrp_name, e, MLoop::e, Mesh::edata, ELEM, fabsf, MEdge::flag, MPoly::flag, SolidifyModifierData::flag, float(), Mesh::id, INIT_VERT_ARRAY_OFFSETS, INVALID_PAIR, INVALID_UNUSED, Mesh::ldata, len_squared_v3v3(), LIKELY, MPoly::loopstart, M_PI, madd_v3_v3fl(), MPoly::mat_nr, SolidifyModifierData::mat_ofs, SolidifyModifierData::mat_ofs_rim, max_ff(), ME_CDFLAG_EDGE_BWEIGHT, ME_CDFLAG_EDGE_CREASE, ME_EDGE_TMP_TAG, ME_EDGEDRAW, ME_EDGERENDER, Mesh::medge, MEM_calloc_arrayN, MEM_freeN, MEM_malloc_arrayN, mesh, mesh_calc_hq_normal(), min_ff(), Mesh::mloop, MOD_get_vgroup(), MOD_SOLIDIFY_EVEN, MOD_SOLIDIFY_FLIP, MOD_SOLIDIFY_NORMAL_CALC, MOD_SOLIDIFY_NOSHELL, MOD_SOLIDIFY_OFFSET_ANGLE_CLAMP, MOD_SOLIDIFY_RIM, MOD_SOLIDIFY_VGROUP_INV, Mesh::mpoly, Mesh::mvert, negate_v3(), nor, normal_quad_v3(), normalize_v3(), normalize_v3_v3(), NULL, ModifierEvalContext::object, offset, SolidifyModifierData::offset, SolidifyModifierData::offset_clamp, SolidifyModifierData::offset_fac, SolidifyModifierData::offset_fac_vg, ORIGINDEX_NONE, Mesh::pdata, result, SolidifyModifierData::rim_defgrp_name, SolidifyModifierData::shell_defgrp_name, shell_v3v3_normalized_to_dist(), sqrtf, STACK_DECLARE, STACK_INIT, STACK_PUSH, STACK_SIZE, stride, sub_v3_v3v3(), Object::totcol, Mesh::totedge, Mesh::totloop, MPoly::totloop, Mesh::totpoly, Mesh::totvert, v, MLoop::v, v1, MEdge::v1, v2, MEdge::v2, Mesh::vdata, and MDeformWeight::weight.

Referenced by modifyMesh().