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(FIELDS);
GeData data;
if (!plainEffector->GetParameter(fieldParameterID, data, DESCFLAGS_GET::NONE))
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);
// get FieldList
FieldList* const fieldList = static_cast<FieldList*>(customData);
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;

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(FIELDS);
GeData data;
if (!plainEffector->GetParameter(fieldParameterID, data, DESCFLAGS_GET::NONE))
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);
// get FieldList
FieldList* const fieldList = static_cast<FieldList*>(customData);
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);

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:

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