48 "Object is directly controlled by simulation results"},
53 "Object is directly controlled by animation system"},
63 "Box-like shapes (i.e. cubes), including planes (i.e. ground planes)"},
72 "A mesh-like surface encompassing (i.e. shrinkwrap over) all vertices (best results with "
78 "Mesh consisting of triangles only, allowing for more detailed interactions than convex "
84 "Combines all of its direct rigid body children into one rigid object"},
90 {
RBC_TYPE_FIXED,
"FIXED", ICON_NONE,
"Fixed",
"Glue rigid bodies together"},
95 "Constrain rigid bodies to move around common pivot point"},
96 {
RBC_TYPE_HINGE,
"HINGE", ICON_NONE,
"Hinge",
"Restrict rigid body rotation to one axis"},
101 "Restrict rigid body translation to one axis"},
106 "Restrict rigid body translation and rotation to one axis"},
111 "Restrict translation and rotation to specified axes"},
116 "Restrict translation and rotation to specified axes with springs"},
117 {
RBC_TYPE_MOTOR,
"MOTOR", ICON_NONE,
"Motor",
"Drive rigid body around or along an axis"},
127 "Spring implementation used in blender 2.7. Damping is capped at 1.0"},
132 "New implementation available since 2.8"},
140 {
RBO_MESH_DEFORM,
"DEFORM", 0,
"Deform",
"Deformations (shape keys, deform modifiers)"},
170 static void rna_RigidBodyWorld_num_solver_iterations_set(
PointerRNA *
ptr,
int value)
183 static void rna_RigidBodyWorld_split_impulse_set(
PointerRNA *
ptr,
bool value)
196 static void rna_RigidBodyWorld_objects_collection_update(
Main *bmain,
202 rna_RigidBodyWorld_reset(bmain,
scene,
ptr);
205 static void rna_RigidBodyWorld_constraints_collection_update(
Main *bmain,
211 rna_RigidBodyWorld_reset(bmain,
scene,
ptr);
227 rna_RigidBodyOb_reset(bmain,
scene,
ptr);
248 rna_RigidBodyOb_reset(bmain,
scene,
ptr);
260 static void rna_RigidBodyOb_type_set(
PointerRNA *
ptr,
int value)
268 static void rna_RigidBodyOb_shape_set(
PointerRNA *
ptr,
int value)
276 static void rna_RigidBodyOb_disabled_set(
PointerRNA *
ptr,
bool value)
292 static void rna_RigidBodyOb_mass_set(
PointerRNA *
ptr,
float value)
306 static void rna_RigidBodyOb_friction_set(
PointerRNA *
ptr,
float value)
319 static void rna_RigidBodyOb_restitution_set(
PointerRNA *
ptr,
float value)
331 static void rna_RigidBodyOb_collision_margin_set(
PointerRNA *
ptr,
float value)
344 static void rna_RigidBodyOb_collision_collections_set(
PointerRNA *
ptr,
const bool *values)
349 for (i = 0; i < 20; i++) {
360 static void rna_RigidBodyOb_kinematic_state_set(
PointerRNA *
ptr,
bool value)
376 static void rna_RigidBodyOb_activation_state_set(
PointerRNA *
ptr,
bool value)
390 static void rna_RigidBodyOb_linear_sleepThresh_set(
PointerRNA *
ptr,
float value)
404 static void rna_RigidBodyOb_angular_sleepThresh_set(
PointerRNA *
ptr,
float value)
418 static void rna_RigidBodyOb_linear_damping_set(
PointerRNA *
ptr,
float value)
432 static void rna_RigidBodyOb_angular_damping_set(
PointerRNA *
ptr,
float value)
452 static void rna_RigidBodyCon_type_set(
PointerRNA *
ptr,
int value)
460 static void rna_RigidBodyCon_spring_type_set(
PointerRNA *
ptr,
int value)
468 static void rna_RigidBodyCon_enabled_set(
PointerRNA *
ptr,
bool value)
481 static void rna_RigidBodyCon_disable_collisions_set(
PointerRNA *
ptr,
bool value)
490 static void rna_RigidBodyCon_use_breaking_set(
PointerRNA *
ptr,
bool value)
512 static void rna_RigidBodyCon_breaking_threshold_set(
PointerRNA *
ptr,
float value)
525 static void rna_RigidBodyCon_override_solver_iterations_set(
PointerRNA *
ptr,
bool value)
547 static void rna_RigidBodyCon_num_solver_iterations_set(
PointerRNA *
ptr,
int value)
561 static void rna_RigidBodyCon_do_set_spring_stiffness(
RigidBodyCon *rbc,
579 static void rna_RigidBodyCon_spring_stiffness_x_set(
PointerRNA *
ptr,
float value)
590 static void rna_RigidBodyCon_spring_stiffness_y_set(
PointerRNA *
ptr,
float value)
601 static void rna_RigidBodyCon_spring_stiffness_z_set(
PointerRNA *
ptr,
float value)
612 static void rna_RigidBodyCon_spring_stiffness_ang_x_set(
PointerRNA *
ptr,
float value)
623 static void rna_RigidBodyCon_spring_stiffness_ang_y_set(
PointerRNA *
ptr,
float value)
634 static void rna_RigidBodyCon_spring_stiffness_ang_z_set(
PointerRNA *
ptr,
float value)
646 static void rna_RigidBodyCon_do_set_spring_damping(
RigidBodyCon *rbc,
664 static void rna_RigidBodyCon_spring_damping_x_set(
PointerRNA *
ptr,
float value)
675 static void rna_RigidBodyCon_spring_damping_y_set(
PointerRNA *
ptr,
float value)
685 static void rna_RigidBodyCon_spring_damping_z_set(
PointerRNA *
ptr,
float value)
695 static void rna_RigidBodyCon_spring_damping_ang_x_set(
PointerRNA *
ptr,
float value)
706 static void rna_RigidBodyCon_spring_damping_ang_y_set(
PointerRNA *
ptr,
float value)
716 static void rna_RigidBodyCon_spring_damping_ang_z_set(
PointerRNA *
ptr,
float value)
726 static void rna_RigidBodyCon_motor_lin_max_impulse_set(
PointerRNA *
ptr,
float value)
740 static void rna_RigidBodyCon_use_motor_lin_set(
PointerRNA *
ptr,
bool value)
755 static void rna_RigidBodyCon_use_motor_ang_set(
PointerRNA *
ptr,
bool value)
770 static void rna_RigidBodyCon_motor_lin_target_velocity_set(
PointerRNA *
ptr,
float value)
784 static void rna_RigidBodyCon_motor_ang_max_impulse_set(
PointerRNA *
ptr,
float value)
798 static void rna_RigidBodyCon_motor_ang_target_velocity_set(
PointerRNA *
ptr,
float value)
813 static void rna_RigidBodyWorld_convex_sweep_test(
RigidBodyWorld *rbw,
838 "A non convex collision shape was passed to the function, use only convex "
846 "Rigidbody world was not properly initialized, need to step the simulation first");
849 UNUSED_VARS(rbw, reports,
object, ray_start, ray_end, r_location, r_hitpoint, r_normal, r_hit);
872 srna,
"Rigid Body World",
"Self-contained rigid body simulation environment and settings");
882 prop,
"Collection",
"Collection containing objects participating in this simulation");
890 prop,
"Constraints",
"Collection containing rigid body constraint objects");
916 "Substeps Per Frame",
917 "Number of simulation steps taken per frame (higher values are more accurate "
931 "Number of constraint solver iterations made per simulation step (higher values are more "
932 "accurate but slower)");
942 "Reduce extra velocity that can build up when objects collide (lowers simulation "
943 "stability a little so use only when necessary)");
960 func =
RNA_def_function(srna,
"convex_sweep_test",
"rna_RigidBodyWorld_convex_sweep_test");
962 func,
"Sweep test convex rigidbody against the current rigidbody world");
965 func,
"object",
"Object",
"",
"Rigidbody object with a convex collision shape");
980 "The hit location of this sweep test",
992 "The hit location of this sweep test",
1004 "The face normal at the sweep test hit location",
1015 "If the function has found collision point, value is 1, otherwise 0",
1029 srna,
"Rigid Body Object",
"Settings for object participating in Rigid Body Simulation");
1045 prop,
"Mesh Source",
"Source of the mesh used to create collision shape");
1061 prop,
"Collision Shape",
"Collision Shape of object in Rigid Body Simulations");
1069 prop,
"Kinematic",
"Allow rigid body to be controlled by the animation system");
1096 "Enable Deactivation",
1097 "Enable deactivation of resting rigid bodies (increases performance and stability "
1098 "but can cause glitches)");
1104 prop,
"Start Deactivated",
"Deactivate rigid body at the start of the simulation");
1111 prop, FLT_MIN, FLT_MAX);
1115 "Linear Velocity Deactivation Threshold",
1116 "Linear Velocity below which simulation stops simulating object");
1122 prop, FLT_MIN, FLT_MAX);
1126 "Angular Velocity Deactivation Threshold",
1127 "Angular Velocity below which simulation stops simulating object");
1137 prop,
"Linear Damping",
"Amount of linear velocity that is lost over time");
1146 prop,
"Angular Damping",
"Amount of angular velocity that is lost over time");
1167 "Tendency of object to bounce after colliding with another "
1168 "(0 = stays still, 1 = perfectly elastic)");
1178 "Use custom collision margin (some shapes will have a visible gap around them)");
1190 "Threshold of distance near surface where collisions are still considered "
1191 "(best results when non-zero)");
1199 prop,
"Collision Collections",
"Collision collections rigid body belongs to");
1212 "Rigid Body Constraint",
1213 "Constraint influencing Objects inside Rigid Body Simulation");
1243 prop,
"Disable Collisions",
"Disable collisions between constrained rigid bodies");
1265 prop,
"Breakable",
"Constraint can be broken if it receives an impulse above the threshold");
1275 "Breaking Threshold",
1276 "Impulse threshold that must be reached for the constraint to break");
1284 "Override Solver Iterations",
1285 "Override the number of solver iterations for this constraint");
1296 "Solver Iterations",
1297 "Number of constraint solver iterations made per simulation step (higher values are more "
1298 "accurate but slower)");
void BKE_report(ReportList *reports, ReportType type, const char *message)
API for Blender-side Rigid Body stuff.
#define RBO_GET_MASS(rbo)
#define RBO_GET_MARGIN(rbo)
void BKE_rigidbody_cache_reset(struct RigidBodyWorld *rbw)
void BKE_rigidbody_constraints_collection_validate(struct Scene *scene, struct RigidBodyWorld *rbw)
void BKE_rigidbody_objects_collection_validate(struct Scene *scene, struct RigidBodyWorld *rbw)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
#define SET_FLAG_FROM_TEST(value, test, flag)
void DEG_relations_tag_update(struct Main *bmain)
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
Types and defines for representing Rigid Body entities.
@ RBW_FLAG_USE_SPLIT_IMPULSE
@ RBO_FLAG_START_DEACTIVATED
@ RBO_FLAG_NEEDS_VALIDATE
@ RBO_FLAG_USE_DEACTIVATION
@ RBC_FLAG_NEEDS_VALIDATE
@ RBC_FLAG_USE_SPRING_ANG_Y
@ RBC_FLAG_USE_SPRING_ANG_X
@ RBC_FLAG_USE_LIMIT_ANG_X
@ RBC_FLAG_USE_LIMIT_LIN_Y
@ RBC_FLAG_USE_LIMIT_ANG_Y
@ RBC_FLAG_DISABLE_COLLISIONS
@ RBC_FLAG_OVERRIDE_SOLVER_ITERATIONS
@ RBC_FLAG_USE_LIMIT_LIN_X
@ RBC_FLAG_USE_SPRING_ANG_Z
@ RBC_FLAG_USE_LIMIT_LIN_Z
@ RBC_FLAG_USE_LIMIT_ANG_Z
Rigid Body API for interfacing with external Physics Engines.
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
void RB_constraint_set_max_impulse_motor(rbConstraint *con, float max_impulse_lin, float max_impulse_ang)
void RB_dworld_set_solver_iterations(rbDynamicsWorld *world, int num_solver_iterations)
void RB_dworld_set_split_impulse(rbDynamicsWorld *world, int split_impulse)
void RB_constraint_set_stiffness_6dof_spring(rbConstraint *con, int axis, float stiffness)
void RB_body_set_restitution(rbRigidBody *object, float value)
void RB_body_set_friction(rbRigidBody *object, float value)
void RB_body_set_mass(rbRigidBody *object, float value)
void RB_body_set_activation_state(rbRigidBody *object, int use_deactivation)
void RB_constraint_set_damping_6dof_spring(rbConstraint *con, int axis, float damping)
void RB_constraint_set_enabled(rbConstraint *con, int enabled)
void RB_body_set_angular_sleep_thresh(rbRigidBody *object, float value)
void RB_constraint_set_stiffness_6dof_spring2(rbConstraint *con, int axis, float stiffness)
void RB_body_set_angular_damping(rbRigidBody *object, float value)
void RB_constraint_set_breaking_threshold(rbConstraint *con, float threshold)
void RB_world_convex_sweep_test(rbDynamicsWorld *world, rbRigidBody *object, const float loc_start[3], const float loc_end[3], float v_location[3], float v_hitpoint[3], float v_normal[3], int *r_hit)
void RB_constraint_set_enable_motor(rbConstraint *con, int enable_lin, int enable_ang)
void RB_body_set_linear_damping(rbRigidBody *object, float value)
void RB_constraint_set_solver_iterations(rbConstraint *con, int num_solver_iterations)
void RB_constraint_set_damping_6dof_spring2(rbConstraint *con, int axis, float damping)
void RB_shape_set_margin(rbCollisionShape *shape, float value)
void RB_body_set_linear_sleep_thresh(rbRigidBody *object, float value)
void RB_body_set_kinematic_state(rbRigidBody *object, int kinematic)
void RB_constraint_set_target_velocity_motor(rbConstraint *con, float velocity_lin, float velocity_ang)
PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *data)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_property_float_default(PropertyRNA *prop, float value)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_function_output(FunctionRNA *UNUSED(func), PropertyRNA *ret)
void RNA_def_property_boolean_default(PropertyRNA *prop, bool value)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
PropertyRNA * RNA_def_float_vector(StructOrFunctionRNA *cont_, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
void RNA_def_property_int_default(PropertyRNA *prop, int value)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_rigidbody(BlenderRNA *brna)
const EnumPropertyItem rna_enum_rigidbody_object_type_items[]
const EnumPropertyItem rna_enum_rigidbody_object_shape_items[]
static void rna_def_rigidbody_object(BlenderRNA *brna)
const EnumPropertyItem rna_enum_rigidbody_constraint_type_items[]
static void rna_def_rigidbody_world(BlenderRNA *brna)
static void rna_def_rigidbody_constraint(BlenderRNA *brna)
static const EnumPropertyItem rigidbody_mesh_source_items[]
static const EnumPropertyItem rna_enum_rigidbody_constraint_spring_type_items[]
float motor_lin_target_velocity
float motor_ang_max_impulse
float spring_stiffness_ang_z
float motor_ang_target_velocity
short num_solver_iterations
float spring_damping_ang_z
float spring_damping_ang_y
float motor_lin_max_impulse
float spring_damping_ang_x
float spring_stiffness_ang_y
void * physics_constraint
float spring_stiffness_ang_x
struct RigidBodyOb_Shared * shared
struct PointCache * pointcache
short num_solver_iterations
struct RigidBodyWorld_Shared * shared
struct RigidBodyWorld * rigidbody_world
void WM_main_add_notifier(unsigned int type, void *reference)