Summarizes the API and API documentation changes made between Cinema 4D versions 2023.0.0 and 2023.1.0.
Overview
For an an overview of the required development environment for this release on Windows, MacOS, or Linux, see Development Environments.
Major Changes
| Updated | The OpenColorIO (OCIO) API exposure has been finalized. Not yet included is the ability to access the raw OCIO profiles associated with a BaseDocument instance. This feature will be added with 2023.2.0. | 
| Added | Added Color Management Manual : Convert color data between color spaces and color formats provided by the maxon API or loaded from disk. | 
| Added | Added OpenColorIO Manual : Convert colors with the color profiles provided by the OpenColorIO (OCIO) configuration of a scene. | 
| Added | Added the example.image example to the Extended SDK on GitHub. | 
Minor Changes
API Changes
Summarizes the technical changes made to the public APIs of Cinema 4D within the scope of these change notes.
asset.framework
  Added:
New 
file for CommandAssetInterface and its metadata attributes.
const char const char const char * file
Definition: object.h:439
    Added:
static MAXON_METHOD Result<LiteralId> HasKeyword(
const AssetDescription& target, 
const Id& keywordId);
 
#define MAXON_METHOD
Definition: interfacebase.h:1001
  
cinema.framework
  Added:
#define FILENAME_HELPSTRING 10006 
#define TREEVIEW_NO_ENTER_FORWARD 'noef'
    Added:
Definition: c4d_basedocument.h:498
PyObject * src
Definition: abstract.h:305
     Added:
Message struct for some message types.
Definition: lib_description.h:844
Definition: lib_description.h:993
     Added:
CONVERSION_FLAGS
Definition: datatypebase.h:62
     Added:
Definition: lib_description.h:330
Definition: c4d_gedata.h:83
Definition: resultbase.h:766
     Added:
New 
file for symmetry generator 
object.
    Added:
@ ID_VOLUMESEQUENCE_FIXEDCACHE
Definition: ovolumesequence.h:19
     Added:
@ HAIR_SDYNAMICS_PBD_FORCES_INEX_PYRO
Definition: thairsplinedynamics.h:100
     Added:
@ PBD_CONSTRAINT_TAG_TEAR_MODE_ABSOLUTE
Definition: tpbdconstraint.h:27
@ PBD_CONSTRAINT_TAG_TEAR_MODE
Definition: tpbdconstraint.h:25
@ PBD_CONSTRAINT_TAG_TEAR_ABSOLUTE_DISTANCE
Definition: tpbdconstraint.h:28
@ PBD_CONSTRAINT_TAG_TEAR_MODE_RELATIVE
Definition: tpbdconstraint.h:26
     Added:
@ PYRO_TAG_FUEL_INITIAL_CONTINGENT
Definition: tpyro.h:44
@ PYRO_TAG_SUBSTEP_MODE
Definition: tpyro.h:33
@ PYRO_TAG_FUEL_TYPE
Definition: tpyro.h:38
@ PYRO_TAG_DENSITY_ENABLED
Definition: tpyro.h:53
@ PYRO_TAG_FUEL_TARGET_FRAME
Definition: tpyro.h:43
@ PYRO_TAG_SURFACE_WEIGHTS_TEMPERATURE
Definition: tpyro.h:46
@ PYRO_TAG_FUEL_MATCH_BURNING_RATE
Definition: tpyro.h:52
@ PYRO_TAG_FUEL_GROUP
Definition: tpyro.h:47
@ PYRO_TAG_SUBSTEP_MODE_DISCRETE
Definition: tpyro.h:34
@ PYRO_TAG_VELOCITY_GROUP
Definition: tpyro.h:50
@ PYRO_TAG_FUEL_CONSTANT_PRESSURE
Definition: tpyro.h:55
@ PYRO_TAG_FUEL_TYPE_ONESHOT
Definition: tpyro.h:39
@ PYRO_TAG_FUEL_BURNING_RATE
Definition: tpyro.h:42
@ PYRO_TAG_FUEL_TYPE_CONTINUOUS
Definition: tpyro.h:41
@ PYRO_TAG_EMITTER_ENABLED
Definition: tpyro.h:36
@ PYRO_TAG_TEMPERATURE_GROUP
Definition: tpyro.h:48
@ PYRO_TAG_DENSITY_MIN
Definition: tpyro.h:51
@ PYRO_TAG_SUBSTEP_MODE_CONTINUOUS
Definition: tpyro.h:35
@ PYRO_TAG_SURFACE_WEIGHTS_FUEL
Definition: tpyro.h:45
@ PYRO_TAG_FUEL_TARGET_FRAME_END
Definition: tpyro.h:54
@ PYRO_TAG_DENSITY_GROUP
Definition: tpyro.h:49
@ PYRO_TAG_SURFACE_WEIGHTS_DENSITY
Definition: tpyro.h:37
@ PYRO_TAG_FUEL_TYPE_CONTINGENT
Definition: tpyro.h:40
@ PYRO_TAG_SUBSTEPS
Definition: tpyro.h:32
     Added:
@ SLA_DIRTY_VMAP_TAG_NAME
Definition: xslavertexmap.h:9
     Added:
void UpdateOcioColorSpaces();
Definition: basearray.h:412
     Added:
#define MSG_DESCRIPTION_IMPEXPORT_VERIFY_FILENAME
    Added:
Definition: apibaseid.h:253
     Added:
#define PLUGINFLAG_INTERNAL (1 << 20)
    Added:
Definition: c4d_baseselect.h:32
PyObject * other
Definition: dictobject.h:70
maxon::Bool Bool
Definition: ge_sys_math.h:55
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsEqual(PREDICATE &&predicate, const T1 &a, const T2 &b)
Definition: collection.h:102
     Added:
#define TAG_VARIABLEFIELD (1 << 9)
    Added:
TAG_ADDEDTOCACHE
Tag was added to cache objects.
Definition: ge_prepass.h:118
FORBID_COLOR_CONVERSION
Don't do OCIO color conversion.
Definition: ge_prepass.h:117
     Added:
#define Osymmetrygenerator 1060011
#define Opyro 1059580
#define Tgeneric 431000047
#define Tpyro 1059387
#define WPREF_MATMANAGER_DEFAULT_MATERIAL_AUTO 1059942
    Added:
New enumeration that describes vector volume types.
    Old:
Definition: string.h:1490
const char * doc
Definition: pyerrors.h:226
   New:
PyCompilerFlags * flags
Definition: ast.h:14
ADD_UNDO
Definition: lib_scene_color_converter.h:1
     Old:
MAX
Maximum NBIT.
Definition: ge_prepass.h:119
     Old:
#define API_VERSION 2023000
  New:
#define API_VERSION 2023100
  
cinema_hybrid.framework
  Added:
Definition: c4d_basematerial.h:28
Delegate<::BaseMaterial *(::BaseDocument *, const Data &textureUrlOrColor)> CreateMaterialWithDataDelegate
Definition: createdefaultmaterialdelegate.h:102
     Added:
class RendererDefaultMaterialInterface
  
core.framework
  Added:
maxon::Char Char
Definition: ge_sys_math.h:56
#define MAXON_ATTRIBUTE_FORCE_INLINE
Definition: apibase.h:111
Bool LessThan(UInt a1, UInt a2, UInt b1, UInt b2)
Definition: integer.h:151
     Added:
#define MAXON_OFFSETOF_NON_STANDARD_LAYOUT(T, M)
    Added:
static const DataType& GetType()
    Added:
template <typename T, Bool HAS_ERROR> struct AddResultHelper
template <typename T> struct AddResultHelper<T, true>
template <typename T> struct AddResultHelper<ResultOk<T>, true>
template <typename T> struct AddResultHelper<Result<T>, true>
template <> struct AddResultHelper<ResultMemT<
Bool>, true>
template <typename T> struct AddResultHelper<ResultMemT<T*>, true>
template <typename T> struct AddResultHelper<ResultRef<T>, true>
typename maxon::details::AddResultHelper< T, HAS_ERROR >::type AddResult
Definition: interfacebase.h:2033
T type
Definition: interfacebase.h:1998
    Added:
Bool ReserveInitialChunk(
const Int chunkSize, INDEXTYPE& 
i, INDEXTYPE& toChunk)
 
Py_ssize_t i
Definition: abstract.h:645
maxon::Int Int
Definition: ge_sys_math.h:64
    Old:
#define MAXON_CORE_FRAMEWORK_VERSION 2022901
  New:
#define MAXON_CORE_FRAMEWORK_VERSION 2023100
    New:
arrayallocator.h (The 
names of entities inside the 
file remained the same).
PyObject PyObject * names
Definition: code.h:159
    Old:
template <
typename LOOP> 
UInt LocalLoop(DynamicContext<USERCONTEXT, INDEXTYPE>& localContext, 
const Int chunkSize, 
const LOOP& 
obj)
 
PyObject * obj
Definition: complexobject.h:60
LOOP
Loop.
Definition: ge_prepass.h:6
maxon::UInt UInt
Definition: ge_sys_math.h:65
  New:
template <
typename LOOP> 
UInt LocalLoop(DynamicContext<USERCONTEXT, INDEXTYPE>& localContext, 
Int chunkSize, INDEXTYPE 
i, INDEXTYPE toChunk, 
const LOOP& 
obj)
 
    New:
template <typename P> class ThreadLocalPointer
    Old:
class ThreadLocalDestructiblePointer
  New:
template <typename P> class ThreadLocalDestructiblePointer
    Old:
class ThreadLocalDestructiblePointer
  New:
template <typename P> class ThreadLocalDestructiblePointer
    Removed:
#define MAXON_REFERENCE_UNIQUE(FREEIMPL)
#define PRIVATE_MAXON_REFERENCE_UNIQUE_FLAGS
#define PRIVATE_MAXON_REFERENCE_UNIQUE_COPY(Name)
    Removed:
T NullValue()
Definition: nullvalue.h:210
     Removed:
template <typename T> struct IsZeroInitialized<SqrMat3<T>> : public IsZeroInitialized<T> { };
template <typename T> struct IsZeroInitialized<Mat3<T>> : public IsZeroInitialized<T> { };
    Removed:
template <typename T> struct IsZeroInitialized<SqrMat2<T>> : public IsZeroInitialized<T> { };
template <typename T> struct IsZeroInitialized<Mat2<T>> : public IsZeroInitialized<T> { };
    Removed:
template <typename T> struct IsZeroInitialized<SqrMat4<T>> : public IsZeroInitialized<T> { };
  
corenodes.framework
  Added:
class CoreNodeErrorHelper
    Added:
#define MAXON_OPERATOR_EQUALITY(T,...)
Definition: classhelpers.h:504
   
exchange.framework
  Added:
This is the subsurface color.
This scales the overall subsurface effect (0.0 - 1.0).
This can be used to control the average distance that light can travel below the surface before it is reduced by scattering such that it can no longer have a visible effect.
This 
value is multiplied by the 
RGB components of the radius to determine the distance the light can travel below the surface before it is fully scattered.
This 
value can be used to influence the 
direction in which the light is scattered below the surface.
PyObject * value
Definition: abstract.h:715
#define MAXON_ATTRIBUTE(TYPE, NAME, RID,...)
Definition: fid.h:156
RGB
8-bit RGB channels.
Definition: ge_prepass.h:7
maxon::Float Float
Definition: ge_sys_math.h:66
Col3< Float, 1 > Color
Definition: vector.h:84
void Group
special datatype for groups.
Definition: fid.h:112
PyObject Py_ssize_t Py_ssize_t int direction
Definition: unicodeobject.h:916
  
image.framework
  Added:
MAXON_METHOD Result<Opt<ImageBaseRef>> GetImage(UpdateCacheDelegate&& updateDelegate, 
Bool async) 
const;
 
  
misc.framework
  Added:
MAXON_METHOD Result<void> CalculateFloat(
const FormulaParserCacheRef& cache, 
const VariableDictionary& varOverrides, 
Float32& 
result);
 
MAXON_METHOD Result<void> CalculateFloat(
const FormulaParserCacheRef& cache, 
const VariableDictionary& varOverrides, 
Float64& 
result);
 
MAXON_METHOD Result<void> CalculateInt(
const FormulaParserCacheRef& cache, 
const VariableDictionary& varOverrides, 
Int64& 
result);
 
const char const char * name
Definition: abstract.h:195
Definition: c4d_string.h:39
PyObject PyObject * result
Definition: abstract.h:43
maxon::Int64 Int64
Definition: ge_sys_math.h:62
maxon::Float32 Float32
Definition: ge_sys_math.h:68
maxon::Float64 Float64
Definition: ge_sys_math.h:67
     Added:
MAXON_METHOD Result<void> Add2(
const GmlNode& 
node, 
const Delegate<Tuple<Int32, String>(
const GmlNode&)>& idDelegate);
 
    Added:
Result< Url > GetUrlFromIconProviders(const CString &iconId)
Definition: iconprovider.h:24
     Added:
#define CheckUnitTestState(condition, ...)
  
neutron.framework
  Added:
namespace NEARESTNEIGHBOR
{
}
#define MAXON_RESOURCE_DATABASE_SCOPE(id)
Definition: fid.h:107
@ SELECTION
Selected edges.
StrongCOWRef< IndexSelectionType > IndexSelection
Definition: nodes_modeling.h:17
    Old:
static constexpr 
Int32 MSG_GET_INSTRUMENTATION_MANAGER = 180420113;
 
maxon::Int32 Int32
Definition: ge_sys_math.h:60
  New:
static constexpr Int32 MSG_GET_INSTRUMENTATION_HANDLER
Definition: neutron_ids.h:45
     Old:
static constexpr 
Int32 MSG_REGISTER_INSPECTOR = 180420205;
 
  New:
static constexpr Int32 MSG_REGISTER_PORT_VALUE_LISTENER
Definition: neutron_ids.h:73
   
nodes.framework
  Added:
RESULT
The data type is a Result.
Definition: apibase.h:37
COLOR
Vector.
Definition: c4d_basebitmap.h:5
Col4< Float, 1 > ColorA
Definition: vector4d.h:60
     Added:
const char * message
Definition: pyerrors.h:189
     Added:
New 
file containing the attributes 
for the formula 
node.
    Added:
COUNT
Length of the arrays changed.
Definition: c4d_baseeffectordata.h:3
     Added:
PORT_DIR
Definition: graph_basics.h:34
     Added:
template <
typename T> Result<void> SetNoKindArgument(
const InternedId& 
id, T&& 
value)
 
  
python.framework
  Added:
ISOLATED
Definition: cpython_raw.h:17
LEGACYWINDOWSSTDIO
Definition: cpython_raw.h:21
OPTIMIZE_LEVEL1
Definition: cpython_raw.h:7
LEGACYWINDOWSFSENCODING
Definition: cpython_raw.h:20
UNBUFFEREDSTDIO
Definition: cpython_raw.h:15
OPTIMIZE_LEVEL2
Definition: cpython_raw.h:8
HASHRANDOMSEED
Definition: cpython_raw.h:16
UTF8MODE
Definition: cpython_raw.h:1
QUIET
Just return allocation numbers.
Definition: system.h:1
   
volume.framework
  Added:
VECTORGRIDTYPE
Vector Volume Types.
Definition: ge_prepass.h:1908
     Added:
static MAXON_METHOD Result<Array<Vector>> ScatterPointsInFog(
const Volume& volume, 
UInt64 pointCount, 
Float spread);
 
maxon::UInt64 UInt64
Definition: ge_sys_math.h:63