Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    NBIT xHIDE visibility flags - THIDE deprecated?

    Cinema 4D SDK
    c++ python r21
    4
    7
    713
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • CairynC
      Cairyn
      last edited by

      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...?

      1 Reply Last reply Reply Quote 0
      • ferdinandF
        ferdinand
        last edited by

        @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

        MAXON SDK Specialist
        developers.maxon.net

        CairynC 1 Reply Last reply Reply Quote 0
        • CairynC
          Cairyn @ferdinand
          last edited by

          @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.

          1 Reply Last reply Reply Quote 0
          • P
            PluginStudent
            last edited by

            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.

            CairynC 1 Reply Last reply Reply Quote 0
            • CairynC
              Cairyn @PluginStudent
              last edited by

              @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++.

              1 Reply Last reply Reply Quote 0
              • ManuelM
                Manuel
                last edited by

                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

                MAXON SDK Specialist

                MAXON Registered Developer

                1 Reply Last reply Reply Quote 1
                • CairynC
                  Cairyn
                  last edited by

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

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post