34 "Object is directly controlled by simulation results"},
39 "Object is directly controlled by animation system"},
49 "Box-like shapes (i.e. cubes), including planes (i.e. ground planes)"},
58 "A mesh-like surface encompassing (i.e. shrinkwrap over) all vertices (best results with "
64 "Mesh consisting of triangles only, allowing for more detailed interactions than convex "
70 "Combines all of its direct rigid body children into one rigid object"},
76 {
RBC_TYPE_FIXED,
"FIXED", ICON_NONE,
"Fixed",
"Glue rigid bodies together"},
81 "Constrain rigid bodies to move around common pivot point"},
82 {
RBC_TYPE_HINGE,
"HINGE", ICON_NONE,
"Hinge",
"Restrict rigid body rotation to one axis"},
87 "Restrict rigid body translation to one axis"},
92 "Restrict rigid body translation and rotation to one axis"},
97 "Restrict translation and rotation to specified axes"},
102 "Restrict translation and rotation to specified axes with springs"},
103 {
RBC_TYPE_MOTOR,
"MOTOR", ICON_NONE,
"Motor",
"Drive rigid body around or along an axis"},
113 "Spring implementation used in blender 2.7. Damping is capped at 1.0"},
118 "New implementation available since 2.8"},
126 {
RBO_MESH_DEFORM,
"DEFORM", 0,
"Deform",
"Deformations (shape keys, deform modifiers)"},
156 static void rna_RigidBodyWorld_num_solver_iterations_set(
PointerRNA *
ptr,
int value)
169 static void rna_RigidBodyWorld_split_impulse_set(
PointerRNA *
ptr,
bool value)
182 static void rna_RigidBodyWorld_objects_collection_update(
Main *bmain,
188 rna_RigidBodyWorld_reset(bmain,
scene,
ptr);
191 static void rna_RigidBodyWorld_constraints_collection_update(
Main *bmain,
197 rna_RigidBodyWorld_reset(bmain,
scene,
ptr);
214 rna_RigidBodyOb_reset(bmain,
scene,
ptr);
237 rna_RigidBodyOb_reset(bmain,
scene,
ptr);
249 static void rna_RigidBodyOb_type_set(
PointerRNA *
ptr,
int value)
257 static void rna_RigidBodyOb_shape_set(
PointerRNA *
ptr,
int value)
265 static void rna_RigidBodyOb_disabled_set(
PointerRNA *
ptr,
bool value)
281 static void rna_RigidBodyOb_mass_set(
PointerRNA *
ptr,
float value)
295 static void rna_RigidBodyOb_friction_set(
PointerRNA *
ptr,
float value)
308 static void rna_RigidBodyOb_restitution_set(
PointerRNA *
ptr,
float value)
320 static void rna_RigidBodyOb_collision_margin_set(
PointerRNA *
ptr,
float value)
333 static void rna_RigidBodyOb_collision_collections_set(
PointerRNA *
ptr,
const bool *values)
338 for (i = 0; i < 20; i++) {
349 static void rna_RigidBodyOb_kinematic_state_set(
PointerRNA *
ptr,
bool value)
365 static void rna_RigidBodyOb_activation_state_set(
PointerRNA *
ptr,
bool value)
379 static void rna_RigidBodyOb_linear_sleepThresh_set(
PointerRNA *
ptr,
float value)
393 static void rna_RigidBodyOb_angular_sleepThresh_set(
PointerRNA *
ptr,
float value)
407 static void rna_RigidBodyOb_linear_damping_set(
PointerRNA *
ptr,
float value)
421 static void rna_RigidBodyOb_angular_damping_set(
PointerRNA *
ptr,
float value)
441 static void rna_RigidBodyCon_type_set(
PointerRNA *
ptr,
int value)
449 static void rna_RigidBodyCon_spring_type_set(
PointerRNA *
ptr,
int value)
457 static void rna_RigidBodyCon_enabled_set(
PointerRNA *
ptr,
bool value)
470 static void rna_RigidBodyCon_disable_collisions_set(
PointerRNA *
ptr,
bool value)
479 static void rna_RigidBodyCon_use_breaking_set(
PointerRNA *
ptr,
bool value)
501 static void rna_RigidBodyCon_breaking_threshold_set(
PointerRNA *
ptr,
float value)
514 static void rna_RigidBodyCon_override_solver_iterations_set(
PointerRNA *
ptr,
bool value)
536 static void rna_RigidBodyCon_num_solver_iterations_set(
PointerRNA *
ptr,
int value)
550 static void rna_RigidBodyCon_do_set_spring_stiffness(
RigidBodyCon *rbc,
568 static void rna_RigidBodyCon_spring_stiffness_x_set(
PointerRNA *
ptr,
float value)
579 static void rna_RigidBodyCon_spring_stiffness_y_set(
PointerRNA *
ptr,
float value)
590 static void rna_RigidBodyCon_spring_stiffness_z_set(
PointerRNA *
ptr,
float value)
601 static void rna_RigidBodyCon_spring_stiffness_ang_x_set(
PointerRNA *
ptr,
float value)
612 static void rna_RigidBodyCon_spring_stiffness_ang_y_set(
PointerRNA *
ptr,
float value)
623 static void rna_RigidBodyCon_spring_stiffness_ang_z_set(
PointerRNA *
ptr,
float value)
635 static void rna_RigidBodyCon_do_set_spring_damping(
RigidBodyCon *rbc,
653 static void rna_RigidBodyCon_spring_damping_x_set(
PointerRNA *
ptr,
float value)
664 static void rna_RigidBodyCon_spring_damping_y_set(
PointerRNA *
ptr,
float value)
674 static void rna_RigidBodyCon_spring_damping_z_set(
PointerRNA *
ptr,
float value)
684 static void rna_RigidBodyCon_spring_damping_ang_x_set(
PointerRNA *
ptr,
float value)
695 static void rna_RigidBodyCon_spring_damping_ang_y_set(
PointerRNA *
ptr,
float value)
705 static void rna_RigidBodyCon_spring_damping_ang_z_set(
PointerRNA *
ptr,
float value)
715 static void rna_RigidBodyCon_motor_lin_max_impulse_set(
PointerRNA *
ptr,
float value)
729 static void rna_RigidBodyCon_use_motor_lin_set(
PointerRNA *
ptr,
bool value)
744 static void rna_RigidBodyCon_use_motor_ang_set(
PointerRNA *
ptr,
bool value)
759 static void rna_RigidBodyCon_motor_lin_target_velocity_set(
PointerRNA *
ptr,
float value)
773 static void rna_RigidBodyCon_motor_ang_max_impulse_set(
PointerRNA *
ptr,
float value)
787 static void rna_RigidBodyCon_motor_ang_target_velocity_set(
PointerRNA *
ptr,
float value)
802 static void rna_RigidBodyWorld_convex_sweep_test(
RigidBodyWorld *rbw,
827 "A non convex collision shape was passed to the function, use only convex "
835 "Rigidbody world was not properly initialized, need to step the simulation first");
838 UNUSED_VARS(rbw, reports,
object, ray_start, ray_end, r_location, r_hitpoint, r_normal, r_hit);
861 srna,
"Rigid Body World",
"Self-contained rigid body simulation environment and settings");
871 prop,
"Collection",
"Collection containing objects participating in this simulation");
879 prop,
"Constraints",
"Collection containing rigid body constraint objects");
905 "Substeps Per Frame",
906 "Number of simulation steps taken per frame (higher values are more accurate "
920 "Number of constraint solver iterations made per simulation step (higher values are more "
921 "accurate but slower)");
931 "Reduce extra velocity that can build up when objects collide (lowers simulation "
932 "stability a little so use only when necessary)");
950 func =
RNA_def_function(srna,
"convex_sweep_test",
"rna_RigidBodyWorld_convex_sweep_test");
952 func,
"Sweep test convex rigidbody against the current rigidbody world");
955 func,
"object",
"Object",
"",
"Rigidbody object with a convex collision shape");
970 "The hit location of this sweep test",
982 "The hit location of this sweep test",
994 "The face normal at the sweep test hit location",
1005 "If the function has found collision point, value is 1, otherwise 0",
1019 srna,
"Rigid Body Object",
"Settings for object participating in Rigid Body Simulation");
1035 prop,
"Mesh Source",
"Source of the mesh used to create collision shape");
1051 prop,
"Collision Shape",
"Collision Shape of object in Rigid Body Simulations");
1059 prop,
"Kinematic",
"Allow rigid body to be controlled by the animation system");
1086 "Enable Deactivation",
1087 "Enable deactivation of resting rigid bodies (increases performance and stability "
1088 "but can cause glitches)");
1094 prop,
"Start Deactivated",
"Deactivate rigid body at the start of the simulation");
1101 prop, FLT_MIN, FLT_MAX);
1105 "Linear Velocity Deactivation Threshold",
1106 "Linear Velocity below which simulation stops simulating object");
1112 prop, FLT_MIN, FLT_MAX);
1116 "Angular Velocity Deactivation Threshold",
1117 "Angular Velocity below which simulation stops simulating object");
1127 prop,
"Linear Damping",
"Amount of linear velocity that is lost over time");
1136 prop,
"Angular Damping",
"Amount of angular velocity that is lost over time");
1157 "Tendency of object to bounce after colliding with another "
1158 "(0 = stays still, 1 = perfectly elastic)");
1168 "Use custom collision margin (some shapes will have a visible gap around them)");
1180 "Threshold of distance near surface where collisions are still considered "
1181 "(best results when non-zero)");
1189 prop,
"Collision Collections",
"Collision collections rigid body belongs to");
1202 "Rigid Body Constraint",
1203 "Constraint influencing Objects inside Rigid Body Simulation");
1233 prop,
"Disable Collisions",
"Disable collisions between constrained rigid bodies");
1255 prop,
"Breakable",
"Constraint can be broken if it receives an impulse above the threshold");
1265 "Breaking Threshold",
1266 "Impulse threshold that must be reached for the constraint to break");
1274 "Override Solver Iterations",
1275 "Override the number of solver iterations for this constraint");
1286 "Solver Iterations",
1287 "Number of constraint solver iterations made per simulation step (higher values are more "
1288 "accurate but slower)");
void BKE_report(ReportList *reports, eReportType 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 Main *bmain, 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)