Changes in S26

Changes in S26.013

Development Environment

The S24 Project Tool must be used to generate projects. More information on the project tool can be found in the Project Tool page.

Windows:

  • Windows 10 and Visual Studio 2019.

Mac OS:

  • To support Intel CPUs only. MacOS 10.14 is required while MacOS 10.15 is the recommended version and Xcode 11 is required for Intel plugins while Xcode 12 is recommended in general.
  • To support ARM CPUs. MacOS 10.15.7 or later with Xcode 12 is required to build ARM plugins. It is mandatory to provide an ARM build to support M1 Mac, Rosetta2 mode is no longer supported. To support both Intel and ARM-based Apple hardware via Universal Binaries.

Linux:

  • CentOS 7 64bits or Ubuntu 18.04 LTS, 64bit with GCC 9.3.1 12, glibc 2.17, python 3 is required and at least Scon 3.1.2.

S26 Compatibility

Plugins compiled with R25 versions are compatible with Cinema 4D S26, however plugins compiled with a version prior to R25 must be rebuilt with the S26 API.

For plugins supporting M1 Macs, as announced 2 years ago, Cinema 4D S26 feature the use of AVX instructions. This means that for M1 Macs, Rosetta2 mode is no longer supported by Cinema 4D. So to support M1 Macs, it is mandatory to provide users with an ARM compiled version as described in the Universal Binaries page.

Asset API

The Asset Handbook, introduced in the previous version of the documentation, has been extended. As a reminder, this handbook explains the concept of the Cinema 4D Asset browser and how presets are built around the Asset API.

As a result, many examples have been added to Asset API Examples presenting the basic operations of the asset API such as searching, loading and creating assets, reading and writing asset metadata and manipulating asset databases. Finally, a complete example on the implementation of a custom presset asset type wrapping a custom data type to be exposed by the asset browser has been added in Implementing Preset Assets.

Asynchronous I/O and Progress Monitor API

Cinema 4D S26 introduces a new Task Manager offering visibility on running tasks, and many more tasks are now performed in the background. Unlike the old system, it is now possible to have several progress bars for each task. To use this new progress manager, the maxon::MediaProgressInterface has been renamed to maxon::ProgressInterface. The maxon::BackgroundProgressInterface representing the Task Manager was introduced as well as the BackgroundProgressRef interface representing a visible entry of the Task Manager. An example of how to add multiple asynchronous tasks to the Task Manager can be found in the file cinema4dsdk\sourcegui\progressjobs.cpp in the sdk.zip archive provided in the Cinema 4D installation.

To support loading a file in the background, the SceneLoaderData have been enhanced with "PLUGINFLAG_SCENELOADER_SUPPORT_ASYNC" flags. Thus the LoadFile function has a new argument to define whether the file should be loaded asynchronously or not. The LoadDocument and MergeDocument methods have added support for a callback argument, used to notify the progress of the file load. Finally an example can be found in the Disc I/O page.

Nodes API Helper

With the S26 version of Cinema 4D, helper functions from maxon.GraphModelInterface have been marked as deprecated and moved to the new maxon.GraphModelHelper interface. This new interface consists of static methods only. The interface provides convenient methods to simplify the use of the Node API, but does not offer more possibilities than you would have using the standard methods.

The new maxon::GraphModelHelper allows to:

  • Mute or unmute a connection, check if it exists or delete it.
  • Select or deselect nodes, ports, connections or return if the items are selected.
  • Create ports on groups or on the root.
  • Search for connected nodes (predecessors, successors).
  • Search for nodes or ports by name, ID, asset ID.

Various changes

  • Added CMD_HIDDEN flag, allowing to hide a command if this value is returned in the CommandData::GetState method.
  • Added the Filename::FileSelectMultiple() function, allowing the selection of more than one file or folder at the same time. An example can be found in the Select Files and Folders page.
  • ObjectData can now be registered as an object of another category such as camera or light via the C4DOS.Bo->RegisterObjectTypeToCategory function. The category of the object will affect how the object is displayed or selectable when changing the display or selection filter. On the other hand the function C4DOS.Bo->ObjectTypeToCategory allows to retrieve the category of an object.
  • Added the maxon::Id::Create function, allowing the creation of an Id from a string.
  • Variation Shader provide an API to manipulate inner layer through parameter access. An example can be found as a Python script in shader_variation_s26.py.
  • Added the MSG_DESCRIPTION_IMPEXPORT_VERIFY_SUFFIX message, it is sent after the export options dialog is closed and before the save dialog is displayed. This allows you to specify whether this file should be added to the list of recent files and to retrieve the file's export suffix, which may be different depending on the export options.
  • Improved description of frameworks on the MAXON API Frameworks page.

See API Changes in S26.013 for the detailed list.