Blender Git Commit Log
Git Commits -> Revision ed38650
Revision ed38650 by Sergey Sharybin (master) March 23, 2020, 16:19 (GMT) |
Fix T74984: Crash opening specific production files More detailed symptoms: there was no curve cache created for an object which was used by draw manager. A bit tricky situation, which involves collection instances and their proxies. The root of the problem in the dependency graph was that instanced collections visibility was not updated when object is requested with different visibility. So what was happening is that one of the objects was pulled as an indirect dependency of something invisible, so it built instanced collections as if the instancer is invisible. After that the same object was built as visible. Before this fix this was only update object flags, the instanced collections still believed they are invisible. Since there is no path via relations which would connect visible object with instanced objects the visibility flush which is happening during graph finalization did not "fix" the visibility flags. This change makes it so instanced collections are updating their visibility when their instancer's visibility is changing to truth. This is similar to how collections will accumulate their visibility when same collection is used from multiple ones with different visibility. However, this alone wasn't enough to get crash fixed. This marked collections as visible, but the geometry component of the curve object was still considering self as invisible. This is something tricky, since the code which is responsible for this issue was added as an optimization in afb4da6650d. This looks like like an oversight in that commit since it's rather weird that ID node's flag would depend on construction order (in "normal" object builder the ID node's directly_visible flag is initialized to object's visibility). So it seems logical to get this part of code in sync between "regular" and "accumulative" object builder. And last but not least the naming is_directly_visible is old and does not really represent what it actually mans now: a more correct name would be "will be used by the draw manager". Differential Revision: https://developer.blender.org/D7217 |
Commit Details:
Full Hash: ed386507e19543decf2422e96610284da8c98112
Parent Commit: 58ac113
Lines Changed: +26, -10