• 0 Votes
    3 Posts
    639 Views
    ymoonY
    @ferdinand Thank you for your kind explanation. I will explore other options.
  • 0 Votes
    3 Posts
    695 Views
    ferdinandF
    Hey @skibinvitaliy, 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: How to Ask Questions. About your First Question No one is judging you here, problems are part of the game and what we are here for to help with . But please familiarize yourself with our forum rules, such question should be accompanied by example code and the version you are migrating from, as we otherwise mostly have to guess what is going wrong. I am assuming you are migrating from a pre-2025 SDK, that is at least what your errors imply. With 2025 we introduced our cinema namespace. Please follow our Migrating Plugins to the 2025.0 API guide. You are likely just missing a couple of using namespace cinema; at the top of your files. Cheers, Ferdinand
  • 0 Votes
    6 Posts
    1k Views
    i_mazlovI
    Hi Sebastian, correct, it hasn't been included into 2025.2.0. The next minor release will likely have it fixed though. Cheers, Ilia
  • 0 Votes
    6 Posts
    1k Views
    ferdinandF
    Hey, there is no NOT in the query syntax, if that is what you are asking for, although that could be a cool idea. What you would have to do, is apply two partial descriptions in one ApplyDescription call, one that first selects all nodes with an enabled preview and disables it, and then one which selects the end node and disables its preview. Or just carry out two successive ApplyDescription calls. Cheers, Ferdinand PS: You can of course do whatever you want with your module attributes, and things like __author__, __license__, __email__, etc are not formally standardized, but the quasi standard module attribute is called __author__, there is no __authors__. When you have multiple authors, you usually put them semicolon separated into the __author__ field. When you use __authors__, tools which support that quasi standard won't find your attribute and the whole purpose of these module attributes is being machine readable, as you could otherwise also just write things into the doc string of the module. See: The original Python Enhancement Proposal by Guido van Rossum (the now famous pep8) which introduced the concept of module dunder attributes and one of the many guides of how people interpret this, what this has evolved into.
  • 0 Votes
    5 Posts
    1k Views
    M
    Hi sorry I fixed my code. Cheers, Maxime.
  • Python Tag: Detecting Edge Selection Changes

    Cinema 4D SDK windows 2025 python
    3
    0 Votes
    3 Posts
    660 Views
    ymoonY
    Thanks, I'll test Dirty on selection.
  • 0 Votes
    2 Posts
    768 Views
    i_mazlovI
    Hi @BigRoy, Please check our Support Procedures in regards of the question structure, namely: Singular Question: The initial posting of a support topic must contain a singular question. Do not ask ten things at once, that makes it extremely hard to answer topics. Break up your questions into multiple topics. Asking follow-up questions is allowed but they must be bound to the initial subject. Singular Subject: From all this follows that a topic must have a singular and sparse subject tied to a specific problem. 'My Nodes API Questions' is not a valid topic as it splits up into too many subtopics. A valid subject could be 'accessing node attributes' or 'traversing a node graph'. One could for example first ask 'how to get the name attribute of a node?' and then ask a follow up question about 'how to get the icon attribute too?'. This specifically applies to plugins, just because you have two problems with one plugin does not mean that they should be asked in the same topic. Regarding you question, there's no high level API that allows you to get a list of all files you've mentioned at once. This effectively means that not only do you need to access this yourself, but you also need to do so for the render engines you'd like to support, as these are likely going to differ among them. Specifically for the Redshift AOVs and output files question, please check related threads: get the names of redshift multi passes AOV names from the render settings Add Expression Value in Render Settings Save Path As for the takes, the only application where they make any sense is the Render Queue. If you're not using it, it's only the active take that's being rendered. Of course you can deal with it by using SetCurrentTake function. I suggest you keeping this thread for the "render output files" part of your initial question and encourage you to make separate postings for your other questions that diverse from this topic here. Cheers, Ilia
  • 0 Votes
    4 Posts
    770 Views
    ferdinandF
    Hey @Smolak, I understood what you wanted to do, but it is still not possible. First of all, the OCIO color space enum values are dynamically assigned, i.e., the value 3 might not always mean the same space. In the OCIO API there are special conversion functions for that, but you could also do that manually by parsing the description of the document. But you will never be able to apply such value then, because to do that, you have to call BaseDocument::UpdateOcioColorSpaces which does not exist in Python (yet). See the C++ Docs for an example. Cheers, Ferdinand
  • 0 Votes
    3 Posts
    868 Views
    B
    Thank you @ferdinand for the help! Write raw memory does help a lot, appreciate!
  • 0 Votes
    9 Posts
    2k Views
    A
    thanks @ferdinand this makes perfect sense now. I appreciate the time you took to explaint he best practice.
  • 0 Votes
    5 Posts
    1k Views
    V
    @ferdinand You are correct, there was no further question, I was just closing the loop in case someone else ran into something similar. Thanks for the additional suggestions. -v
  • create link parameter accept Alembic tag

    Cinema 4D SDK r21 2025 c++
    3
    0 Votes
    3 Posts
    781 Views
    B
    @m_adam, Thank you! Yes, Message(GeListNode* node, Int32 type, void* data) works for me. I'm wondering shall my plugin just return true after processing MSG_DESCRIPTION_CHECKDRAGANDDROP in the Message() function (set the value of DescriptionCheckDragAndDrop::_result) or still call SUPER::Message(node, type, data); at the end? It looks to me that calling SUPER::Message(node, type, data); at the end still works. But the example in MSG_DESCRIPTION_CHECKDRAGANDDROP Message doesn't call SUPER::Message(node, type, data);. Thanks!
  • How to create UV of obj.

    Cinema 4D SDK windows python 2025
    4
    0 Votes
    4 Posts
    934 Views
    M
    I use this to Thank You Ferdinand. This is how I imagine an SDK example should look like .... a simplest version , an altered simple version and a complex touching the boundaries of the subject. I am thankful and praise your work .... ! cheers mogh
  • Read Alembic tag's data

    Cinema 4D SDK r21 2025 c++
    3
    0 Votes
    3 Posts
    785 Views
    B
    @m_adam, Thank you very much, this works for me!
  • 0 Votes
    15 Posts
    3k Views
    ferdinandF
    Hey @hSchoenberger, as I said, what we provided is mostly a workaround, we'll have to streamline things. I cannot talk much about the details, since I do not yet know myself how we will solve this. Please open new topics for new questions in the future, especially bug reports should remain clean. Our render pipeline, and that includes commissioning third party renders, converges into a singular point. There are currently four entry points into that pipeline: The built-in commands such as "Render to Picture Viewer", "Render View", "Render Region", etc. For them this pipeline has been built initially. Also headless Cinema 4D instances such as the command line or c4dpy use this mechanism when invoked for a rendering. The c4d.document.BatchRender, uses mostly the same route as (1), but the drawback compared to RenderDocument is that you must always operate with files on disk. I.e., you cannot just change a document im memory and then render it, you must first save it to disk, and also your output will provided on disk and not as bitmaps in memory. As stated before, this is the way I recommend. You should not have to apply an OCIO hacks here, we are at least not aware of any issues. The .net Renderer, a.k.a, Team Render, similar to (2) functionally, just more complicated. And other than for (2), not all third party renderers do support Team Render. RenderDocument differs from these three in that it does not take the full length of our render pipeline, but just a subsection of it. RenderDocument is used internally to render icons and preview images and was never intended to be the 'programmatic rendering interface' it unfortunately has been marketed as and is used as by many third parties. The advantage of RenderDocument is that you can easily operate in memory only without any disk activity. Whenever I was asked in the past, I always told people that using RenderDocument as a render pipeline endpoint is not such a good idea because that is not what it is designed for. Mainly because there are also other short-comings due to it not taking the full route in the render pipeline (animations for example or the render data handling). With OCIO this worsened, as we have intertwined the render pipeline, the Picture Viewer, and saving output to disk even more, i.e., things RenderDocument is naturally left out of. I simply do not know yet how we will fix this, as this is largely not my code. But for me it is clear that this must be simplified in Python. This could either happen in the form of fixing RenderDocument regrading its Picture Viewer and BaseBitmap.Save, i.e., BitmapSaver interactions, or by giving the BatchRender more RenderDocument like qualities. The solution to this will not be super simple, and it will likely not arrive within 2025. For now there is a somewhat functional workaround for RenderDocument and you can always use the BatchRender. Cheers, Ferdinand
  • Order Of Hierarchy Updates For Fieldobjects

    Cinema 4D SDK 2025 c++
    3
    0 Votes
    3 Posts
    670 Views
    J
    @ferdinand Thanks for the response. That's what I was afraid the situation would be, I believe I have a work around that will be able to fulfill what I need it to do. John Thomas
  • 0 Votes
    4 Posts
    797 Views
    ferdinandF
    Hey @vhardy, yes, @m_adam as supporting expressions on his Todo list for the VS Code bridge. But it is not very high in our priority list, you are the first user requesting it. I gave the subject a gentle nudge in our task tracking. FYI: Generally we do not make any guarantees if or when we will implement something. Cheers, Ferdinand
  • 0 Votes
    3 Posts
    664 Views
    ferdinandF
    Hey, so I talked with Fritz, I got the direction right, but there are some relevant details. When you set the flag for an importer hook, it signals that you do not want Cinema 4D to carry out the automatic scene color conversion along the conversion path implied in the settings. So, when you have a importer, and it does NOT set the flag, and you would import a scene with these settings: [image: 1740580639731-c3e3d6f8-2734-41d2-abfb-f7af807c12f8-image.png] Cinema 4D would transform all scene colors from sRGB-2.1 to the Render Space. When you DO set the flag, Cinema 4D will NOT do that, and the importer is expected to handle that. So, when you need to set this flag, this implicitly means that something with your scene data is not correct, they are not meant to be sRGB. You can of course also change the respective setting, Raw for example means as always no conversion. Without a bit more details about your scene data and its provenance, it is hard to give here good advice. Cheers, Ferdinand PS: I might update the im/exporter examples at some point to showcase the custom case, but the default should be to NOT to set the flag, and let the intended color management of Cinema 4D do its work.
  • 0 Votes
    10 Posts
    2k Views
    B
    Thank you very much for all your detailed explanation, @ferdinand!
  • 0 Votes
    2 Posts
    1k Views
    ferdinandF
    Hello @patrick_cue, 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 Please do not use other topics for your support requests, especially when they are bug tickets. Asking a follow-up questions such as "when will this be fixed" or "does this also apply to situation B" in a foreign topic is allowed and even encouraged. But a specific case with your specific code and data always warrants a new thread. Please also familiarize yourself with Support Procedures: Asking Questions, as while it its clear that you put effort into make yourself understood (thanks!), this is also bordering a bit on the too much information. The bug tracked by the other topic, is that there is currently no way in the Python API to use c4d.documents.RenderDocument in an OCIO document (i.e., every document since 2025.0) and then display that bitmap with the correct colors via c4d.bitmaps.ShowBitmap. It is important to understand that: The bitmap data generated is just fine, when you save the bitmap to disk, everything is correct. It is just that the Picture Viewer does not display it incorrectly. The reason for that is that in Python OCIO is not fully exposed in 2025.1.0 and you cannot set the OCIO profiles of the rendered bitmap there. Internally, we have been working on an OCIO port for Python allowing for color conversions and more things, including OCIO managing bitmaps. We also added a function to bake a display and view transform into an sRGB image - another route how this RenderDocument issue can be solved. The goal is to publish this with an upcoming version of the Python SDK, ideally the next, but as always we cannot make any guarantees. You cannot fix this issue yourself in 2025.1.0 and lower. Cheers, Ferdinand