Blender  V2.93
Functions
rigidbody.c File Reference

Blender-side interface and methods for dealing with Rigid Body simulations. More...

#include <float.h>
#include <limits.h>
#include <math.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include "CLG_log.h"
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "DNA_ID.h"
#include "DNA_collection_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_force_types.h"
#include "DNA_object_types.h"
#include "DNA_rigidbody_types.h"
#include "DNA_scene_types.h"
#include "BKE_collection.h"
#include "BKE_effect.h"
#include "BKE_global.h"
#include "BKE_layer.h"
#include "BKE_main.h"
#include "BKE_mesh.h"
#include "BKE_mesh_runtime.h"
#include "BKE_object.h"
#include "BKE_pointcache.h"
#include "BKE_report.h"
#include "BKE_rigidbody.h"
#include "BKE_scene.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"

Go to the source code of this file.

Functions

static void RB_dworld_remove_constraint (void *UNUSED(world), void *UNUSED(con))
 
static void RB_dworld_remove_body (void *UNUSED(world), void *UNUSED(body))
 
static void RB_dworld_delete (void *UNUSED(world))
 
static void RB_body_delete (void *UNUSED(body))
 
static void RB_shape_delete (void *UNUSED(shape))
 
static void RB_constraint_delete (void *UNUSED(con))
 
void BKE_rigidbody_free_world (Scene *scene)
 
void BKE_rigidbody_free_object (Object *ob, RigidBodyWorld *rbw)
 
void BKE_rigidbody_free_constraint (Object *ob)
 
bool BKE_rigidbody_is_affected_by_simulation (Object *ob)
 
void BKE_rigidbody_object_copy (Main *bmain, Object *ob_dst, const Object *ob_src, const int flag)
 
void BKE_rigidbody_validate_sim_world (Scene *scene, RigidBodyWorld *rbw, bool rebuild)
 
void BKE_rigidbody_calc_volume (Object *ob, float *r_vol)
 
void BKE_rigidbody_calc_center_of_mass (Object *ob, float r_center[3])
 
struct RigidBodyWorldBKE_rigidbody_create_world (Scene *scene)
 
struct RigidBodyWorldBKE_rigidbody_world_copy (RigidBodyWorld *rbw, const int flag)
 
void BKE_rigidbody_world_groups_relink (struct RigidBodyWorld *rbw)
 
void BKE_rigidbody_world_id_loop (struct RigidBodyWorld *rbw, RigidbodyWorldIDFunc func, void *userdata)
 
struct RigidBodyObBKE_rigidbody_create_object (Scene *scene, Object *ob, short type)
 
struct RigidBodyConBKE_rigidbody_create_constraint (Scene *scene, Object *ob, short type)
 
struct RigidBodyWorldBKE_rigidbody_get_world (Scene *scene)
 
void BKE_rigidbody_ensure_local_object (Main *bmain, Object *ob)
 
bool BKE_rigidbody_add_object (Main *bmain, Scene *scene, Object *ob, int type, ReportList *reports)
 
void BKE_rigidbody_remove_object (struct Main *bmain, Scene *scene, Object *ob, const bool free_us)
 
void BKE_rigidbody_remove_constraint (Main *bmain, Scene *scene, Object *ob, const bool free_us)
 
void BKE_rigidbody_sync_transforms (RigidBodyWorld *rbw, Object *ob, float ctime)
 
void BKE_rigidbody_aftertrans_update (Object *ob, float loc[3], float rot[3], float quat[4], float rotAxis[3], float rotAngle)
 
bool BKE_rigidbody_check_sim_running (RigidBodyWorld *rbw, float ctime)
 
void BKE_rigidbody_cache_reset (RigidBodyWorld *rbw)
 
void BKE_rigidbody_rebuild_world (Depsgraph *depsgraph, Scene *scene, float ctime)
 
void BKE_rigidbody_do_simulation (Depsgraph *depsgraph, Scene *scene, float ctime)
 
void BKE_rigidbody_objects_collection_validate (Scene *scene, RigidBodyWorld *rbw)
 
void BKE_rigidbody_constraints_collection_validate (Scene *scene, RigidBodyWorld *rbw)
 
void BKE_rigidbody_main_collection_object_add (Main *bmain, Collection *collection, Object *object)
 
void BKE_rigidbody_rebuild_sim (Depsgraph *depsgraph, Scene *scene)
 
void BKE_rigidbody_eval_simulation (Depsgraph *depsgraph, Scene *scene)
 
void BKE_rigidbody_object_sync_transforms (Depsgraph *depsgraph, Scene *scene, Object *ob)
 

Detailed Description

Blender-side interface and methods for dealing with Rigid Body simulations.

Definition in file rigidbody.c.

Function Documentation

◆ BKE_rigidbody_add_object()

bool BKE_rigidbody_add_object ( Main bmain,
Scene scene,
Object ob,
int  type,
ReportList reports 
)

Definition at line 2316 of file rigidbody.c.

References BKE_report(), and RPT_ERROR.

Referenced by ED_rigidbody_object_add().

◆ BKE_rigidbody_aftertrans_update()

void BKE_rigidbody_aftertrans_update ( Object ob,
float  loc[3],
float  rot[3],
float  quat[4],
float  rotAxis[3],
float  rotAngle 
)

Definition at line 2331 of file rigidbody.c.

Referenced by special_aftertrans_update__object().

◆ BKE_rigidbody_cache_reset()

void BKE_rigidbody_cache_reset ( RigidBodyWorld rbw)

Definition at line 2339 of file rigidbody.c.

◆ BKE_rigidbody_calc_center_of_mass()

void BKE_rigidbody_calc_center_of_mass ( Object ob,
float  r_center[3] 
)

Definition at line 2279 of file rigidbody.c.

References zero_v3().

◆ BKE_rigidbody_calc_volume()

void BKE_rigidbody_calc_volume ( Object ob,
float r_vol 
)

Definition at line 2273 of file rigidbody.c.

Referenced by rigidbody_objects_calc_mass_exec().

◆ BKE_rigidbody_check_sim_running()

bool BKE_rigidbody_check_sim_running ( RigidBodyWorld rbw,
float  ctime 
)

Definition at line 2335 of file rigidbody.c.

Referenced by ObjectToTransData(), and special_aftertrans_update__object().

◆ BKE_rigidbody_constraints_collection_validate()

void BKE_rigidbody_constraints_collection_validate ( Scene scene,
RigidBodyWorld rbw 
)

Definition at line 2351 of file rigidbody.c.

Referenced by do_versions_after_linking_280().

◆ BKE_rigidbody_create_constraint()

struct RigidBodyCon* BKE_rigidbody_create_constraint ( Scene scene,
Object ob,
short  type 
)

Definition at line 2303 of file rigidbody.c.

References NULL.

Referenced by ED_rigidbody_constraint_add().

◆ BKE_rigidbody_create_object()

struct RigidBodyOb* BKE_rigidbody_create_object ( Scene scene,
Object ob,
short  type 
)

Definition at line 2299 of file rigidbody.c.

References NULL.

◆ BKE_rigidbody_create_world()

struct RigidBodyWorld* BKE_rigidbody_create_world ( Scene scene)

Definition at line 2283 of file rigidbody.c.

References NULL.

Referenced by rigidbody_world_add_exec().

◆ BKE_rigidbody_do_simulation()

void BKE_rigidbody_do_simulation ( Depsgraph depsgraph,
Scene scene,
float  ctime 
)

Definition at line 2345 of file rigidbody.c.

Referenced by BKE_rigidbody_eval_simulation().

◆ BKE_rigidbody_ensure_local_object()

void BKE_rigidbody_ensure_local_object ( Main bmain,
Object ob 
)

Definition at line 2312 of file rigidbody.c.

Referenced by BKE_library_make_local().

◆ BKE_rigidbody_eval_simulation()

void BKE_rigidbody_eval_simulation ( Depsgraph depsgraph,
Scene scene 
)

◆ BKE_rigidbody_free_constraint()

void BKE_rigidbody_free_constraint ( Object ob)

◆ BKE_rigidbody_free_object()

void BKE_rigidbody_free_object ( Object ob,
RigidBodyWorld rbw 
)

◆ BKE_rigidbody_free_world()

void BKE_rigidbody_free_world ( Scene scene)

◆ BKE_rigidbody_get_world()

struct RigidBodyWorld* BKE_rigidbody_get_world ( Scene scene)

Definition at line 2307 of file rigidbody.c.

References NULL.

Referenced by ED_rigidbody_constraint_add(), and rigidbody_con_add_exec().

◆ BKE_rigidbody_is_affected_by_simulation()

bool BKE_rigidbody_is_affected_by_simulation ( Object ob)

◆ BKE_rigidbody_main_collection_object_add()

void BKE_rigidbody_main_collection_object_add ( Main bmain,
Collection collection,
Object object 
)

Definition at line 2354 of file rigidbody.c.

Referenced by collection_object_add().

◆ BKE_rigidbody_object_copy()

void BKE_rigidbody_object_copy ( Main bmain,
Object ob_dst,
const Object ob_src,
const int  flag 
)

Definition at line 2267 of file rigidbody.c.

◆ BKE_rigidbody_object_sync_transforms()

void BKE_rigidbody_object_sync_transforms ( Depsgraph depsgraph,
Scene scene,
Object ob 
)

◆ BKE_rigidbody_objects_collection_validate()

void BKE_rigidbody_objects_collection_validate ( Scene scene,
RigidBodyWorld rbw 
)

Definition at line 2348 of file rigidbody.c.

Referenced by do_versions_after_linking_280().

◆ BKE_rigidbody_rebuild_sim()

void BKE_rigidbody_rebuild_sim ( Depsgraph depsgraph,
Scene scene 
)

◆ BKE_rigidbody_rebuild_world()

void BKE_rigidbody_rebuild_world ( Depsgraph depsgraph,
Scene scene,
float  ctime 
)

Definition at line 2342 of file rigidbody.c.

Referenced by BKE_rigidbody_rebuild_sim().

◆ BKE_rigidbody_remove_constraint()

void BKE_rigidbody_remove_constraint ( Main bmain,
Scene scene,
Object ob,
const bool  free_us 
)

◆ BKE_rigidbody_remove_object()

void BKE_rigidbody_remove_object ( struct Main bmain,
Scene scene,
Object ob,
const bool  free_us 
)

Definition at line 2322 of file rigidbody.c.

Referenced by BKE_scene_remove_rigidbody_object(), and ED_rigidbody_object_remove().

◆ BKE_rigidbody_sync_transforms()

void BKE_rigidbody_sync_transforms ( RigidBodyWorld rbw,
Object ob,
float  ctime 
)

Definition at line 2328 of file rigidbody.c.

Referenced by BKE_rigidbody_object_sync_transforms(), and object_where_is_calc_ex().

◆ BKE_rigidbody_validate_sim_world()

void BKE_rigidbody_validate_sim_world ( Scene scene,
RigidBodyWorld rbw,
bool  rebuild 
)

Definition at line 2270 of file rigidbody.c.

◆ BKE_rigidbody_world_copy()

struct RigidBodyWorld* BKE_rigidbody_world_copy ( RigidBodyWorld rbw,
const int  flag 
)

Definition at line 2287 of file rigidbody.c.

References NULL.

Referenced by scene_copy_data().

◆ BKE_rigidbody_world_groups_relink()

void BKE_rigidbody_world_groups_relink ( struct RigidBodyWorld rbw)

Definition at line 2291 of file rigidbody.c.

Referenced by BKE_scene_groups_relink().

◆ BKE_rigidbody_world_id_loop()

void BKE_rigidbody_world_id_loop ( struct RigidBodyWorld rbw,
RigidbodyWorldIDFunc  func,
void *  userdata 
)

Definition at line 2294 of file rigidbody.c.

Referenced by scene_foreach_id().

◆ RB_body_delete()

static void RB_body_delete ( void *  UNUSEDbody)
static

Definition at line 94 of file rigidbody.c.

Referenced by BKE_rigidbody_free_object().

◆ RB_constraint_delete()

static void RB_constraint_delete ( void *  UNUSEDcon)
static

Definition at line 100 of file rigidbody.c.

Referenced by BKE_rigidbody_free_constraint().

◆ RB_dworld_delete()

static void RB_dworld_delete ( void *  UNUSEDworld)
static

Definition at line 91 of file rigidbody.c.

Referenced by BKE_rigidbody_free_world().

◆ RB_dworld_remove_body()

static void RB_dworld_remove_body ( void *  UNUSEDworld,
void *  UNUSEDbody 
)
static

Definition at line 88 of file rigidbody.c.

Referenced by BKE_rigidbody_free_object().

◆ RB_dworld_remove_constraint()

static void RB_dworld_remove_constraint ( void *  UNUSEDworld,
void *  UNUSEDcon 
)
static

Definition at line 85 of file rigidbody.c.

Referenced by BKE_rigidbody_free_world().

◆ RB_shape_delete()

static void RB_shape_delete ( void *  UNUSEDshape)
static

Definition at line 97 of file rigidbody.c.

Referenced by BKE_rigidbody_free_object().