NBIT xHIDE visibility flags - THIDE deprecated?



  • Hello;

    I was just checking out the NBIT visibility flags, and they raise a few questions...

    1. NBIT_THIDE doesn't seem to do anything. I can see that there are timeline-window-specific versions NBIT_TL1_HIDE (etc) which do work, but THIDE is not marked as deprecated and says Hide object in Timeline in both the C++ and Python documantation. A relic? Or it it now used for different purposes?

    2. From experiments, I assume that NBIT_TL1_HIDE needs to be set on the tracks too (as these still remain visible when I hide the parent object in the timeline).

    3. NBIT_OHIDE and NBIT_EHIDE work as expected. (So other than the timeline hide flags, there is no object-manager-window-specific hiding flag OM1_HIDE.)
      These flags seem to be accessible only in a programmatical way though. I can't find any C4D functionality that would use these flags (object type filters, viewport filters, name filters, ...). All "visibility concepts" seem to be orthogonal. Or am I overlooking something?

    4. On the other paw, TL1_HIDE does have a C4D function that uses it (Hide selected elements in the timeline menu sets this flag). There are apparently no equivalent functions in the object manager or the material manager...?



  • @Cairyn said in NBIT xHIDE visibility flags - THIDE deprecated?:

    NBIT_OHIDE and NBIT_EHIDE work as expected. (So other than the timeline hide flags, there is no object-manager-window-specific hiding flag OM1_HIDE.) These flags seem to be accessible only in a programmatical way though. I can't find any C4D functionality that would use these flags (object type filters, viewport filters, name filters, ...). All "visibility concepts" seem to be orthogonal. Or am I overlooking something?

    Not sure what you mean by "orthogonal" in this context, but Cinema makes heavily use of hiding elements of its scene graph internally. It does mostly hide tags, but also objects, materials and other stuff on occasion.

    I would also assume it was intentionally designed as a feature the end user is not aware off, which explains the lack of app-features referencing hidden elements, as this would contradict that intention.

    Cheers
    zipit



  • @zipit By "orthogonal", I mean that the multiple visibility concepts - like the traffic lights, the polygon hiding, the OHIDE bit, the name filter, the object filter - can all be used at the same time without influencing each other.

    The HIDE bits are not set by any other functionality (as far as I can see). Take a polygon object for example, if you list its tags you will find two tags that do not appear in the OM: point and polygon tag. However, neither of these tags has the OHIDE bit set, so the mechanism that hides them is different.

    Same for viewport filters, e.g. - you can hide a Generator object, and it disappears from the viewport. But the EHIDE bit is not involved; it is not being set by the filter. So, these mechanisms are orthogonal; the total visibility is something of a formula "if not filtered and not EHIDE and not switched off by traffic light and active", with each condition being separate and independent.



  • Just to throw a few things in: you can check the visibility of an object in the editor by combining CheckDisplayFilter() and CheckEditorVisibility() (BaseView / BaseDraw Manual).

    A tag is not visible in the Object Manager if the tag flag TAG_VISIBLE is not set. The tag visibility is not something that is supposed to be switched at runtime.



  • @PluginStudent said in NBIT xHIDE visibility flags - THIDE deprecated?:

    Just to throw a few things in: you can check the visibility of an object in the editor by combining CheckDisplayFilter() and CheckEditorVisibility() (BaseView / BaseDraw Manual).

    A tag is not visible in the Object Manager if the tag flag TAG_VISIBLE is not set. The tag visibility is not something that is supposed to be switched at runtime.

    Thanks, but that's what I mean by orthogonal, there are many ways how things can be made invisible... TAG_VISIBLE is a tag property that does not make use of OHIDE (nor can you override this property by the OHIDE flag). OHIDE can affect a tag and make it invisible similar as if it has the TAG_VISIBLE property set, but it is a different method and can be changed at runtime.

    CheckEditorVisibility would probably check several orthogonal visibility properties (according to the documentation) - as I just looked up, it doesn't exist in the Python API though, so you can only use it with C++.



  • hello,
    after diving a bit in the code.

    1 - NBIT_HIDE can be used on tracks. I didn't find any tool that is using it. But if you set that to the track it will not be displayed in all timeline manager. (can be useful if you add your own track i guess)

    2 - Right.

    3 - no OM1_HIDE nope.
    OHIDE is used by the character object for example. If you Create a character and add a root, you have in the display tab an option for the display in the object manager. (show full hierarchy or other options)
    EHIDE is also used by this character object, if you desactivate it, all object in the hierarchy will be NOT visible in the viewport.

    4 - None that i know.

    CheckObjectEditorVisibility :
    it check for layer mode if any (view or solo)
    it check for display mode (mode_on, mode_off) if undef it check for the parents
    finally it check NBIT::EHIDE

    hope this help a bit.

    Cheers,
    Manuel



  • Thanks, it's good to know that there are internal functionalities actually using these flags!