<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Topics tagged with 2026]]></title><description><![CDATA[A list of topics that have been tagged with 2026]]></description><link>http://developers.maxon.net/forum/tags/2026</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 03:35:27 GMT</lastBuildDate><atom:link href="http://developers.maxon.net/forum/tags/2026.rss" rel="self" type="application/rss+xml"/><pubDate>Invalid Date</pubDate><ttl>60</ttl><item><title><![CDATA[Programmatically created Redshift Lights in an Object Plugin converts lights into Null-Objekts without an function after making Objekt-Plugin editable]]></title><description><![CDATA[@ferdinand
Okay, great that you really dug into this. That could well have something to do with it.
However, if you look at my latest test plugin—the C4D scene—the "Illumination" checkbox on the Redshift light is enabled, yet when you select "Make Editable," the light still turns into just a Null Object. So, regardless of whether the illumination is on or not..
But as I mentioned earlier this only happens if the light originates from a temporary document in the code. Or rather, when the scene with the light is loaded into a temp_doc.

e.g. LoadDocument() or MergeDocument()

That is why simply checking the "Illumination" box does not work.
Cheers
]]></description><link>http://developers.maxon.net/forum/topic/16428/programmatically-created-redshift-lights-in-an-object-plugin-converts-lights-into-null-objekts-without-an-function-after-making-objekt-plugin-editable</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16428/programmatically-created-redshift-lights-in-an-object-plugin-converts-lights-into-null-objekts-without-an-function-after-making-objekt-plugin-editable</guid><dc:creator><![CDATA[ThomasB]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[GetWorkplaneMatrix is broken in Cinema 4D 2026.3]]></title><description><![CDATA[This will be fixed in the next upcoming hotfix.
]]></description><link>http://developers.maxon.net/forum/topic/16425/getworkplanematrix-is-broken-in-cinema-4d-2026.3</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16425/getworkplanematrix-is-broken-in-cinema-4d-2026.3</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[TimeLine DopeSheet not update]]></title><description><![CDATA[Hey, good news, this is fixed in the upcoming hotfix (2026.3.2).
]]></description><link>http://developers.maxon.net/forum/topic/16423/timeline-dopesheet-not-update</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16423/timeline-dopesheet-not-update</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[GeDialog::GetFilename currently broken in 2026.3.0]]></title><description><![CDATA[<p dir="auto">Dear community,</p>
<p dir="auto"><code>GeDialog::GetFilename</code> is broken in 2026.3.0 in both the C++ and Python API, returning the empty filename/string, even when a gadget holds a valid string. Plugins using dialogs which use <code>Filename</code> parameters are therefore currently malfunctioning when used in 2026.3.0. The issue does not exist in 2026.2.0 or earlier versions.</p>
<p dir="auto">We will deploy the hotfix for this issue in the coming weeks.</p>
<p dir="auto">Cheers,<br />
Ferdinand</p>
]]></description><link>http://developers.maxon.net/forum/topic/16422/gedialog-getfilename-currently-broken-in-2026.3.0</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16422/gedialog-getfilename-currently-broken-in-2026.3.0</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Thread safety when handling CTrack in TagData.Message() on button click]]></title><description><![CDATA[@ThomasB
That is not a misunderstanding. I am aware that MRDs can only see their own tickets. But we still needed that crash reported, so I did it. I would have done the same if you would not have been an MRD. I usually mention ticket IDs here so that I can come back and close bugs. As you might have noticed, I have moved this into the Bugs forum.
You do not have to do anything regarding that ticket, it it inaccessible for non-Maxonians. But we are still very much interested in a version of your plugin or a workflow which caused the crash. Otherwise we will not be able to reproduce and fix the issue. When you cannot provide it, this is also not a biggie (please do not waste time on this), then we have at least documented that there is somewhere a problem with audio tracks and how they handle memory while post-processing audio; in case we run into the same issue in the future in another context.
Cheers,
Ferdinand
To share plugins with us, you can either use a chat on backstage or send us a mail to sdk_support(at)maxon(dot)net. There is a good chance that when you use a binary data  attachment in a mail, that our mail system will filter out that attachment. When you use backstage (and upload the plugin there in a chat) that data would be permanently in the assets of that forum. When you just give us a link, we will delete your data once we do not need them anymore for debugging.
]]></description><link>http://developers.maxon.net/forum/topic/16421/thread-safety-when-handling-ctrack-in-tagdata.message-on-button-click</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16421/thread-safety-when-handling-ctrack-in-tagdata.message-on-button-click</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to export icons of asset]]></title><description><![CDATA[Hey @ferdinand ,
Sorry I forgot click Submit button 
well, that is the info I need, I use same tech to get icons for CMD, and now waiting for svg part in the future.
Cheers~
DunHou
]]></description><link>http://developers.maxon.net/forum/topic/16418/how-to-export-icons-of-asset</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16418/how-to-export-icons-of-asset</guid><dc:creator><![CDATA[Dunhou]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to draw svg to bitmaps?]]></title><description><![CDATA[I started to work last Friday on a BaseBitmap.InitWithVectorImage. It will for sure not make it into the next release of Cinema 4D, as we are too close to that, and I cannot make any promises when or if it will arrive. But I see value in this especially since I realized that you cannot even really use this in C++, as VectorImageInterface requires access to some internal components to be rasterized.
]]></description><link>http://developers.maxon.net/forum/topic/16415/how-to-draw-svg-to-bitmaps</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16415/how-to-draw-svg-to-bitmaps</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[[Python] Best practice for creating multiple custom tabs in a .res file (ObjectData)]]></title><description><![CDATA[@ferdinand thanks so much, problem solved!
]]></description><link>http://developers.maxon.net/forum/topic/16413/python-best-practice-for-creating-multiple-custom-tabs-in-a-.res-file-objectdata</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16413/python-best-practice-for-creating-multiple-custom-tabs-in-a-.res-file-objectdata</guid><dc:creator><![CDATA[rndm_cg]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Can we draw alpha image in viewport]]></title><description><![CDATA[I do not think that DRAW_ALPHA_FROM_IMAGE should not work. I just picked DRAW_ALPHA_NORMAL because it is the "most default one" out of the DRAW_ALPHA flags. I will have a look later. But you can for now probably just use DRAW_ALPHA_NORMAL.
]]></description><link>http://developers.maxon.net/forum/topic/16412/can-we-draw-alpha-image-in-viewport</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16412/can-we-draw-alpha-image-in-viewport</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to add tabs to tool plugins.]]></title><description><![CDATA[You very likely have not unpacked your resources. The resource folder found in an installation only contains a part of the application resources (we are doing this since release 2023 if I remember correctly). A good portion of the resources sits inside resource.zip for performance reasons and is unpacked on demand. You can just unpack the resource.zip into you resource folder without an performance or stability issues.
[image: 1779175199591-b8e8db94-ae20-42b4-9a5d-e92ac928e89d-image.png]
You as an MRD can also look at the Bugslife client, as it is probably the better example, as it uses more features of the quick tab GUI. But my answer above was targeted at a general audience who can see the resources for Bugslife  but not Bugslife itself, and it therefore is not a good example for them. Just grep the resource folder as I did in my screen for files that match the path dialogs/*.res (i.e., are res files for dialogs) and contain the word QUICKTAB.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16411/how-to-add-tabs-to-tool-plugins.</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16411/how-to-add-tabs-to-tool-plugins.</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to start a new line in plugin help with localization?]]></title><description><![CDATA[Another small tip: you can simply use a single &lt;br&gt; for line breaks — there’s no need to use &lt;b&gt; or &lt;/b&gt;.
Also, just like in the script example, scripts can support localized language strings as well:
"""
Name-US:Example
Name-CN:示例
Description-US:Example line 1.&lt;br&gt;Example line 2.&lt;br&gt;Example line 3.
Description-CN:示例第 1 行。&lt;br&gt;示例第 2 行。&lt;br&gt;示例第 3 行。
"""

]]></description><link>http://developers.maxon.net/forum/topic/16408/how-to-start-a-new-line-in-plugin-help-with-localization</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16408/how-to-start-a-new-line-in-plugin-help-with-localization</guid><dc:creator><![CDATA[Anlv]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Executing a Redshift texture bake from Python]]></title><description><![CDATA[Hello @mplec1,
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
The bake tag and by extension cinema::BakeTexture (and its Python equivalent c4d.utils.BakeTexture) unfortunately do not support Redshift, even for the older Xpresso based materials.
Redshift uses the tools found in Redshift/Tools/Texture Baking for baking. And while you can programmatically create a bake set and then programmatically click the 'Bake' button in it (which both would also work in a headless version of Cinema 4D, such as c4dpy), the following dialog which opens to set baking details and actually start the rendering is sealed, i.e., you cannot interact with it from the public API. And opening such dialog would also fail in a headless Cinema 4D instance.
So, I am afraid there is currently no solution for your problem. You can technically export the whole scene to a format such FBX or USD, and use the builtin baking output (which would also work in a headless environment, as long as you do NOT pass SAVEDOCUMENTFLAGS_DIALOGSALLOWED to the save/export operation). But the output of that automated baking is often of poor quality compared to manually baking object(s) via bake sets.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16407/executing-a-redshift-texture-bake-from-python</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16407/executing-a-redshift-texture-bake-from-python</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to select multiple files using &quot;c4d.storage.LoadDialog()&quot;?]]></title><description><![CDATA[Your approach is not necessarily worse, one could even argue that it is better. I personally would always avoid manually binding to an OS DLL via ctypes, but that is more a personal preference.
]]></description><link>http://developers.maxon.net/forum/topic/16400/how-to-select-multiple-files-using-c4d.storage.loaddialog</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16400/how-to-select-multiple-files-using-c4d.storage.loaddialog</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[GetEffectiveRenderData does not return per-take overrides for RDATA_FRAMEFROM &#x2F; RDATA_FRAMETO]]></title><description><![CDATA[Hello @vaishhg,
Thank you for reaching out to us and your comprehensive yet sparse problem description, this really makes things easier for us.
The problem is a bit that you somewhat forgot a crucial part: The scene data :). You provided this:

Create a Cinema 4D scene with a Main take (frame range 0-6)
Create child takes (V, E, R, A) and override the render data's frame range on each (e.g., V: 0-9, E: 0-23, R: 0-13, A: 0-17)

But I cannot recreate a scene with these instructions, unless you meant the second step in a rather metaphorical way (switching the render data itself via takes). I also talked with some of our support specialists, and the consensus seems to be that what you claim to be the case - a scene with take overwritten FROM/TO values - is not possible. What you can do, is create multiple render settings and then activate them via takes.
But Takes are a tricky subject, and I would not rule out that you somehow found a way to create take overrides for parameters of a render data instance. If so, please share the scene. Find also a scene attached which demonstrates what I discussed above: A scene that switches the active render data based on takes. It will print this with your script:
Take 'Main': FRAMEFROM=0, FRAMETO=90
Take '0_45': FRAMEFROM=0, FRAMETO=45
Take '0_90': FRAMEFROM=0, FRAMETO=90

take_renderdata.c4d
So, to formally answer your main question: When my assumptions above are true, your scene is printing the same values because each take does have the same values, as these two parameters are not directly overridable.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16395/geteffectiverenderdata-does-not-return-per-take-overrides-for-rdata_framefrom-rdata_frameto</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16395/geteffectiverenderdata-does-not-return-per-take-overrides-for-rdata_framefrom-rdata_frameto</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[NETWORK_CONNECTTIMEOUT with SSL]]></title><description><![CDATA[For now I am good. If I need further help, I will send the endpoint and function by email.
]]></description><link>http://developers.maxon.net/forum/topic/16394/network_connecttimeout-with-ssl</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16394/network_connecttimeout-with-ssl</guid><dc:creator><![CDATA[Rox]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Create Motion Clip Source with Python API]]></title><description><![CDATA[Hi @ferdinand, and thank you!
Your proof-of-concept and pointing me toward mxutils.GetSceneGraphString() was exactly what I needed to solve this.
By using the scene graph dumper on a native UI-generated Motion Source from a rigged character, I realized it's just a standard Ojoint hierarchy with normal CTrack objects.
I used GetClone(c4d.COPYFLAGS_NO_HIERARCHY) to perfectly replicate the Ojoint skeleton and injected the time variables into the container, and it maps and plays back perfectly. Thanks again.
]]></description><link>http://developers.maxon.net/forum/topic/16392/create-motion-clip-source-with-python-api</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16392/create-motion-clip-source-with-python-api</guid><dc:creator><![CDATA[jaroslavnovotny]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Batching Slider messages]]></title><description><![CDATA[Thank you.  MSG_DESCRIPTION_USERINTERACTION_END is just what was needed.
]]></description><link>http://developers.maxon.net/forum/topic/16390/batching-slider-messages</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16390/batching-slider-messages</guid><dc:creator><![CDATA[SteveHill3D]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Advice on implementing undo&#x2F;redo in a Tool]]></title><description><![CDATA[Hey @SteveHill3D,
Storing a tool state in a tag is possible, but a bit unusual. But generally you are on the right track. Tags are also internally often used as hidden data containers. When you write a modelling tool, you probably already found out that points and polygons are are actually stored in hidden tags on objects.
I am not sure though if using tags in tools is a good advice, as injecting all that data all the time into the scene graph is probably not the fastest. It depends a bit on what you are doing, but in general the solution is a bit unusual.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16388/advice-on-implementing-undo-redo-in-a-tool</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16388/advice-on-implementing-undo-redo-in-a-tool</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Tile rendering with Cinema 4D]]></title><description><![CDATA[Hey,
just as an FYI, I added this as an example to the 2026.2 rendering examples. You will be able to find it under \scripts\04_3d_concepts\rendering\render_document_tiles_2026_2.py. Since the script will use some 2026.2 features, it does not make much sense to post a preview here, as you will not be able to run it right now. The example also does the kernel border thing we discussed here.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16386/tile-rendering-with-cinema-4d</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16386/tile-rendering-with-cinema-4d</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[EventAdd doesn&#x27;t work with a modal dialog in C4D 2026]]></title><description><![CDATA[Hey @aturtur,
Thank you for reaching out to us. EventAdd will never really work in script manager scripts in the sense you mean it, unless you use hacks like dangling async dialogs (which as I always point out are a really bad idea).
The reason is that Script Manager scripts are blocking, i.e., all scene and GUI execution is being halted until the script finishes. You can hack yourself around this with a dangling async dialog, i.e., a dialog that lives beyond the life time of its script. But that is not a good idea, you should implement some form of plugin to host your asnyc dialog, as you otherwise risk crashes.
A modal dialog is just an extension of this. It is right in the name, it is modal, i.e., synchronous. All scene and GUI execution is being halted while this dialog is open and only resumes once it closes. When you want updates while your dialog is open, you need an async dialog (and a plugin which hosts it).
Cheers,
Ferdinand
Since you also might misunderstand the nature of EventAdd() I am also putting here the C++ docs I updated a few weeks ago, to better reflect the nature of it (not yet live):
/// @brief Enqueues an update event for the active document.
/// @details Only must be called when modifying the active document and is without meaning for other documents. The typical example of using `EventAdd` is after adding or removing elements from the active document; and wanting these changes to be reflected in the UI. The function itself is technically thread-safe, but the vast majority of operations that require calling `EventAdd` are not thread-safe and must be called from the main thread (and therefore calling this function is usually main thread bound). The function also does not enqueue a dedicated event item, but rather sets a flag that is checked when the next update event is processed. Therefore, calling `EventAdd` multiple times in one function scope is unnecessary overhead which must be avoided. Because such multiple event flags cannot be consumed while a function on the main thread is still running, and instead the event will only be consumed after that function returns.
/// @code
/// Result&lt;void&gt; AddCubes()
/// {
///   CheckState(maxon::ThreadInterface::IsMainThread(), "AddCubes must be called from the main thread."_s);
///
///   // EventAdd(); // We could also technically call it here with the same effect. The event
///                  // will only happen after this function returns.
///
///   BaseDocument* doc = GetActiveDocument();
///   for (int i = 0; i &lt; 10; ++i)
///   {
///     BaseObject* cube = BaseObject::Alloc(Ocube);
///     if (!cube)
///       return maxon::OutOfMemoryError(MAXON_SOURCE_LOCATION, "Failed to allocate cube object."_s);
///
///	    doc-&gt;InsertObject(cube);
///
///     // Calling EventAdd here would have no extra effect, since this event cannot be consumed while
///     // our main thread function is still running. And such extra calls on a large scale can cause
///     // considerable overhead.
///   }
///
///   // Notify C4D that the active document has changed. The very end of a function or scope is the
///   // canonical place to call EventAdd().
///   EventAdd();
/// }
/// @endcode
/// @see The article @link page_manual_coremessages Core Messages@endlink for more information.
/// @param[in] eventflag					The event to add: @enumerateEnum{EVENT}

]]></description><link>http://developers.maxon.net/forum/topic/16384/eventadd-doesn-t-work-with-a-modal-dialog-in-c4d-2026</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16384/eventadd-doesn-t-work-with-a-modal-dialog-in-c4d-2026</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>