|
Blender V4.3
|
Blender-side interface and methods for dealing with Rigid Body simulations. More...
#include <algorithm>#include <cfloat>#include <climits>#include <cmath>#include <cstddef>#include <cstdio>#include <cstring>#include "CLG_log.h"#include "MEM_guardedalloc.h"#include "BLI_listbase.h"#include "BLI_math_matrix.h"#include "BLI_math_rotation.h"#include "BLI_math_vector.h"#include "DNA_ID.h"#include "DNA_collection_types.h"#include "DNA_mesh_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.hh"#include "BKE_effect.h"#include "BKE_global.hh"#include "BKE_layer.hh"#include "BKE_main.hh"#include "BKE_mesh.hh"#include "BKE_mesh_runtime.hh"#include "BKE_object.hh"#include "BKE_pointcache.h"#include "BKE_report.hh"#include "BKE_rigidbody.h"#include "BKE_scene.hh"#include "DEG_depsgraph.hh"#include "DEG_depsgraph_query.hh"Go to the source code of this file.
Blender-side interface and methods for dealing with Rigid Body simulations.
Definition in file rigidbody.cc.
| bool BKE_rigidbody_add_object | ( | Main * | bmain, |
| Scene * | scene, | ||
| Object * | ob, | ||
| int | type, | ||
| ReportList * | reports ) |
Definition at line 2431 of file rigidbody.cc.
References BKE_report(), and RPT_ERROR.
Referenced by ED_rigidbody_object_add().
| void BKE_rigidbody_aftertrans_update | ( | struct Object * | ob, |
| float | loc[3], | ||
| float | rot[3], | ||
| float | quat[4], | ||
| float | rotAxis[3], | ||
| float | rotAngle ) |
Used when canceling transforms - return rigidbody and object to initial states.
Definition at line 2440 of file rigidbody.cc.
Referenced by special_aftertrans_update__object().
| void BKE_rigidbody_cache_reset | ( | RigidBodyWorld * | rbw | ) |
Definition at line 2448 of file rigidbody.cc.
Definition at line 2402 of file rigidbody.cc.
References zero_v3().
Helper function to calculate volume of rigid-body object.
TODO: allow a parameter to specify method used to calculate this?
Definition at line 2396 of file rigidbody.cc.
Referenced by rigidbody_objects_calc_mass_exec().
| bool BKE_rigidbody_check_sim_running | ( | RigidBodyWorld * | rbw, |
| float | ctime ) |
Definition at line 2444 of file rigidbody.cc.
Referenced by ObjectToTransData(), and special_aftertrans_update__object().
| void BKE_rigidbody_constraints_collection_validate | ( | Scene * | scene, |
| RigidBodyWorld * | rbw ) |
Definition at line 2452 of file rigidbody.cc.
Referenced by do_versions_after_linking_280().
| RigidBodyCon * BKE_rigidbody_create_constraint | ( | struct Scene * | scene, |
| struct Object * | ob, | ||
| short | type ) |
Add rigid body constraint to the specified object.
Definition at line 2420 of file rigidbody.cc.
Referenced by ED_rigidbody_constraint_add().
| RigidBodyOb * BKE_rigidbody_create_object | ( | struct Scene * | scene, |
| struct Object * | ob, | ||
| short | type ) |
Add rigid body settings to the specified object.
Definition at line 2416 of file rigidbody.cc.
| RigidBodyWorld * BKE_rigidbody_create_world | ( | struct Scene * | scene | ) |
Set up RigidBody world.
Create Blender-side settings data - physics objects not initialized yet.
Definition at line 2406 of file rigidbody.cc.
Referenced by rigidbody_world_add_exec().
| void BKE_rigidbody_do_simulation | ( | struct Depsgraph * | depsgraph, |
| struct Scene * | scene, | ||
| float | ctime ) |
Run RigidBody simulation for the specified physics world.
Definition at line 2450 of file rigidbody.cc.
Referenced by BKE_rigidbody_eval_simulation().
Definition at line 2429 of file rigidbody.cc.
Referenced by BKE_library_make_local(), and loose_data_instantiate_object_rigidbody_postprocess().
| void BKE_rigidbody_eval_simulation | ( | Depsgraph * | depsgraph, |
| Scene * | scene ) |
Definition at line 2476 of file rigidbody.cc.
References BKE_rigidbody_do_simulation(), BKE_scene_check_rigidbody_active(), DEG_debug_print_eval_time(), DEG_get_ctime(), and depsgraph.
| void BKE_rigidbody_free_constraint | ( | struct Object * | ob | ) |
Free rigid-body constraint and simulation instance.
Definition at line 197 of file rigidbody.cc.
References MEM_freeN(), RigidBodyCon::physics_constraint, RB_constraint_delete(), and Object::rigidbody_constraint.
Referenced by object_free_data().
| void BKE_rigidbody_free_object | ( | struct Object * | ob, |
| struct RigidBodyWorld * | rbw ) |
Free rigid-body settings and simulation instances.
Definition at line 146 of file rigidbody.cc.
References G_MAIN, Object::id, ID_TAG_COPIED_ON_EVAL, MEM_freeN(), RigidBodyOb_Shared::physics_object, RigidBodyOb_Shared::physics_shape, RigidBodyWorld_Shared::physics_world, RB_body_delete(), RB_dworld_remove_body(), RB_shape_delete(), Object::rigidbody_object, RigidBodyOb::shared, RigidBodyWorld::shared, and ID::tag.
Referenced by BKE_rigidbody_free_world(), and object_free_data().
| void BKE_rigidbody_free_world | ( | struct Scene * | scene | ) |
Free rigid-body world.
Definition at line 89 of file rigidbody.cc.
References BKE_ptcache_free_list(), BKE_rigidbody_free_object(), RigidBodyWorld::constraints, RigidBodyWorld::effector_weights, FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN, FOREACH_COLLECTION_OBJECT_RECURSIVE_END, free(), RigidBodyWorld::group, ID_TAG_COPIED_ON_EVAL, MEM_freeN(), RigidBodyWorld::objects, RigidBodyCon::physics_constraint, RigidBodyWorld_Shared::physics_world, RigidBodyWorld_Shared::pointcache, RigidBodyWorld_Shared::ptcaches, RB_dworld_delete(), RB_dworld_remove_constraint(), and RigidBodyWorld::shared.
Referenced by rigidbody_world_remove_exec(), and scene_free_data().
| RigidBodyWorld * BKE_rigidbody_get_world | ( | struct Scene * | scene | ) |
Get RigidBody world for the given scene, creating one if needed
| scene | Scene to find active Rigid Body world for. |
Definition at line 2424 of file rigidbody.cc.
Referenced by ED_rigidbody_constraint_add(), and rigidbody_con_add_exec().
| bool BKE_rigidbody_is_affected_by_simulation | ( | Object * | ob | ) |
Definition at line 217 of file rigidbody.cc.
References RigidBodyOb::flag, Object::parent, RB_SHAPE_COMPOUND, RBO_FLAG_KINEMATIC, RBO_TYPE_PASSIVE, Object::rigidbody_object, RigidBodyOb::shape, and RigidBodyOb::type.
| void BKE_rigidbody_main_collection_object_add | ( | struct Main * | bmain, |
| struct Collection * | collection, | ||
| struct Object * | object ) |
Ensure object added to collection gets RB data if that collection is a RB one.
Definition at line 2453 of file rigidbody.cc.
Referenced by collection_object_add().
| void BKE_rigidbody_object_copy | ( | Main * | bmain, |
| Object * | ob_dst, | ||
| const Object * | ob_src, | ||
| const int | flag ) |
Definition at line 2391 of file rigidbody.cc.
Definition at line 2488 of file rigidbody.cc.
References BKE_rigidbody_sync_transforms(), DEG_debug_print_eval_time(), DEG_get_ctime(), depsgraph, Object::id, and ID::name.
| void BKE_rigidbody_objects_collection_validate | ( | struct Main * | bmain, |
| struct Scene * | scene, | ||
| struct RigidBodyWorld * | rbw ) |
Ensure newly set collections' objects all have required data.
Definition at line 2451 of file rigidbody.cc.
Referenced by do_versions_after_linking_280().
| void BKE_rigidbody_rebuild_sim | ( | Depsgraph * | depsgraph, |
| Scene * | scene ) |
Definition at line 2466 of file rigidbody.cc.
References BKE_rigidbody_rebuild_world(), BKE_scene_check_rigidbody_active(), DEG_debug_print_eval_time(), DEG_get_ctime(), and depsgraph.
| void BKE_rigidbody_rebuild_world | ( | struct Depsgraph * | depsgraph, |
| struct Scene * | scene, | ||
| float | ctime ) |
Rebuild rigid body world.
NOTE: this needs to be called before frame update to work correctly.
Definition at line 2449 of file rigidbody.cc.
Referenced by BKE_rigidbody_rebuild_sim().
| void BKE_rigidbody_remove_constraint | ( | Main * | bmain, |
| Scene * | scene, | ||
| Object * | ob, | ||
| const bool | free_us ) |
Definition at line 2438 of file rigidbody.cc.
Referenced by BKE_scene_remove_rigidbody_object(), and ED_rigidbody_constraint_remove().
Definition at line 2437 of file rigidbody.cc.
Referenced by BKE_scene_remove_rigidbody_object(), and ED_rigidbody_object_remove().
| void BKE_rigidbody_sync_transforms | ( | struct RigidBodyWorld * | rbw, |
| struct Object * | ob, | ||
| float | ctime ) |
Sync rigid body and object transformations.
Definition at line 2439 of file rigidbody.cc.
Referenced by BKE_rigidbody_object_sync_transforms(), and object_where_is_calc_ex().
| void BKE_rigidbody_validate_sim_world | ( | struct Scene * | scene, |
| struct RigidBodyWorld * | rbw, | ||
| bool | rebuild ) |
'validate' (i.e. make new or replace old) Physics-Engine objects. Create physics sim world given RigidBody world settings
Definition at line 2394 of file rigidbody.cc.
| RigidBodyWorld * BKE_rigidbody_world_copy | ( | struct RigidBodyWorld * | rbw, |
| int | flag ) |
| void BKE_rigidbody_world_groups_relink | ( | RigidBodyWorld * | rbw | ) |
Definition at line 2414 of file rigidbody.cc.
Referenced by BKE_scene_groups_relink().
| void BKE_rigidbody_world_id_loop | ( | RigidBodyWorld * | rbw, |
| RigidbodyWorldIDFunc | func, | ||
| void * | userdata ) |
Definition at line 2415 of file rigidbody.cc.
Referenced by scene_foreach_id().
|
static |
Definition at line 83 of file rigidbody.cc.
Referenced by BKE_rigidbody_free_object().
|
static |
Definition at line 85 of file rigidbody.cc.
Referenced by BKE_rigidbody_free_constraint().
|
static |
Definition at line 82 of file rigidbody.cc.
Referenced by BKE_rigidbody_free_world().
|
static |
Definition at line 81 of file rigidbody.cc.
Referenced by BKE_rigidbody_free_object().
|
static |
Definition at line 80 of file rigidbody.cc.
Referenced by BKE_rigidbody_free_world().
|
static |
Definition at line 84 of file rigidbody.cc.
Referenced by BKE_rigidbody_free_object().