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
    • Unread
    • Recent
    • Tags
    • Users
    • Login
    1. Maxon Developers Forum
    2. JohnTerenece
    3. Topics
    J
    • Profile
    • Following 0
    • Followers 0
    • Topics 17
    • Posts 51
    • Best 3
    • Controversial 0
    • Groups 0

    Topics created by JohnTerenece

    • J

      Capsules Drag & Drop

      Cinema 4D SDK
      • 2023 c++ windows • • JohnTerenece
      7
      1
      Votes
      7
      Posts
      956
      Views

      J

      Thanks for the response, it's all working properly now.

      John Terenece

    • J

      Breaking Tags Out Of A Shared Folder

      Cinema 4D SDK
      • r21 sdk c++ • • JohnTerenece
      3
      0
      Votes
      3
      Posts
      587
      Views

      J

      Thanks for the response, that's what I was afraid of.

      John Terenece

    • J

      Drag & Drop Undo

      Cinema 4D SDK
      • r20 sdk c++ • • JohnTerenece
      5
      0
      Votes
      5
      Posts
      767
      Views

      J

      Thanks for the response.

      I figured that something like this would be the case, will have to look into the options you mentioned.

      John Terenece

    • J

      Active Controls

      Cinema 4D SDK
      • sdk r20 c++ • • JohnTerenece
      5
      0
      Votes
      5
      Posts
      714
      Views

      J

      Thanks for the response.

      That's what I figured would be the case.

    • J

      FieldLayer Plugin Globals

      Cinema 4D SDK
      • r20 sdk c++ • • JohnTerenece
      3
      0
      Votes
      3
      Posts
      510
      Views

      J

      Thanks for the response, that seems to have solved the problem.

    • J

      FieldList Enable Clamping

      Cinema 4D SDK
      • r20 sdk c++ • • JohnTerenece
      5
      0
      Votes
      5
      Posts
      801
      Views

      J

      Thanks, that was exactly what I was looking for.

      John Terenece

    • J

      GeDialog Failing To Open

      Cinema 4D SDK
      • c++ s26 sdk • • JohnTerenece
      6
      0
      Votes
      6
      Posts
      748
      Views

      J

      Thanks for the response. This seems to have solved the problem.

      John Terenece

    • J

      Limit On the Number Of Takes

      Cinema 4D SDK
      • c++ r20 sdk • • JohnTerenece
      4
      0
      Votes
      4
      Posts
      627
      Views

      J

      @m_magalhaes

      Thanks for the response.

      Might be able to use your idea as potential solution.

      John Terenece

    • J

      GeDialog Update

      Cinema 4D SDK
      • r20 c++ sdk • • JohnTerenece
      4
      0
      Votes
      4
      Posts
      698
      Views

      fwilleke80F

      I would recommend against changing anything in the scene from within GetVirtualObjects(). Rather do it in Execute().

      Cheers,
      Frank

    • J

      BaseTake AddTake

      Cinema 4D SDK
      • c++ r20 sdk • • JohnTerenece
      4
      1
      Votes
      4
      Posts
      883
      Views

      J

      Thanks for the response Ferdinand, I thought that that would be the case.

      John Terenece

    • J

      Effector Updates

      Cinema 4D SDK
      • c++ windows r25 sdk • • JohnTerenece
      2
      0
      Votes
      2
      Posts
      397
      Views

      ferdinandF

      Hello @JohnTerenece,

      thank you for reaching out to us. Unfortunately, our answer is mostly the same as it was for the previous topic on this plugin of yours.

      You are using the MoData tags in a way not intended by us. It is not supported by our SDK to implement a custom MoGraph generator and you are therefore not intended to populate and manage your own MoData tags. There is nothing preventing you from doing it anyways, this however will then be out of scope of support as declared in our Forum Guidelines under "Scope of Support". We cannot debug your code for you, especially when the employed techniques are a violation of point one listed here. This is also outlined in "Scope of Support".

      You are also misusing the maxon API. Specifically, the error system, as you cannot just step over all errors which are returned. Which is what you do when you store them in some fields attached to your plugin implementation; never to be used or looked at again. Which can introduce all sorts of problems. The cases I saw do look unlikely to go wrong, but this is still a fundamental misuse of our API. See the end of my posting for details.

      Finally, about your question. I would look at your CheckDirty(), since this is the likely culprit for your problems. But we cannot debug that for you. When you can show us that something is not being flagged as dirty what was flagged before, we will be glad to provide a context for that. Please also note that example code should be condensed as also outlined in our Forum Guidelines.

      I understand that this is not the support you did hope for, but these limitations of scope of support must be enforced by us to a certain degree, as it would otherwise become a boundless task.

      Thank you for your understanding,
      Ferdinand

      maxon::Result Example

      What you do:

      void EffectorTestClass::CheckDirty(BaseObject *op, BaseDocument *doc) { // ... if (op->GetDown() != nullptr) // This could fail and you just step over it. resultBaseObject = objArray.Append(op->GetDown()); // ... flags = data->GetFlags(doc, object); if ((flags & 1) == 1) { // This could fail and you just step over it. resultBaseObject = objArray.Append(object); } // ... }

      What you should do:

      void EffectorTestClass::CheckDirty(BaseObject *op, BaseDocument *doc) { // An error scope handler that brings the classic and maxon API together. iferr_scope_handler { // you could also write to one of the loggers here, e.g. ApplicationOutput("Error in CheckDirty() @", err); return false; } // ... if (op->GetDown() != nullptr) objArray.Append(op->GetDown()) iferr_return; // ... flags = data->GetFlags(doc, object); if ((flags & 1) == 1) { objArray.Append(object) iferr_return; } // ... }
    • J

      Mograph Effector List

      Cinema 4D SDK
      • r20 sdk c++ • • JohnTerenece
      3
      0
      Votes
      3
      Posts
      572
      Views

      J

      Thanks for the response.

      I figured it would need to be the SceneHook but always best to double check.

      John Terenece

    • J

      MoData Effector Rotation

      Cinema 4D SDK
      • r20 c++ sdk • • JohnTerenece
      8
      0
      Votes
      8
      Posts
      1.2k
      Views

      ferdinandF

      Hello @johnterenece,

      so, to clarify this for myself. You have an ObjectData implementation which probably overwrites GetContour, i.e., builds a SplineObject , or draws spline-like information into the viewport. This plugin then has an InExcludeData parameter which is populated with Mograph effectors which are then meant to influence the vertices of your plugin. Consequently you want to do the deformation of your input geometry yourself and not like I assumed before not just clone stuff onto a PolygonObject that has been deformed by a PolyFx.

      First of all, I do not see really the point in reinventing the wheel in the first place, why not use PolyFX if it does what you need anyways? I would also stress that this cobling up of functionalties, deformation and generation in your case, in a single plugin and even single function in your case, is often not a very good idea, bot for technical and debugging reasons.

      As I said before, we cannot debug your code for you, but here are some points:

      The way you use a MoData tag is not its intended usage, the tag is reserved for MoGraph generators only and you hijacking it here is something you have to do on your own responsiblity. You also do not take the transforms of the effectors into account which might be a cause for your problem. There are other problems like using BaseObject::MakeTag and a possibly thread environment and the lack of error handling with maxon::BaseArray::Append which can lead to crashes, as you just store posible erros in resultVector and resultVector2D in your code which are undefined, but I assume to be of type maxon::Result<Vector> and maxon::Result<maxon:BaseArray<Vector>. But they are not the source of your problem, which likely lies in the fact that you do hijack MoData in the way you do and then do not respect the transforms of the effectors.

      You still have not told us the plugin type you are implementing, but if it is a ObjectData which generates a spline, I would simply build the spline on the orginal polygon geometry and then retun the spline with a PolyFX attached to it in GetContour. Much easier than reinventing the wheel here. You would have to pass through the content of the InExcludeData of your plugin to the PolyFX.

      Cheers,
      Ferdinand

    • J

      Voronoi Fracture Glitch

      Cinema 4D SDK
      • c++ r23 sdk • • JohnTerenece
      13
      0
      Votes
      13
      Posts
      1.8k
      Views

      ferdinandF

      Dear Community,

      this bug has been fixed with S26.1, the glitches in the Attribute Manger should not appear anymore.

      Cheers,
      Ferdinand

    • J

      DESC_PARENT_COLLAPSE Display

      Cinema 4D SDK
      • r20 c++ sdk • • JohnTerenece
      5
      0
      Votes
      5
      Posts
      691
      Views

      J

      Thanks for the response. I was assuming that would be the case.

      John Terenece

    • J

      FieldLayer GetDirty

      Cinema 4D SDK
      • c++ r20 sdk • • JohnTerenece
      10
      0
      Votes
      10
      Posts
      1.0k
      Views

      J

      Thanks for the response, that seems to have solved the issue.

      John Terenece

    • J

      FieldList Modifiers

      Cinema 4D SDK
      • r20 sdk c++ • • JohnTerenece
      6
      0
      Votes
      6
      Posts
      874
      Views

      ManuelM

      hi,

      Would be nice to share the solution.

      Cheers,
      Manuel