Blender V2.61 - r43446
Defines | Functions

collision.c File Reference

#include "MEM_guardedalloc.h"
#include "BKE_cloth.h"
#include "DNA_cloth_types.h"
#include "DNA_group_types.h"
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "DNA_object_force.h"
#include "DNA_scene_types.h"
#include "DNA_meshdata_types.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_edgehash.h"
#include "BLI_utildefines.h"
#include "BLI_ghash.h"
#include "BLI_memarena.h"
#include "BLI_rand.h"
#include "BKE_DerivedMesh.h"
#include "BKE_global.h"
#include "BKE_scene.h"
#include "BKE_mesh.h"
#include "BKE_object.h"
#include "BKE_modifier.h"
#include "BLI_kdopbvh.h"
#include "BKE_collision.h"

Go to the source code of this file.

Defines

#define mySWAP(a, b)   do { double tmp = b ; b = a ; a = tmp ; } while(0)

Functions

void collision_move_object (CollisionModifierData *collmd, float step, float prevstep)
BVHTreebvhtree_build_from_mvert (MFace *mfaces, unsigned int numfaces, MVert *x, unsigned int UNUSED(numverts), float epsilon)
void bvhtree_update_from_mvert (BVHTree *bvhtree, MFace *faces, int numfaces, MVert *x, MVert *xnew, int UNUSED(numverts), int moving)
static void collision_compute_barycentric (float pv[3], float p1[3], float p2[3], float p3[3], float *w1, float *w2, float *w3)
DO_INLINE void collision_interpolateOnTriangle (float to[3], float v1[3], float v2[3], float v3[3], double w1, double w2, double w3)
static int cloth_collision_response_static (ClothModifierData *clmd, CollisionModifierData *collmd, CollPair *collpair, CollPair *collision_end)
static CollPaircloth_collision (ModifierData *md1, ModifierData *md2, BVHTreeOverlap *overlap, CollPair *collpair, float dt)
static void add_collision_object (Object ***objs, unsigned int *numobj, unsigned int *maxobj, Object *ob, Object *self, int level)
Object ** get_collisionobjects (Scene *scene, Object *self, Group *group, unsigned int *numcollobj)
static void add_collider_cache_object (ListBase **objs, Object *ob, Object *self, int level)
ListBaseget_collider_cache (Scene *scene, Object *self, Group *group)
void free_collider_cache (ListBase **colliders)
static void cloth_bvh_objcollisions_nearcheck (ClothModifierData *clmd, CollisionModifierData *collmd, CollPair **collisions, CollPair **collisions_index, int numresult, BVHTreeOverlap *overlap, double dt)
static int cloth_bvh_objcollisions_resolve (ClothModifierData *clmd, CollisionModifierData *collmd, CollPair *collisions, CollPair *collisions_index)
int cloth_bvh_objcollision (Object *ob, ClothModifierData *clmd, float step, float dt)

Detailed Description

Definition in file collision.c.


Define Documentation

#define mySWAP (   a,
 
)    do { double tmp = b ; b = a ; a = tmp ; } while(0)

gsl_poly_solve_cubic -

copied from SOLVE_CUBIC.C --> GSL

Definition at line 176 of file collision.c.


Function Documentation

static void add_collider_cache_object ( ListBase **  objs,
Object ob,
Object self,
int  level 
) [static]
static void add_collision_object ( Object ***  objs,
unsigned int *  numobj,
unsigned int *  maxobj,
Object ob,
Object self,
int  level 
) [static]
BVHTree* bvhtree_build_from_mvert ( MFace mfaces,
unsigned int  numfaces,
MVert x,
unsigned int   UNUSEDnumverts,
float  epsilon 
)
void bvhtree_update_from_mvert ( BVHTree bvhtree,
MFace faces,
int  numfaces,
MVert x,
MVert xnew,
int   UNUSEDnumverts,
int  moving 
)
int cloth_bvh_objcollision ( Object ob,
ClothModifierData clmd,
float  step,
float  dt 
)
static void cloth_bvh_objcollisions_nearcheck ( ClothModifierData clmd,
CollisionModifierData collmd,
CollPair **  collisions,
CollPair **  collisions_index,
int  numresult,
BVHTreeOverlap overlap,
double  dt 
) [static]
static int cloth_bvh_objcollisions_resolve ( ClothModifierData clmd,
CollisionModifierData collmd,
CollPair collisions,
CollPair collisions_index 
) [static]
static CollPair* cloth_collision ( ModifierData md1,
ModifierData md2,
BVHTreeOverlap overlap,
CollPair collpair,
float  dt 
) [static]
static int cloth_collision_response_static ( ClothModifierData clmd,
CollisionModifierData collmd,
CollPair collpair,
CollPair collision_end 
) [static]
static void collision_compute_barycentric ( float  pv[3],
float  p1[3],
float  p2[3],
float  p3[3],
float *  w1,
float *  w2,
float *  w3 
) [static]

Definition at line 450 of file collision.c.

References ABS, ALMOST_ZERO, simple_enum_gen::d, credits_svn_gen::e, INPR, and VECSUB.

Referenced by cloth_collision_response_static().

DO_INLINE void collision_interpolateOnTriangle ( float  to[3],
float  v1[3],
float  v2[3],
float  v3[3],
double  w1,
double  w2,
double  w3 
)

Definition at line 486 of file collision.c.

References VECADDMUL.

Referenced by cloth_collision_response_static().

void collision_move_object ( CollisionModifierData collmd,
float  step,
float  prevstep 
)
void free_collider_cache ( ListBase **  colliders)

Definition at line 2257 of file collision.c.

References BLI_freelistN(), MEM_freeN(), and NULL.

Referenced by dynamics_step(), eff_calc_visibility(), and hair_velocity_smoothing().

ListBase* get_collider_cache ( Scene scene,
Object self,
Group group 
) [read]
Object** get_collisionobjects ( Scene scene,
Object self,
Group group,
unsigned int *  numcollobj 
) [read]