Page MenuHome

Switching Curve Shapekeys in Edit Mode go haywire if relative to one another
Confirmed, NormalPublicBUG

Description

System Information
Operating system:
Linux

Blender Version
Broken in 2.79 onwards
Worked in 2.78

Possibly caused by
rB6f1493f68fe0: Fix T50614: Curve doesn't restore initial form after deleting all its shapekeys
rB5e1d4714fef7: Fix T50745: Shape key editing on bezier objects broken with Rendered Viewport…

Short description of error
Shapekeys on curves do not reset properly when switching between them in edit mode, and one shapekey is relative to another.

Exact steps for others to reproduce the error
Select the circle and enter edit mode. Repeatedly switch between shapekeys 'Key 1' and 'Key 2' while staying in edit mode. 'Key 2' will change over time from just this.

How to reproduce the scene
Create a Curve object. Add Basis, Key 1, Key 2 shapekeys. Set 'Key 2' relative to 'Key 1'. Select 'Key 1' and translate/scale it.

Event Timeline

Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Confirmed.Jul 7 2020, 2:22 PM
Philipp Oeser (lichtwerk) changed the subtype of this task from "Report" to "Bug".

Can confirm, this dates back to 2.79 even.

Probably related to
rB6f1493f68fe0: Fix T50614: Curve doesn't restore initial form after deleting all its shapekeys
rB5e1d4714fef7: Fix T50745: Shape key editing on bezier objects broken with Rendered Viewport…

rna_Object_active_shape_update also calls ED_curve_editnurb_load / calc_shapeKeys, that might cause the unwanted sideeffects?
(not sure if it should restore to editcurve in that case? -- had a quick try, without luck though.)

@Bastien Montagne (mont29) might be more familiar here?

The cause is indeed in calc_shapeKeys . Another related bug : Modifying 'Key 1' if 'Key 2' is related to 'Key 1' and 'Key 3' is related to 'Key2' will not modify 'Key 3' at all, unless 'Key 2' has been selected after 'Key 1'.
There's a fundamental design flaw in the first part of calc_shapeKeys, where it only checks directly related keys for updates. I don't want to open a new report for this, since it's the same code that's causing it.

I have a fix for the transitivity problem I mentioned today.
Still don't understand what's causing the initial issue though.
I can provide a patch if the initial issue gets solved.

Sven Hollesen (kiriri) claimed this task.EditedJul 10 2020, 8:15 PM

This issue is a bottleneck for our current project. I'm rewriting calc_shapeKeys from the ground up and have a working prototype. I don't think a simple fix would cut it.

This issue is a bottleneck for our current project. I'm rewriting calc_shapeKeys from the ground up and have a working prototype. I don't think a simple fix would cut it.

That is great to hear [the fact that you have working version - not so that you ran into this issue in the first place].
If you think you can share, please post a diff.


Some relevant code comments claim issues with animation if the changes in this patch were to be applied. I assume something like animall point animation was meant, but could not replicate any issues. Any idea who wrote those?