Page MenuHome

Fix T80078: Overrides: Crash with animated IK control on linked armature.
ClosedPublic

Authored by Bastien Montagne (mont29) on Aug 27 2020, 4:53 PM.

Details

Summary

Issue was with our dear posebones again... when applying overrides we
keep the same address/pointer for the IDs themselves, (which avoids us
the need to remap their usages), but their inner data is often
re-allocated.

Therefore, we need once again to go over armature objects and invalidate
their posebone pointers.

This should also be back-ported to Blender LTS 2.83.

Diff Detail

Repository
rB Blender

Event Timeline

Bastien Montagne (mont29) requested review of this revision.Aug 27 2020, 4:53 PM

Can confirm the crash is gone with this patch! Thanks!

The O(n^2) time complexity of this is quite bad, can we at least do this loop over all objects only when local is an armature datablock?

source/blender/blenkernel/intern/lib_override.c
1478–1479

Add missing space, "ppose" spelling.

1484–1485

I don't think clearing the pointers hurts, I'm not sure this comment is accurate after rBab2dbafd8.

The O(n^2) time complexity of this is quite bad, can we at least do this loop over all objects only when local is an armature datablock?

Woops good point.

Besides that, O(n^2) time complexity is not really valid, as looping itself is extremely fast, and actual somewhat heavier processing will only happen once per object (in worst case)?

source/blender/blenkernel/intern/lib_override.c
1484–1485

Eeeh, this is copy/paste from same code in id remap code... Indeed needs to be updated there I think.

Updated from review.

Bastien Montagne (mont29) marked 2 inline comments as done.Aug 27 2020, 7:54 PM

Fix mistake take in comment correction.

This revision is now accepted and ready to land.Aug 28 2020, 1:44 PM