Fix T73932: modifying keyframes in nodes fails when there is an image sequence

Image animation should not be an depsgraph node of type ANIMATION, there is
no need for it to be affected by the special casing for that.
This commit is contained in:
Brecht Van Lommel 2020-02-19 18:10:35 +01:00
parent ee5c13c45c
commit f0a22f5dd0
Notes: blender-bot 2023-02-13 23:27:24 +01:00
Referenced by issue #74633, Can't keyframe material attribute when image sequence involved
Referenced by issue #74274, Blender 2.82a proposed revisions
Referenced by issue #73932, Showstopper: 2nd keyframe for image sequences can't be set in compositing
8 changed files with 14 additions and 5 deletions

View File

@ -895,7 +895,7 @@ void DepsgraphNodeBuilder::build_animation_images(ID *id)
if (BKE_image_user_id_has_animation(id)) {
ID *id_cow = get_cow_id(id);
add_operation_node(id,
NodeType::ANIMATION,
NodeType::IMAGE_ANIMATION,
OperationCode::IMAGE_ANIMATION,
function_bind(BKE_image_user_id_eval_animation, _1, id_cow));
}

View File

@ -1384,9 +1384,8 @@ void DepsgraphRelationBuilder::build_animation_images(ID *id)
{
/* TODO: can we check for existence of node for performance? */
if (BKE_image_user_id_has_animation(id)) {
OperationKey image_animation_key(id, NodeType::ANIMATION, OperationCode::IMAGE_ANIMATION);
ComponentKey cow_key(id, NodeType::COPY_ON_WRITE);
add_relation(cow_key, image_animation_key, "CoW -> Image Animation");
OperationKey image_animation_key(
id, NodeType::IMAGE_ANIMATION, OperationCode::IMAGE_ANIMATION);
TimeSourceKey time_src_key;
add_relation(time_src_key, image_animation_key, "TimeSrc -> Image Animation");
}

View File

@ -361,7 +361,7 @@ RNANodeIdentifier RNANodeQuery::construct_node_identifier(const PointerRNA *ptr,
}
else if (RNA_struct_is_a(ptr->type, &RNA_ImageUser)) {
if (GS(node_identifier.id->name) == ID_NT) {
node_identifier.type = NodeType::ANIMATION;
node_identifier.type = NodeType::IMAGE_ANIMATION;
node_identifier.operation_code = OperationCode::IMAGE_ANIMATION;
return node_identifier;
}

View File

@ -428,6 +428,7 @@ static void deg_debug_graphviz_node(const DebugContext &ctx, const Node *node)
case NodeType::SHADING_PARAMETERS:
case NodeType::CACHE:
case NodeType::POINT_CACHE:
case NodeType::IMAGE_ANIMATION:
case NodeType::LAYER_COLLECTIONS:
case NodeType::PARTICLE_SYSTEM:
case NodeType::PARTICLE_SETTINGS:

View File

@ -100,6 +100,8 @@ const char *nodeTypeAsString(NodeType type)
return "CACHE";
case NodeType::POINT_CACHE:
return "POINT_CACHE";
case NodeType::IMAGE_ANIMATION:
return "IMAGE_ANIMATION";
case NodeType::BATCH_CACHE:
return "BATCH_CACHE";
case NodeType::DUPLI:
@ -157,6 +159,7 @@ eDepsSceneComponentType nodeTypeToSceneComponent(NodeType type)
case NodeType::PARTICLE_SETTINGS:
case NodeType::SHADING_PARAMETERS:
case NodeType::POINT_CACHE:
case NodeType::IMAGE_ANIMATION:
case NodeType::BATCH_CACHE:
case NodeType::DUPLI:
case NodeType::SYNCHRONIZATION:
@ -238,6 +241,7 @@ eDepsObjectComponentType nodeTypeToObjectComponent(NodeType type)
case NodeType::PARTICLE_SETTINGS:
case NodeType::SHADING_PARAMETERS:
case NodeType::POINT_CACHE:
case NodeType::IMAGE_ANIMATION:
case NodeType::BATCH_CACHE:
case NodeType::DUPLI:
case NodeType::SYNCHRONIZATION:

View File

@ -114,6 +114,8 @@ enum class NodeType {
SHADING_PARAMETERS,
/* Point cache Component */
POINT_CACHE,
/* Image Animation Component */
IMAGE_ANIMATION,
/* Cache Component */
/* TODO(sergey); Verify that we really need this. */
CACHE,

View File

@ -349,6 +349,7 @@ DEG_COMPONENT_NODE_DEFINE(BatchCache, BATCH_CACHE, ID_RECALC_SHADING);
DEG_COMPONENT_NODE_DEFINE(Bone, BONE, ID_RECALC_GEOMETRY);
DEG_COMPONENT_NODE_DEFINE(Cache, CACHE, 0);
DEG_COMPONENT_NODE_DEFINE(CopyOnWrite, COPY_ON_WRITE, ID_RECALC_COPY_ON_WRITE);
DEG_COMPONENT_NODE_DEFINE(ImageAnimation, IMAGE_ANIMATION, 0);
DEG_COMPONENT_NODE_DEFINE(Geometry, GEOMETRY, ID_RECALC_GEOMETRY);
DEG_COMPONENT_NODE_DEFINE(LayerCollections, LAYER_COLLECTIONS, 0);
DEG_COMPONENT_NODE_DEFINE(Parameters, PARAMETERS, 0);
@ -383,6 +384,7 @@ void deg_register_component_depsnodes()
register_node_typeinfo(&DNTI_PARTICLE_SYSTEM);
register_node_typeinfo(&DNTI_PARTICLE_SETTINGS);
register_node_typeinfo(&DNTI_POINT_CACHE);
register_node_typeinfo(&DNTI_IMAGE_ANIMATION);
register_node_typeinfo(&DNTI_PROXY);
register_node_typeinfo(&DNTI_EVAL_POSE);
register_node_typeinfo(&DNTI_SEQUENCER);

View File

@ -172,6 +172,7 @@ DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(BatchCache);
DEG_COMPONENT_NODE_DECLARE_GENERIC(Cache);
DEG_COMPONENT_NODE_DECLARE_GENERIC(CopyOnWrite);
DEG_COMPONENT_NODE_DECLARE_GENERIC(Geometry);
DEG_COMPONENT_NODE_DECLARE_GENERIC(ImageAnimation);
DEG_COMPONENT_NODE_DECLARE_GENERIC(LayerCollections);
DEG_COMPONENT_NODE_DECLARE_GENERIC(Parameters);
DEG_COMPONENT_NODE_DECLARE_GENERIC(Particles);