Page MenuHome

Fix T90472: origins dont indicate linked state anymore
Changes PlannedPublic

Authored by Philipp Oeser (lichtwerk) on Aug 6 2021, 3:27 PM.

Details

Summary

2.79 gave a visual hint if an object was linked (in other scenes or from
lib files) by coloring its origin blueish - seems this is useful
information to have because it so unintentional changes elsewhere (e.g
in other scenes) can be foreseen.

This was lost in the transition to 2.8, but it seems this was not
intentional because a check for this was still in the code. However,
checking users on the COW id wasnt working here (seems COW always have
zero users? - bit on shaky ground here), this patch checks the orig_id
instead [restoring the linked state indication].

notes:

  • 2.79 actually also did this for selection outline (not sure this is desired, could be added as well)
  • 2.79 also kept the bluish tint when the object is active (this patch doesnt)
  • in 2.79 being part of a group did not increase usercount whereas in

2.8 being part of multiple collections does (so this change will give
you the blueish indication as soon as this is the case - not totally
sure if this would be desired?)

testcase:

Diff Detail

Repository
rB Blender
Branch
T90472 (branched from master)
Build Status
Buildable 16267
Build 16267: arc lint + arc unit

Event Timeline

Philipp Oeser (lichtwerk) requested review of this revision.Aug 6 2021, 3:27 PM
Philipp Oeser (lichtwerk) created this revision.
Brecht Van Lommel (brecht) requested changes to this revision.Aug 6 2021, 4:16 PM

I would leave out the ID_REAL_USERS(ob->id.orig_id) > 1 check, to me it makes little sense. I guess it used to be to check if the object is used in multiple scenes, but there can be users for various reasons.

I also think this should use ID_IS_LINKED(DEG_get_original_id(ob)). I don't think orig_id is going to be NULL here in practice, but might as well not make that assumption.

This revision now requires changes to proceed.Aug 6 2021, 4:16 PM

I would leave out the ID_REAL_USERS(ob->id.orig_id) > 1 check, to me it makes little sense. I guess it used to be to check if the object is used in multiple scenes

Exactly this is the case the report was about (objects linked to multiple scenes), we'd loose the indication for such objects...
(will quickly check if a dedicated check just for scene users is possible from the Overlay)

use dedicated check for scene users

That's too slow for the drawing code, we can't do that much work for every object center, looping through every scene and view layer and doing a hash lookup for each.

I don't immediately know what a good solution is here, but I don't think we can do it like this.

Philipp Oeser (lichtwerk) planned changes to this revision.Aug 6 2021, 6:14 PM

@Philipp Oeser (lichtwerk) 's file illustrates many combinations and if we compare to 2.7 we will find more inconsistencies on the visual feedback of linked files per scene and linked libraries.

For example:


We used to have bluish origin point and a screaming bluish outline indicating its a lib link on selected.

OTOH, 2.8 Series:


We've lost the bluish outline, but the bluish origin is there for this condition. Until that...


...the object is activated and, damn... we lost the feedback again. Origin has turned orange!

So I could keep illustrating here more inconsistencies from the previous behaviors but um summary 2.8 series that I believe should be treated seriously are:

  • linked object per scene (CTRL + L) don't have any distinguishable visual feedback, origins are not tinted in blue.
  • origins are turning orange as soon as object is activated no matter if its a linked per scene state or a lib link state.
  • bluish outline is not present in case its a link lib.

I'm not gonna mention the green outline we used to have when a object becomes a group (Ctrl + G) in 2.7
because, I feel, that functionality is falling into a limbo since collections and library overrides arrived.
But that should be addressed somewhere soon if possible as 3.0 in rising on the horizon.
Let's push some love into these UX issues... they have been haunting me for a while now. Go Blender!

EDIT: If this post is not appropriated here you can delete as I've re-posted on the original bug report.