FieldList Manual

About

FieldList is a custom data type that stores field layers (FieldLayer). Such a field layer represents a certain function or is referencing a FieldObject (FLfield). Typically one samples this FieldList and not the layers themselves.

A FieldList parameter can be found on MoGraph effectors or the "Falloff" shader.

The data type ID is CUSTOMDATATYPE_FIELDLIST.

FieldList

Sampling

The FieldList is easily sampled using these functions. The "Sample" functions sample the field in a multi-threaded context. If it is needed to control the sampling process use the "Direct" functions.

For information on FieldInfo and FieldOutput see FieldObject Manual.

// This example reads the "FIELDS" parameter of the given "Plain" effector
// to obtain the FieldList custom data. The FieldList is then sampled.
// get FieldList data
const DescID fieldParameterID = ConstDescID(DescLevel(FIELDS));
GeData data;
if (plainEffector->GetParameter(fieldParameterID, data, DESCFLAGS_GET::NONE) == false)
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);
// get FieldList
FieldList* const fieldList = data.GetCustomDataTypeWritable<FieldList>();
if (fieldList == nullptr)
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);
// prepare arrays
positions.Resize(sampleCnt) iferr_return;
uvws.Resize(sampleCnt) iferr_return;
directions.Resize(sampleCnt) iferr_return;
// set positions
Float64 xOffset = 0.0;
for (maxon::Vector& pos : positions)
{
pos.x = xOffset;
xOffset += stepSize;
}
// define points to sample
FieldInput points(positions.GetFirst(),
directions.GetFirst(),
uvws.GetFirst(),
sampleCnt,
Matrix());
// sample
FieldOutput results = fieldList->SampleListSimple(*plainEffector, points) iferr_return;
Definition: lib_description.h:355
Field custom GUI (CUSTOMDATATYPE_FIELDLIST) for the Field list data.
Definition: customgui_field.h:59
maxon::Result< FieldOutput > SampleListSimple(const BaseList2D &caller, const FieldInput &inputs, FIELDSAMPLE_FLAG flags=FIELDSAMPLE_FLAG::ALL) const
Definition: c4d_gedata.h:83
DATATYPE * GetCustomDataTypeWritable()
Definition: c4d_gedata.h:547
Definition: basearray.h:415
MAXON_ATTRIBUTE_FORCE_INLINE const T * GetFirst() const
Definition: basearray.h:1166
ResultMem Resize(Int newCnt, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::DEFAULT)
Definition: basearray.h:1209
void Py_ssize_t * pos
Definition: dictobject.h:50
maxon::Float64 Float64
Definition: ge_sys_math.h:67
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:67
#define ConstDescID(...)
Definition: lib_description.h:594
@ FIELDS
Definition: ofalloff_panel.h:16
#define iferr_return
Definition: resultbase.h:1521
Represents a level within a DescID.
Definition: lib_description.h:298
Definition: c4d_fielddata.h:472
Definition: c4d_fielddata.h:115

Layers

The layers stored in the FieldList are accessed through:

Settings

FIELDLIST_FLAGS: are accessed through:

Further functions are:

FieldLayer

A FieldLayer represents a certain function or is referencing a FieldObject. To implement custom layers see FieldLayerData Manual.

Types

Existing layer types are:

Creation

A new layer is created with:

The FieldLayer tree can be navigated with:

// This example creates a new "Quantize" layer and inserts it into the FieldList of the given "Plain" effector.
const DescID fieldParameterID = ConstDescID(DescLevel(FIELDS));
GeData data;
if (plainEffector->GetParameter(fieldParameterID, data, DESCFLAGS_GET::NONE) == false)
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);
// get FieldList
FieldList* const fieldList = data.GetCustomDataTypeWritable<FieldList>();
if (fieldList == nullptr)
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);
// create new "Quantize" layer
if (layer == nullptr)
return maxon::OutOfMemoryError(MAXON_SOURCE_LOCATION);
// configure new layer
layer->SetStrength(0.5);
// insert layer
fieldList->InsertLayer(layer, nullptr, nullptr) iferr_return;
// store data
plainEffector->SetParameter(fieldParameterID, data, DESCFLAGS_SET::NONE);
Bool SetParameter(const DescID &id, const GeData &t_data, DESCFLAGS_SET flags)
Definition: c4d_fielddata.h:1091
void SetStrength(Float strength)
Definition: c4d_fielddata.h:1138
static FieldLayer * Alloc(Int32 type)
Definition: c4d_fielddata.h:1265
maxon::Result< void > InsertLayer(FieldLayer *layer, FieldLayer *parent=nullptr, FieldLayer *prev=nullptr)
@ FIELDLAYER_QUANTIZE_STEPS
Definition: flquantize.h:6
static const Int32 FLquantize
FieldLayer quantize remapping layer.
Definition: c4d_fielddata.h:85

Properties

If the layer links to another element in the scene this element can be accessed through:

The strength of a layer is defined by:

The blending mode (see flbase.h) is set/get by:

The channel flags (FIELDLAYER_CHANNELFLAG) are accessed through:

The channel flags are:

The layer flags (FIELDLAYER_FLAG) are set/get by:

The layer flags are:

Mask layers are handled with:

Sampling

A layer can directly be sampled by these functions:

FieldListGui

FieldListGui is the custom GUI element to display FieldList data. The GUI ID is CUSTOMGUI_FIELDLIST.

Further Reading