Page MenuHome

Animated mesh UVs, vertex groups, vertex colors don’t update on time change
Open, Confirmed, HighPublic

Description

System Information
Operating system: Ubuntu 18.10
Graphics card: Nvidia GeForce GTX 660M

Blender Version
Broken: 2.81 (5489611e5317)
Worked: 2.79

After adding keyframes to a mesh object data, mesh UVs, vertex groups and vertex colors don’t get updated when changing the time.

Exact steps for others to reproduce the error

  • Open blend file
  • Both planes have keyframes on their UVs. The one on the left also has keyframes on vertex locations.
  • Scrub the timeline to set the time
  • The UVs of the object on the right don’t get updated.

Test file and bug as originally reported by @Rombout Versluijs (rombout) in T68332.

Details

Type
Bug

Event Timeline

Philipp Oeser (lichtwerk) claimed this task.
Philipp Oeser (lichtwerk) triaged this task as Confirmed, Medium priority.

Confirmed, will check on this...

Philipp Oeser (lichtwerk) raised the priority of this task from Confirmed, Medium to Confirmed, High.Thu, Aug 15, 10:07 AM

Started looking into this.
Some first notes:

This is what we get on frame change:

graph_id_tag_update: id=SCScene flags=AUDIO_SEEK source=USER_EDIT
graph_id_tag_update: id=SCScene flags=AUDIO_SEEK source=USER_EDIT
graph_id_tag_update: id=SCScene flags=TIME source=USER_EDIT
graph_id_tag_update: id=SCScene flags=TIME source=USER_EDIT
[SCScene :: View Layer]: Operation is entry point for update: ANIMATION_EVAL()
[SCScene :: View Layer]: Operation is entry point for update: ANIMATION_EVAL()
[SCScene :: View Layer]: Operation is entry point for update: ANIMATION_EVAL()
[SCScene :: View Layer]: Operation is entry point for update: SOUND_EVAL()
[SCScene :: View Layer]: Operation is entry point for update: COPY_ON_WRITE()
[SCScene :: View Layer]: Accumulated recalc bits for SCScene: 4235264
[SCScene :: View Layer]: Accumulated recalc bits for OBPoints_UVS: 7
[SCScene :: View Layer]: Accumulated recalc bits for MEPlane: 6
[SCScene :: View Layer]: Accumulated recalc bits for ACPlaneAction.001: 4
[SCScene :: View Layer]: Accumulated recalc bits for ACPlaneAction.002: 4
[SCScene :: View Layer]: Accumulated recalc bits for OBUVs_only: 0
[SCScene :: View Layer]: Accumulated recalc bits for MEPlane.001: 4
[SCScene :: View Layer]: Accumulated recalc bits for ACPlane.001Action: 4
[SCScene :: View Layer]: deg_evaluate_copy_on_write on SCScene (0x7f8788532c08)
[SCScene :: View Layer]: layer_eval_view_layer on View Layer (0x7f87884b1f88)
[SCScene :: View Layer]: BKE_animsys_eval_animdata on OBPoints_UVS (0x7f8788598208) at time 7.000000
[SCScene :: View Layer]: BKE_animsys_eval_animdata on MEPlane (0x7f87884b4e08) at time 7.000000
[SCScene :: View Layer]: BKE_animsys_eval_animdata on MEPlane.001 (0x7f878d3f9908) at time 7.000000
[SCScene :: View Layer]: BKE_object_eval_local_transform on OBPoints_UVS (0x7f8788598208)
[SCScene :: View Layer]: BKE_object_eval_transform_final on OBPoints_UVS (0x7f8788598208)
[SCScene :: View Layer]: BKE_object_eval_eval_base_flags on OBPoints_UVS (0x7f8788598208)
[SCScene :: View Layer]: BKE_object_eval_eval_base_flags on OBUVs_only (0x7f8788597c08)
[SCScene :: View Layer]: BKE_mesh_eval_geometry on MEPlane (0x7f87884b4e08)
[SCScene :: View Layer]: BKE_object_eval_uber_data on OBPoints_UVS (0x7f8788598208)
[SCScene :: View Layer]: BKE_object_handle_data_update on OBPoints_UVS (0x7f8788598208)
Depsgraph updated in 0.000820 seconds.

If one has a look at DepsgraphNodeBuilder::build_animdata it can be observed that:

  • the UV case, seemingly only the mesh ID has a adt->action
  • thus BKE_animsys_eval_animdata is correctly evaluated for the mesh later on framechange, BUT
  • the object ID misses a adt->action thus no BKE_animsys_eval_animdata on the object ID
  • still need to check if this is already the cause (so BKE_object_eval_uber_data / BKE_object_handle_data_update are responsible for correct updates) OR
  • why we are missing BKE_mesh_eval_geometry from the mesh ID

Also BKE_mesh_eval_geometry is bound in DepsgraphNodeBuilder::build_object_data_geometry_datablock for the UV mesh, but not called on framechange...

Stay tuned...

Thank you for looking into it.
I forgot to mention that the same lack of update also happens with lattice points’ locations. The issue with the lattices can’t be demonstrated with a blend file though, because the workaround found by Rombout Versluijs can’t apply since even the location isn’t updated.
I don’t know if I should open a new bug report for this, as it seems related.

To test lattice points, you may use the animation_animall add-on to insert keys on lattice points.