Blender  V3.3
Macros | Functions | Variables
MOD_correctivesmooth.c File Reference
#include "BLI_utildefines.h"
#include "BLI_math.h"
#include "BLT_translation.h"
#include "DNA_defaults.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "MEM_guardedalloc.h"
#include "BKE_context.h"
#include "BKE_deform.h"
#include "BKE_editmesh.h"
#include "BKE_lib_id.h"
#include "BKE_mesh.h"
#include "BKE_mesh_wrapper.h"
#include "BKE_screen.h"
#include "UI_interface.h"
#include "UI_resources.h"
#include "RNA_access.h"
#include "RNA_prototypes.h"
#include "MOD_modifiertypes.h"
#include "MOD_ui_common.h"
#include "MOD_util.h"
#include "BLO_read_write.h"
#include "DEG_depsgraph_query.h"
#include "PIL_time.h"
#include "BLI_strict_flags.h"

Go to the source code of this file.

Macros

#define USE_TANGENT_CALC_INLINE
 

Functions

static void initData (ModifierData *md)
 
static void copyData (const ModifierData *md, ModifierData *target, const int flag)
 
static void freeBind (CorrectiveSmoothModifierData *csmd)
 
static void freeData (ModifierData *md)
 
static void requiredDataMask (Object *UNUSED(ob), ModifierData *md, CustomData_MeshMasks *r_cddata_masks)
 
static void mesh_get_weights (MDeformVert *dvert, const int defgrp_index, const uint verts_num, const bool use_invert_vgroup, float *smooth_weights)
 
static void mesh_get_boundaries (Mesh *mesh, float *smooth_weights)
 
static void smooth_iter__simple (CorrectiveSmoothModifierData *csmd, Mesh *mesh, float(*vertexCos)[3], uint verts_num, const float *smooth_weights, uint iterations)
 
static void smooth_iter__length_weight (CorrectiveSmoothModifierData *csmd, Mesh *mesh, float(*vertexCos)[3], uint verts_num, const float *smooth_weights, uint iterations)
 
static void smooth_iter (CorrectiveSmoothModifierData *csmd, Mesh *mesh, float(*vertexCos)[3], uint verts_num, const float *smooth_weights, uint iterations)
 
static void smooth_verts (CorrectiveSmoothModifierData *csmd, Mesh *mesh, MDeformVert *dvert, const int defgrp_index, float(*vertexCos)[3], uint verts_num)
 
static void calc_tangent_ortho (float ts[3][3])
 
static void calc_tangent_loop_accum (const float v_dir_prev[3], const float v_dir_next[3], float r_tspace[3][3])
 
static void calc_tangent_spaces (Mesh *mesh, float(*vertexCos)[3], float(*r_tangent_spaces)[3][3])
 
static void store_cache_settings (CorrectiveSmoothModifierData *csmd)
 
static bool cache_settings_equal (CorrectiveSmoothModifierData *csmd)
 
static void calc_deltas (CorrectiveSmoothModifierData *csmd, Mesh *mesh, MDeformVert *dvert, const int defgrp_index, const float(*rest_coords)[3], uint verts_num)
 
static void correctivesmooth_modifier_do (ModifierData *md, Depsgraph *depsgraph, Object *ob, Mesh *mesh, float(*vertexCos)[3], uint verts_num, struct BMEditMesh *em)
 
static void deformVerts (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, float(*vertexCos)[3], int verts_num)
 
static void deformVertsEM (ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *editData, Mesh *mesh, float(*vertexCos)[3], int verts_num)
 
static void panel_draw (const bContext *UNUSED(C), Panel *panel)
 
static void panelRegister (ARegionType *region_type)
 
static void blendWrite (BlendWriter *writer, const ID *id_owner, const ModifierData *md)
 
static void blendRead (BlendDataReader *reader, ModifierData *md)
 

Variables

ModifierTypeInfo modifierType_CorrectiveSmooth
 

Detailed Description

Method of smoothing deformation, also known as 'delta-mush'.

Definition in file MOD_correctivesmooth.c.

Macro Definition Documentation

◆ USE_TANGENT_CALC_INLINE

#define USE_TANGENT_CALC_INLINE

Definition at line 55 of file MOD_correctivesmooth.c.

Function Documentation

◆ blendRead()

static void blendRead ( BlendDataReader reader,
ModifierData md 
)
static

◆ blendWrite()

static void blendWrite ( BlendWriter writer,
const ID id_owner,
const ModifierData md 
)
static

◆ cache_settings_equal()

static bool cache_settings_equal ( CorrectiveSmoothModifierData csmd)
static

◆ calc_deltas()

static void calc_deltas ( CorrectiveSmoothModifierData csmd,
Mesh mesh,
MDeformVert dvert,
const int  defgrp_index,
const float(*)  rest_coords[3],
uint  verts_num 
)
static

◆ calc_tangent_loop_accum()

static void calc_tangent_loop_accum ( const float  v_dir_prev[3],
const float  v_dir_next[3],
float  r_tspace[3][3] 
)
static

accumulate edge-vectors from all polys.

Definition at line 428 of file MOD_correctivesmooth.c.

References acosf, add_v3_v3(), add_v3_v3v3(), compare_v3v3(), cross_v3_v3v3(), dot_v3v3(), fabsf, mul_v3_fl(), nor, and normalize_v3().

Referenced by calc_tangent_spaces().

◆ calc_tangent_ortho()

static void calc_tangent_ortho ( float  ts[3][3])
static

◆ calc_tangent_spaces()

static void calc_tangent_spaces ( Mesh mesh,
float(*)  vertexCos[3],
float(*)  r_tangent_spaces[3][3] 
)
static

◆ copyData()

static void copyData ( const ModifierData md,
ModifierData target,
const int  flag 
)
static

◆ correctivesmooth_modifier_do()

static void correctivesmooth_modifier_do ( ModifierData md,
Depsgraph depsgraph,
Object ob,
Mesh mesh,
float(*)  vertexCos[3],
uint  verts_num,
struct BMEditMesh em 
)
static

◆ deformVerts()

static void deformVerts ( ModifierData md,
const ModifierEvalContext ctx,
Mesh mesh,
float(*)  vertexCos[3],
int  verts_num 
)
static

◆ deformVertsEM()

static void deformVertsEM ( ModifierData md,
const ModifierEvalContext ctx,
struct BMEditMesh editData,
Mesh mesh,
float(*)  vertexCos[3],
int  verts_num 
)
static

◆ freeBind()

static void freeBind ( CorrectiveSmoothModifierData csmd)
static

◆ freeData()

static void freeData ( ModifierData md)
static

Definition at line 93 of file MOD_correctivesmooth.c.

References freeBind().

◆ initData()

static void initData ( ModifierData md)
static

◆ mesh_get_boundaries()

static void mesh_get_boundaries ( Mesh mesh,
float smooth_weights 
)
static

◆ mesh_get_weights()

static void mesh_get_weights ( MDeformVert dvert,
const int  defgrp_index,
const uint  verts_num,
const bool  use_invert_vgroup,
float smooth_weights 
)
static

Definition at line 112 of file MOD_correctivesmooth.c.

References BKE_defvert_find_weight(), and w().

Referenced by smooth_verts().

◆ panel_draw()

static void panel_draw ( const bContext UNUSEDC,
Panel panel 
)
static

◆ panelRegister()

static void panelRegister ( ARegionType region_type)
static

◆ requiredDataMask()

static void requiredDataMask ( Object UNUSEDob,
ModifierData md,
CustomData_MeshMasks r_cddata_masks 
)
static

◆ smooth_iter()

static void smooth_iter ( CorrectiveSmoothModifierData csmd,
Mesh mesh,
float(*)  vertexCos[3],
uint  verts_num,
const float smooth_weights,
uint  iterations 
)
static

◆ smooth_iter__length_weight()

static void smooth_iter__length_weight ( CorrectiveSmoothModifierData csmd,
Mesh mesh,
float(*)  vertexCos[3],
uint  verts_num,
const float smooth_weights,
uint  iterations 
)
static

Definition at line 246 of file MOD_correctivesmooth.c.

References eps, CorrectiveSmoothModifierData::lambda, Mesh::medge, mesh, and Mesh::totedge.

Referenced by smooth_iter().

◆ smooth_iter__simple()

static void smooth_iter__simple ( CorrectiveSmoothModifierData csmd,
Mesh mesh,
float(*)  vertexCos[3],
uint  verts_num,
const float smooth_weights,
uint  iterations 
)
static

Definition at line 170 of file MOD_correctivesmooth.c.

References CorrectiveSmoothModifierData::lambda, Mesh::medge, mesh, and Mesh::totedge.

Referenced by smooth_iter().

◆ smooth_verts()

static void smooth_verts ( CorrectiveSmoothModifierData csmd,
Mesh mesh,
MDeformVert dvert,
const int  defgrp_index,
float(*)  vertexCos[3],
uint  verts_num 
)
static

◆ store_cache_settings()

static void store_cache_settings ( CorrectiveSmoothModifierData csmd)
static

Variable Documentation

◆ modifierType_CorrectiveSmooth

ModifierTypeInfo modifierType_CorrectiveSmooth

Definition at line 837 of file MOD_correctivesmooth.c.