Changes in R19

Changes in R19.008

Development Environment Requirements

The minimum requirements for developing Cinema 4D R19 plugins are:

  • On Windows: Visual Studio 2015 or higher.
  • On Mac OS X: XCode 8.2.1 or higher.

GPU Renderer

Cinema 4D R19 introduced a new GPU renderer. This renderer can be used and configured like any other render engine. The ID of the renderer is VPGPURenderer / RDATA_RENDERENGINE_GPURENDERER, the parameter IDs are defined in vpgpurenderer.h header file. Also additional GPU renderer preferences were added (GPURPREFSDIALOG_ID, see ge_prepass.h).

For the usage of a render engine see RenderData Manual and BaseVideoPost Manual.

The BaseShader class was extended with BaseShader::HasGPURendererSupport() to check if the shader is supported natively in the GPU renderer. See BaseShader Manual.

Additionally the BaseDraw class was extended to check if a given BaseDraw is using the GPU renderer. See GPU Renderer.

LOD Object

The new LOD object generator creates geometry based on the camera distance to the object. The object is represented by the LodObject class (ID Olod) in the lib_lodobject.h header file. The parameter IDs are defined in olod.h. See LodObject Manual.

A special parameter is the "Range" parameter of the new type RangeData. The ID of this new data type is CUSTOMDATATYPE_RANGE, it is defined in customgui_range.h. See RangeData Manual.

Polygon Reduction

A new Polygon Reduction generator was introduced. The ID of this new generator object is Opolyreduxgenerator, the parameter IDs are defined in opolyreduxgen.h.

The functionality provided by the Polygon Reduction generator can be utilized with the PolygonReduction class. It allows to reduce a given PolygonObject. See PolygonReduction Manual.

Character Animation

The Weight Manager dialog was reworked and improved. The new class CAWeightMgr gives access to the functionality of this dialog. See CAWeightMgr Manual.

Also the new "Pose Space Deformation" mode was added to the Morph tag. The specific data of this mode is stored in a CAReferencePSD object, obtained from the CAMorphNode. See CAReferencePSD Manual and Character Animation Overview.

MoGraph

A new Sound Effector object was introduced. The parameter IDs are defined in oesound.h. Specific data is stored in the new data type SoundEffectorData. The ID of this data type is CUSTOMDATATYPE_SOUNDEFFECTOR and it is defined in customgui_soundeffector.h. See SoundEffectorData Manual.

Also the VoronoiFracture object was extended with new functions GetSourceSettingsContainerForIndex() and GetSourceSettingsContainerForObject() , see VoronoiFracture Manual.

SoftSelectionTag

The class SoftSelectionTag was added to represent a soft selection tag and to give easy access to its data.

Neighbor

The function Neighbor::GetPointOneRingPoints() was added to the Neighbor class.

Alembic

The new Alembic Morph tag was introduced. The tag ID is Talembicmorphtag, the parameter IDs are defined in Talembicmorphtag.h.

Modeling

The internal implementations of MCOMMAND_REVERSENORMALS and MCOMMAND_ALIGNNORMALS were changed.

Spherical Camera

A new "Spherical Camera" mode was added to the camera object. The new parameter IDs are defined in ocamera.h. The CameraObject class itself was not changed. See CameraObject Manual.

A custom video post can use the spherical camera by creating a ray with VolumeData::GetRay() etc.

Custom GUI Elements

The message type MSG_DESCRIPTION_CUSTOMGUI_NOTIFICATION was introduced. It allows to send messages from a custom GUI to a host NodeData based plugin that uses this custom GUI to display a parameter in the Attribute Manager.

See Description Notifications and Attribute Manager Interaction.

Delegates

Delegates can be used to define callbacks. See Delegate Manual.

Miscellaneous

The FileMonitor class has been marked as deprecated. It will be replaced in future releases.

The class BaseObject was extended with two new versions of the functions BaseObject::AddDependence() and BaseObject::GetHierarchyClone() that allow to set a specific dirty bit mask.

The VertexColorTag can now store unclamped color values. See VertexColorTag Manual.

API Changes in R19.008

See API Changes in R19.008 for the detailed list.

Changes in R19.024

These utility functions were added:

See API Changes in R19.024 for the detailed list.