Page MenuHome

Fix T93439: Armature widgets from hidden collections are invisible
ClosedPublic

Authored by Sergey Sharybin (sergey) on Nov 29 2021, 12:11 PM.

Details

Summary

The are few things in the dependency graph which lead to the issue:

  • IDs are only built once.
  • Object-data level (Armature, i,e,) builder dependent on the object visibility.

This caused issues when an armature is first built as not directly
visible (via driver, i.e.) and then was built as a directly visible.
This did not update visibility flag on the node for the custom shape
object.

The idea behind the fix is to go away form passing object visibility
flag to the geometry-level builders and instead rely on the common
visibility flush post-processing to make sure certain objects are
fully visible when needed.

This is the safest minimal part of the change for 3.0 release which
acts as an additional way to ensure visibility. This means that it
might not be a complete fix (if some configuration was overseen) but
it should not make currently working cases to not work.

The fix should also make modifiers used on rigify widgets to work.

The more complete fix will have is_object_visible argument removed
from the geometry-level builder functions.

Diff Detail

Repository
rB Blender

Event Timeline

Sergey Sharybin (sergey) requested review of this revision.Nov 29 2021, 12:11 PM
Sergey Sharybin (sergey) created this revision.

Point to a more complete description from comment around add_visibility_relation().

Ignore visibility dependencies in the query API

On code side resolves assert in transform code which was attempting
to traverse visibility dpeendencies.

On the user level resolves possible false-positive dependencies detected
by the transform.

Unpin visibility nodes, to let relations between them be eliminated

Safer for 3.0 from the side effects point of view.

LGTM, just needs a few typo/linguistic fixes. No need to re-review after those.

I can confirm it fixes T93439: Armature widgets from hidden collections are invisible., and that it doesn't seem to break a random Sprite Fright production file I tested on.

source/blender/depsgraph/intern/depsgraph_query_foreach.cc
82

outer

source/blender/depsgraph/intern/node/deg_node.h
109

considered

115

remove "the"

119

are properly evaluated

Sergey Sharybin (sergey) marked 3 inline comments as done.

No need to re-review after those.

I'll re-iterate anyway. Waiting for Brecht :)

Thanks for confirming the patch works with the production files!

Marking comments as DONE is impossible without having a comment, apparently :(

This revision is now accepted and ready to land.Nov 29 2021, 4:24 PM