• Sub materials links and undo

    Cinema 4D SDK c++ windows s26
    5
    0 Votes
    5 Posts
    274 Views
    ferdinandF
    @DronKozy Yeah, I got the general direction, that you are probably implementing a material mixer type of material/shader. When you implement a full render engine binding, you should go the event notification route, as I am sure you can then easily handle the (slight) complexity that comes with them. Regarding the architecture, in principle you can do with whatever you want. As Maxon employee I would of course recommend to use our Nodes API (what you call 'native'). The SDK contains both code examples and documentation about this. But this biggest flaw of the Nodes API is probably that it is not entirely non-trivial. But implementing a full node editor also requires a relatively high level of expertise about our APIs, although in different areas. Currently Redshift, Vray, Arnold, and CentiLeo use the Nodes API and all other render engines (Corona, Octane, Cycles, etc.) use either a completely custom system or the old Xpresso Nodes API. Cheers, Ferdinand PS: When you are developing a render engine binding, you might want to consider our Maxon Registered Developer Program.
  • 0 Votes
    3 Posts
    595 Views
    lasselauchL
    Thank you, Ferdinand. (Again!) That was exactly what I needed. It's working great now! Thanks for taking the time to answer this so thoroughly and quickly! Cheers, Lasse
  • 0 Votes
    24 Posts
    8k Views
    Y
    Oh, you've edited your previous message! Thanks! I will try it.
  • Image Viewer API

    Cinema 4D SDK 2024 s26 python
    6
    0 Votes
    6 Posts
    2k Views
    K
    @i_mazlov Thanks for the reply. I may have described it wrong. I am talking about the image viewer. It seems that there is currently no API interface to get the number of frames rendered, nor can I get the total number of frames in the rendering settings.
  • 0 Votes
    3 Posts
    1k Views
    B
    Hello, Thanks for your complete answer. I think I will not start in thread management, but opted for your last solution which will still go through an external image but in an automated way by a python script. Thanks again.
  • How to Swap location in Object Manager

    Cinema 4D SDK c++ s26 windows
    3
    2
    0 Votes
    3 Posts
    1k Views
    P
    @ferdinand Thank you very much for your reply
  • 0 Votes
    2 Posts
    930 Views
    ferdinandF
    Hello @pchg, Thank you for reaching out to us. Please note that we normally expect question to be accompanied by code. It is also still unanswered in which context you want to do this: As an effector, as a Script Manager script, etc. Cheers, Ferdinand Result [image: 1730718564670-347fc2f0-a0cd-4583-816b-b3e38fda2280-image.png] Code """Reads out the particle data of a MoGraph Cloner object. Must be run as a Script Manager script in Cinema 4D with a MoGraph Cloner object selected. """ import c4d doc: c4d.documents.BaseDocument # The currently active document. op: c4d.BaseObject | None # The primary selected object in `doc`. Can be `None`. def main() -> None: """Called by Cinema 4D when the script is being executed. """ if not op or not op.CheckType(c4d.Omgcloner): raise ValueError("Please select a MoGraph Cloner object.") # Get the particle data from the cloner object. data: c4d.modules.mograph.MoData = c4d.modules.mograph.GeGetMoData(op) if data is None: return # Get the transform and color data for the particles. matrices: list[c4d.Matrix] = data.GetArray(c4d.MODATA_MATRIX) colors: list[c4d.Vector] = data.GetArray(c4d.MODATA_COLOR) # Iterate over all particle data and do something with it. If we were in an effector, we could # also write back data. Technically, we could also write back data here, but it would be volatile. for i in range(data.GetCount()): matrix: c4d.Matrix = matrices[i] color: c4d.Vector = colors[i] print(f"Particle {i} at {matrix.off} with color {color}") if __name__ == '__main__': main() And here is the 2024.0.0 effector full control mode default code which more or less is very similar but also writes data. """Realizes an effector that attracts MoGraph particles spherically around its origin. Add the example to a Matrix object to understand its effect. In Full Control mode we can realize a true attraction force as we have full control over the particle values. Compare this example to Parameter Control mode to understand the difference. """ import c4d op: c4d.BaseObject # The Python Effector object containing this code. gen: c4d.BaseObject # The MoGraph Generator executing `op`. doc: c4d.documents.BaseDocument # The document `op` and `gen`are contained in. def main() -> bool: """Called by Cinema 4D to evaluate the effector. """ # Get the particle data for the effector #op. Get out when either the data cannot be retrieved. data: c4d.modules.mograph.MoData = c4d.modules.mograph.GeGetMoData(op) if data is None: return 1.0 # The transform of both the generator and the effector, the transforms of all particles, and # finally the position of the effector as if it would live in the coordinate system of the # generator. mgGen: c4d.Matrix = gen.GetMg() mgEff: c4d.Matrix = op.GetMg() matrices: list[c4d.Matrix] = data.GetArray(c4d.MODATA_MATRIX) q: c4d.Vector = ~mgGen * mgEff.off # For each particle compute a weight `w` for how much the particle should be attracted to the # attraction point `q`, and then blend the particle position between the attraction point and # its own position `p`. for i in range(data.GetCount()) : p: c4d.Vector = matrices[i].off w: float = c4d.utils.RangeMap((mgGen * ~mgEff * p).GetLength(), 0., 100., 0., 1., True) ** 3. matrices[i].off = c4d.utils.MixVec(q, p, w) # Write the new data back. data.SetArray(c4d.MODATA_MATRIX, matrices, op[c4d.FIELDS].HasContent()) return True
  • How to modify the index

    Cinema 4D SDK s26 c++ windows
    4
    1
    0 Votes
    4 Posts
    1k Views
    P
    @ferdinand Thank you for your reply
  • 0 Votes
    4 Posts
    1k Views
    ferdinandF
    Oh, my bad, I did overlook that you flagged this as S26. Yes, mxutils is a 2024+ feature. I used it here to carry out type checks, e.g., that a document or bitmap are not null/none. The code will run without them, but it will fail more gracefully with these checks. You could replace these calls with manual checks: bmp: c4d.bitmaps.BaseBitmap = c4d.bitmaps.MultipassBitmap( int(rData[c4d.RDATA_XRES]), int(rData[c4d.RDATA_YRES]), c4d.COLORMODE_RGB)) if bmp is None: # or more precise: if not isinstance(bmp, c4d.bitmaps.BaseBitmap) ... raise MemoryError("Failed to allocate bitmap.") Cheers, Ferdinand
  • 0 Votes
    4 Posts
    2k Views
    O
    And that's good to know about using GetMl() over Get Mg(), mainly for the performance reasons if I understood correctly.
  • Set UVWs for Ngons?

    Cinema 4D SDK s26 python
    4
    1
    0 Votes
    4 Posts
    1k Views
    E
    @ferdinand I figured this issue out so you can mark this as solved/closed. Thank you.
  • Not able to post?

    Cinema 4D SDK s26 python
    2
    0 Votes
    2 Posts
    811 Views
    ferdinandF
    Hey @ELJeffery, Thank you for pointing this out. We are generally aware of this issue. If anyone else is experiencing similar issues, please point them out. While we are aware that the issue exists and we can see the incident reports in the back end, it is not 100% clear to us how frequent this does happen to human users (and how urgent this is issue is). So, when you run into the issue too, please drop us here the Cloudflare Ray ID of your error page. As an FYI, the issue usually rectifies itself after a few minutes. Cheers, Ferdinand
  • 0 Votes
    2 Posts
    1k Views
    ferdinandF
    Hello @Hohlucha, Welcome to the Maxon developers forum and its community, it is great to have you with us! Getting Started Before creating your next postings, we would recommend making yourself accustomed with our forum and support procedures. You did not do anything wrong, we point all new users to these rules. Forum Overview: Provides a broad overview of the fundamental structure and rules of this forum, such as the purpose of the different sub-forums or the fact that we will ban users who engage in hate speech or harassment. Support Procedures: Provides a more in detail overview of how we provide technical support for APIs here. This topic will tell you how to ask good questions and limits of our technical support. Forum Features: Provides an overview of the technical features of this forum, such as Markdown markup or file uploads. It is strongly recommended to read the first two topics carefully, especially the section Support Procedures: Asking Questions. About your First Question This is a development forum and your question does not seem to be development related. Please read our forum guidelines lined out above. I have moved this topic into General Talk for now. When this is indeed an end user question we must ask you to use our Support Center, the developer forum is not the right place for end user questions. When this is a development question, then please line out the current code you have and provide a meaningful problem description. Cheers, Ferdinand
  • 0 Votes
    8 Posts
    3k Views
    C
    @i_mazlov , Do you speak Russian?
  • How to preserve the animation of a sphere

    Cinema 4D SDK s26 c++ windows
    9
    2
    0 Votes
    9 Posts
    3k Views
    P
    @i_mazlov thank you very much
  • 0 Votes
    3 Posts
    1k Views
    F
    Hello @ferdinand Thank you for your guidance. I'll follow your suggestion and reach out to the support team for assistance with my query. Best regards, Tomasz
  • How to get sphere coordinates

    Cinema 4D SDK s26 c++ windows
    6
    2
    0 Votes
    6 Posts
    2k Views
    i_mazlovI
    Hi @pchg , This thread is almost a full duplicate of your adjacent thread: How to preserve the animation of a sphere. The answer is provided there. Cheers, Ilia
  • 0 Votes
    8 Posts
    3k Views
    F
    Hi @i_mazlov , Thank you for confirming my solution. Best regards, Tomasz
  • Boundary Edges to Spline in Python

    Cinema 4D SDK s26 python 2024 2023
    3
    0 Votes
    3 Posts
    2k Views
    F
    Dear Ilia, I greatly appreciate your assistance; it was precisely what I needed. Thank you for your guidance and I wish you a wonderful day. Best regards, Tomasz
  • How to Get cloner data in C++

    Cinema 4D SDK s26 c++ windows
    2
    1
    0 Votes
    2 Posts
    889 Views
    M
    Hi you can find in read_modata_color_r16.py a Python example doing exactly that. To retrieve the position instead of retrieving the MODATA_COLOR your need to retrieve MODATA_MATRIX. There is no difference for doing it in C++. Cheers, Maxime.