Page MenuHome

Fix T81218: Crash in pose mode using a driver on bendy bone Segment
ClosedPublic

Authored by Sybren A. Stüvel (sybren) on Oct 6 2020, 2:02 PM.

Details

Summary

The example file in T81218 has a driver that maps a bone's X-location to the number of BBone segments. This caused a dependency cycle, which resulted in bad thread serialisation, which caused the crash.

This patch breaks the dependency cycle BONE_LOCALDRIVER(bones["Bone"].bbone_segments)BONE_LOCAL. The 'Driver Data' relation now points to BONE_SEGMENTS when the driven property starts with bbone_.

Diff Detail

Repository
rB Blender

Event Timeline

Sybren A. Stüvel (sybren) requested review of this revision.Oct 6 2020, 2:02 PM
Sybren A. Stüvel (sybren) created this revision.

I would say, this can wait until Sergey is back. But if you are confident it is correct just push it. The idea of have more people understanding the system is also to empower more people (you in this case) to make this decision.

I think it's fine, I'm building Blender with this change so that @Demeter Dzadik (Mets) can give it a try with a production rig.

Tested.

Easily reproduced the crash without the patch, cannot reproduce the crash with the patch.
My character rigs that have drivers on BBone properties seem to be working fine with the patch.

All green here boss.

This revision was not accepted when it landed; it landed in state Needs Review.Oct 6 2020, 5:55 PM
This revision was automatically updated to reflect the committed changes.