Blender V2.61 - r43446
Defines | Functions | Variables

MOD_weightvgproximity.c File Reference

#include "BLI_editVert.h"
#include "BLI_math.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_deform.h"
#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_shrinkwrap.h"
#include "BKE_texture.h"
#include "depsgraph_private.h"
#include "MEM_guardedalloc.h"
#include "MOD_util.h"
#include "MOD_weightvg_util.h"

Go to the source code of this file.

Defines

#define DO_PROFILE   0
#define OUT_OF_MEMORY()   ((void)printf("WeightVGProximity: Out of memory.\n"))

Functions

static void get_vert2geom_distance (int numVerts, float(*v_cos)[3], float *dist_v, float *dist_e, float *dist_f, DerivedMesh *target, const SpaceTransform *loc2trgt)
static void get_vert2ob_distance (int numVerts, float(*v_cos)[3], float *dist, Object *ob, Object *obr)
static float get_ob2ob_distance (const Object *ob, const Object *obr)
void do_map (float *weights, const int nidx, const float min_d, const float max_d, short mode)
static void initData (ModifierData *md)
static void copyData (ModifierData *md, ModifierData *target)
static CustomDataMask requiredDataMask (Object *UNUSED(ob), ModifierData *md)
static int dependsOnTime (ModifierData *md)
static void foreachObjectLink (ModifierData *md, Object *ob, void(*walk)(void *userData, Object *ob, Object **obpoin), void *userData)
static void foreachIDLink (ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
static void foreachTexLink (ModifierData *md, Object *ob, TexWalkFunc walk, void *userData)
static void updateDepgraph (ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene), Object *UNUSED(ob), DagNode *obNode)
static int isDisabled (ModifierData *md, int UNUSED(useRenderParams))
static DerivedMesh * applyModifier (ModifierData *md, Object *ob, DerivedMesh *derivedData, int UNUSED(useRenderParams), int UNUSED(isFinalCalc))
static DerivedMesh * applyModifierEM (ModifierData *md, Object *ob, struct EditMesh *UNUSED(editData), DerivedMesh *derivedData)

Variables

ModifierTypeInfo modifierType_WeightVGProximity

Detailed Description

Definition in file MOD_weightvgproximity.c.


Define Documentation

#define DO_PROFILE   0

Definition at line 31 of file MOD_weightvgproximity.c.

#define OUT_OF_MEMORY ( )    ((void)printf("WeightVGProximity: Out of memory.\n"))

Definition at line 64 of file MOD_weightvgproximity.c.

Referenced by get_vert2geom_distance().


Function Documentation

static DerivedMesh* applyModifier ( ModifierData *  md,
Object *  ob,
DerivedMesh *  derivedData,
int   UNUSEDuseRenderParams,
int   UNUSEDisFinalCalc 
) [static]

Definition at line 339 of file MOD_weightvgproximity.c.

References CD_MDEFORMVERT, CDDM_from_curve(), CDDM_from_editmesh(), CDDM_from_mesh(), copy_v3_v3(), CustomData_duplicate_referenced_layer(), Object::data, Object::defbase, defgroup_name_index(), WeightVGProximityModifierData::defgrp_name, defvert_find_index(), Object::derivedFinal, do_map(), Mesh::edit_mesh, ELEM3, WeightVGProximityModifierData::falloff_type, FALSE, ListBase::first, FLT_MAX, get_ob2ob_distance(), get_vert2geom_distance(), get_vert2ob_distance(), DerivedMesh::getNumVerts, DerivedMesh::getVertCos, i, if(), indices, WeightVGProximityModifierData::mask_constant, WeightVGProximityModifierData::mask_defgrp_name, WeightVGProximityModifierData::mask_tex_map_obj, WeightVGProximityModifierData::mask_tex_mapping, WeightVGProximityModifierData::mask_tex_use_channel, WeightVGProximityModifierData::mask_tex_uvlayer_name, WeightVGProximityModifierData::mask_texture, WeightVGProximityModifierData::max_dist, MEM_freeN(), MEM_mallocN(), WeightVGProximityModifierData::min_dist, minf(), MOD_WVG_PROXIMITY_GEOM_EDGES, MOD_WVG_PROXIMITY_GEOM_FACES, MOD_WVG_PROXIMITY_GEOM_VERTS, MOD_WVG_PROXIMITY_GEOMETRY, MOD_WVG_PROXIMITY_OBJECT, NULL, OB_CURVE, OB_FONT, OB_MESH, OB_SURF, WeightVGProximityModifierData::proximity_flags, WeightVGProximityModifierData::proximity_mode, WeightVGProximityModifierData::proximity_ob_target, DerivedMesh::release, space_transform_setup, TIMEIT_END, TIMEIT_START, TRUE, Object::type, DerivedMesh::vertData, MDeformWeight::weight, weightvg_do_mask(), and weightvg_update_vg().

Referenced by applyModifierEM().

static DerivedMesh* applyModifierEM ( ModifierData *  md,
Object *  ob,
struct EditMesh *  UNUSEDeditData,
DerivedMesh *  derivedData 
) [static]

Definition at line 520 of file MOD_weightvgproximity.c.

References applyModifier().

static void copyData ( ModifierData *  md,
ModifierData *  target 
) [static]
static int dependsOnTime ( ModifierData *  md) [static]
void do_map ( float *  weights,
const int  nidx,
const float  min_d,
const float  max_d,
short  mode 
)

Maps distances to weights, with an optionnal “smoothing” mapping.

Definition at line 189 of file MOD_weightvgproximity.c.

References ELEM, i, MOD_WVG_MAPPING_CURVE, MOD_WVG_MAPPING_NONE, NULL, and weightvg_do_map().

Referenced by applyModifier().

static void foreachIDLink ( ModifierData *  md,
Object *  ob,
IDWalkFunc  walk,
void *  userData 
) [static]
static void foreachObjectLink ( ModifierData *  md,
Object *  ob,
void(*)(void *userData, Object *ob, Object **obpoin)  walk,
void *  userData 
) [static]
static void foreachTexLink ( ModifierData *  md,
Object *  ob,
TexWalkFunc  walk,
void *  userData 
) [static]

Definition at line 301 of file MOD_weightvgproximity.c.

static float get_ob2ob_distance ( const Object *  ob,
const Object *  obr 
) [static]

Returns the real distance between an object and another reference object. Note that it works in final world space (i.e. with constraints etc. applied).

Definition at line 181 of file MOD_weightvgproximity.c.

References len_v3v3(), and Object::obmat.

Referenced by applyModifier().

static void get_vert2geom_distance ( int  numVerts,
float(*)  v_cos[3],
float *  dist_v,
float *  dist_e,
float *  dist_f,
DerivedMesh *  target,
const SpaceTransform *  loc2trgt 
) [static]
static void get_vert2ob_distance ( int  numVerts,
float(*)  v_cos[3],
float *  dist,
Object *  ob,
Object *  obr 
) [static]

Returns the real distance between a vertex and another reference object. Note that it works in final world space (i.e. with constraints etc. applied).

Definition at line 162 of file MOD_weightvgproximity.c.

References i, len_v3v3(), mul_v3_m4v3(), and Object::obmat.

Referenced by applyModifier().

static void initData ( ModifierData *  md) [static]
static int isDisabled ( ModifierData *  md,
int   UNUSEDuseRenderParams 
) [static]
static CustomDataMask requiredDataMask ( Object *  UNUSEDob,
ModifierData *  md 
) [static]
static void updateDepgraph ( ModifierData *  md,
DagForest *  forest,
struct Scene *  UNUSEDscene,
Object *  UNUSEDob,
DagNode *  obNode 
) [static]

Variable Documentation