Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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

    Make Deformer Affect Objects Outside Hierarchy?

    Cinema 4D SDK
    r21 python
    4
    12
    2.2k
    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.
    • B
      bentraje
      last edited by

      Hi,

      Currently, for the deformer to work, it will be either the child of the deforming object or in the same hierarchy of deforming object (if multiple objects).

      Is there a way to force deformer to affect objects outside hierarchy?
      I was thinking of just an object slot where I just drop objects to be affected.

      The main reason of this is for easy management, much the same way Maya does it.

      Is this possible?

      Thank you for looking at my problem.

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

        As you cannot instantiate deformers (they do appear but don't do anything) I would say the only way is to create a second deformer for the "other" object, and use XPresso to connect that deformer to the "original" deformer.

        The scope of a deformer is set by the parent object or parallel objects in the same hierarchy, not explicitly by some slots (like effectors), so it's just not working like Maya I'm afraid.

        1 Reply Last reply Reply Quote 1
        • r_giganteR
          r_gigante
          last edited by r_gigante

          Hi Bentraje, thanks for reaching out us.

          With regard to your question, although hacks might be put in place to achieve the desired behavior - like using the logic behind a generator to perform a deformation -, it should be remarked that the suggested workflow contrasts with the logic behind Cinema modifiers.

          The BaseObject::ModifyObject() is indeed called by the scene execution pipeline, which is responsible for geometry handling and creation, only when the modifier has a parent object whilst it remains uncalled in all the other cases.

          Cheers, Riccardo

          1 Reply Last reply Reply Quote 1
          • B
            bentraje
            last edited by

            @Cairyn @r_gigante

            Thanks for the response.
            Just to confirm, to achieve the desired behavior (i.e. deformer affects objects outside hierarchy), I need to create my own logic of the deformer. Or is it still not possible since I have to rely on the BaseObject::ModifyObject() even if its my own logic?

            Sorry. I'm new with the C++ or creating deformers. I just use python mainly to automate tasks.

            1 Reply Last reply Reply Quote 0
            • W
              wuzelwazel
              last edited by

              @bentraje I'm not sure that this will address your desired use case, but if I ever need to apply the same deformer to objects in different hierarchies I'll turn to the Surface deformer.

              1 Reply Last reply Reply Quote 1
              • B
                bentraje
                last edited by

                @wuzelwazel

                Thanks for the response. The surface deformer still requires the usual deformer behavior (i.e. parent or in the same heirarchy), correct me if I'm wrong.

                W 1 Reply Last reply Reply Quote 0
                • W
                  wuzelwazel @bentraje
                  last edited by

                  @bentraje it does, but it essentially behaves as an instance of another deformer. So the deformation is defined in one hierarchy location but can also be re-applied in any arbitrary location.

                  Like I said, that might not be what you're after, but it's helped me in certain situations.

                  1 Reply Last reply Reply Quote 1
                  • B
                    bentraje
                    last edited by

                    @wuzelwazel

                    I'm not sure I understand. I use surface deformer for attaching a geo to a surface. Say a separate eyebrow geo to the head.

                    If you have time, can you check this illustration file with the surface deformer as you suggested?
                    https://www.dropbox.com/s/6ygqp2er85cvili/c4d194_deformer_affect_outside_hierarchy.c4d?dl=0

                    W 1 Reply Last reply Reply Quote 0
                    • W
                      wuzelwazel @bentraje
                      last edited by

                      @bentraje Apologies, I was perhaps a bit misleading in my description of the Surface Deformer. It actually behaves more like an 'instance' of the entire deformer stack that's affecting another object.

                      c4d194_deformer_affect_outside_hierarchy_v002.c4d

                      1 Reply Last reply Reply Quote 1
                      • B
                        bentraje
                        last edited by

                        @wuzelwazel

                        Thanks for the response and for the file. That was entirely new to me.
                        Just one little thing, there seems to be a priority issue when hit Undo there is some execution delay.
                        I can't solve it directly since there are no expose priority parameter in the deformer.

                        May I ask how did you solve the problem?

                        W 1 Reply Last reply Reply Quote 0
                        • W
                          wuzelwazel @bentraje
                          last edited by

                          @bentraje I don't know exactly what issue you're facing, is this with the file I uploaded or another file?

                          The objects in the object manager are evaluated from top to bottom, so perhaps making sure the objects with the surface deformers are lower down the list than the object that they're referring to?

                          1 Reply Last reply Reply Quote 0
                          • B
                            bentraje
                            last edited by

                            @wuzelwazel

                            Yes, I'm referring to the file you uploaded earlier.
                            There is some delay when hitting Undo.
                            You can see it here:
                            https://www.dropbox.com/s/hayep6r4iyowqt5/c4d194_deformer_affect_outside_hierarchy_02.mp4?dl=0

                            RE: perhaps making sure the objects with the surface deformers are lower down the list
                            In your file, yep they are. That's why I was wondering why there is a lag.

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