Commit: 20f2cb0e2f7aadd21b9b85fd55622873b36c84e1 Author: Alexander Gavrilov Date: Sat Jan 9 21:19:37 2021 +0300 Branches: temp-angavrilov https://developer.blender.org/rB20f2cb0e2f7aadd21b9b85fd55622873b36c84e1
Depsgraph: connect up drivers on various physics properties. It seems drivers for physics properties weren't being linked to evaluation nodes. This connects settings used by modifiers to Geometry; particle settings and rigid body data to Transform which seems to contain rigid body evaluation; and force fields to object Transform, since fields can exist on empties. Differential Revision: https://developer.blender.org/D10088 =================================================================== M source/blender/depsgraph/intern/builder/deg_builder_relations.cc M source/blender/depsgraph/intern/builder/deg_builder_rna.cc M source/blender/makesrna/RNA_access.h =================================================================== diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 97dae46c75f..1c59d808445 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -1858,6 +1858,27 @@ void DepsgraphRelationBuilder::build_rigidbody(Scene *scene) } FOREACH_COLLECTION_OBJECT_RECURSIVE_END; } + /* Constraints. */ + if (rbw->constraints != nullptr) { + build_collection(nullptr, nullptr, rbw->constraints); + FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN (rbw->constraints, object) { + if (object->rigidbody_constraint == nullptr) { + continue; + } + if (object->rigidbody_object != nullptr) { + /* Avoid duplicate relations for constraints attached to objects. */ + continue; + } + + /* Simulation uses object transformation after parenting and solving constraints. */ + OperationKey object_transform_simulation_init_key( + &object->id, NodeType::TRANSFORM, OperationCode::TRANSFORM_SIMULATION_INIT); + add_relation(object_transform_simulation_init_key, + rb_simulate_key, + "Object Transform -> Rigidbody Sim Eval"); + } + FOREACH_COLLECTION_OBJECT_RECURSIVE_END; + } } void DepsgraphRelationBuilder::build_particle_systems(Object *object) diff --git a/source/blender/depsgraph/intern/builder/deg_builder_rna.cc b/source/blender/depsgraph/intern/builder/deg_builder_rna.cc index 76a115a06c8..66b9f62084c 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_rna.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_rna.cc @@ -286,7 +286,16 @@ RNANodeIdentifier RNANodeQuery::construct_node_identifier(const PointerRNA *ptr, RNA_struct_is_a(ptr->type, &RNA_LatticePoint) || RNA_struct_is_a(ptr->type, &RNA_MeshUVLoop) || RNA_struct_is_a(ptr->type, &RNA_MeshLoopColor) || - RNA_struct_is_a(ptr->type, &RNA_VertexGroupElement)) { + RNA_struct_is_a(ptr->type, &RNA_VertexGroupElement) || + ELEM(ptr->type, + &RNA_CollisionSettings, + &RNA_SoftBodySettings, + &RNA_ClothSettings, + &RNA_ClothCollisionSettings, + &RNA_DynamicPaintSurface, + &RNA_DynamicPaintCanvasSettings, + &RNA_DynamicPaintBrushSettings) || + (ELEM(ptr->type, &RNA_EffectorWeights) && GS(node_identifier.id->name) == ID_OB)) { /* When modifier is used as FROM operation this is likely referencing to * the property (for example, modifier's influence). * But when it's used as TO operation, this is geometry component. */ @@ -387,6 +396,20 @@ RNANodeIdentifier RNANodeQuery::construct_node_identifier(const PointerRNA *ptr, node_identifier.type = NodeType::GEOMETRY; return node_identifier; } + else if (GS(node_identifier.id->name) == ID_PA && + ELEM(ptr->type, &RNA_EffectorWeights, &RNA_FieldSettings, &RNA_ParticleSettings)) { + node_identifier.type = NodeType::PARTICLE_SETTINGS; + return node_identifier; + } + else if (ELEM(ptr->type, + &RNA_EffectorWeights, + &RNA_RigidBodyWorld, + &RNA_FieldSettings, + &RNA_RigidBodyObject, + &RNA_RigidBodyConstraint)) { + node_identifier.type = NodeType::TRANSFORM; + return node_identifier; + } if (prop != nullptr) { /* All unknown data effectively falls under "parameter evaluation". */ node_identifier.type = NodeType::PARAMETERS; diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 43439428ea7..a43c648e90c 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -526,7 +526,7 @@ extern StructRNA RNA_RenderLayer; extern StructRNA RNA_RenderPass; extern StructRNA RNA_RenderResult; extern StructRNA RNA_RenderSettings; -extern StructRNA RNA_RigidBodyJointConstraint; +extern StructRNA RNA_RigidBodyConstraint; extern StructRNA RNA_RigidBodyObject; extern StructRNA RNA_RigidBodyWorld; extern StructRNA RNA_SPHFluidSettings; _______________________________________________ Bf-blender-cvs mailing list [email protected] List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs
