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.
- FieldList::SampleListSimple(): Samples a block of values with default FieldInfo parameters.
 
- FieldList::SampleList(): Samples a block of values with full FieldInfo parameter control.
 
- FieldList::SampleListWithLambda(): Samples a block calling the given lambda functions.
 
- FieldList::DirectInitSampling(): Initializes direct sampling.
 
- FieldList::DirectSample(): Performs direct sampling.
 
- FieldList::DirectFreeSampling(): Frees direct sampling data.
 
For information on FieldInfo and FieldOutput see FieldObject Manual.
  
  
 
  
 
 
  GeData data;
 
  
  FieldList* const fieldList = data.GetCustomDataTypeWritable<FieldList>();
  if (fieldList == nullptr)
 
  
 
 
 
 
  
  {
    xOffset += stepSize;
  }
 
  
  FieldInput points(positions.GetFirst(),
                    sampleCnt,
 
  
  FieldOutput results = fieldList->SampleListSimple(*plainEffector, points) 
iferr_return;
 
NONE
Definition: asset_browser.h:1
 
Definition: basearray.h:415
 
MAXON_ATTRIBUTE_FORCE_INLINE const T * GetFirst() const
Returns the first element of the array. For the BaseArray this is a pointer to a continuous block of ...
Definition: basearray.h:1174
 
ResultMem Resize(Int newCnt, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::DEFAULT)
Resizes the array to contain newCnt elements. If newCnt is smaller than GetCount() all extra elements...
Definition: basearray.h:1217
 
void Py_ssize_t * pos
Definition: dictobject.h:50
 
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:69
 
#define ConstDescID(...)
Definition: lib_description.h:592
 
maxon::Float64 Float64
Definition: ge_sys_math.h:58
 
maxon::Mat3< maxon::Vector64 > Matrix
Definition: ge_math.h:159
 
@ FIELDS
Definition: ofalloff_panel.h:16
 
#define iferr_return
Definition: resultbase.h:1531
 
  
Layers
The layers stored in the FieldList are accessed through:
- FieldList::GetCount(): Returns the number of fields and groups.
 
- FieldList::InsertLayer(): Inserts the given layer into the list.
 
- FieldList::GetLayersRoot(): Returns the GeListHead of the layers.
 
- FieldList::GetSelected(): Gets a list of all selected layers.
 
- FieldList::FindByReference(): Gets the layers that match the given FieldLayerLink.
 
Settings
::FIELDLIST_FLAGS: are accessed through:
- FieldList::GetFlags(): Returns the flags.
 
- FieldList::SetFlags(): Sets the flags.
 
- FieldList::CheckFlag(): Returns true if the given flag is set.
 
Further functions are:
- FieldList::GetDirty(): Returns the dirty state of the GUI and the host object.
 
- FieldList::Flush(): Frees the internal memory.
 
- FieldList::HasContent(): Returns true if the list has any content.
 
FieldLayer
A FieldLayer represents a certain function or is referencing a FieldObject. To implement custom layers see FieldLayerData Manual.
Types
Existing layer types are:
- ::FLplugin: FieldLayer plugin.
 
- ::FLfolder: Folder.
 
- ::FLbase: FieldLayer base.
 
- ::FLfield: Field object based layer.
 
- ::FLsolid: Solid value/color layer.
 
- ::FLdescid: DescID based layer.
 
- ::FLnoise: Noise remapping layer.
 
- ::FLclamp: Clamping remapping layer.
 
- ::FLremap: Between values remapping layer.
 
- ::FLcurve: Curve remapping layer.
 
- ::FLgradient: Gradient remapping layer.
 
- ::FLquantize: Quantize remapping layer.
 
- ::FLinvert: Invert remapping layer.
 
- ::FLcolorize: Colorize remapping layer.
 
- ::FLrangemap: Colorize remapping layer.
 
- ::FLspline: Spline mapping layer.
 
- ::FLdelay: Delay layer.
 
- ::FLdecay: Decay layer.
 
- ::FLstep: Step layer.
 
- ::FLweight: Weight layer.
 
- ::FLproximity: Proximity layer.
 
- ::FLformula: Formula Layer.
 
- ::FLtime: Time layer.
 
- ::FLpython: Python layer.
 
- ::FLmograph: MoGraph layer.
 
- ::FLpolygonobject: Polygon object.
 
- ::FLvolumeobject: Volume object, see VolumeObject Manual.
 
Creation
A new layer is created with:
- FieldLayer::Alloc(): Returns a new FieldLayer.
 
- FieldLayer::Free(): Deletes the given FieldLayer.
 
The FieldLayer tree can be navigated with:
- FieldLayer::GetUp(): Returns the parent layer.
 
- FieldLayer::GetDown(): Returns the child layer.
 
- FieldLayer::GetNext(): Returns the next layer in the list.
 
- FieldLayer::GetPred(): Returns the previous layer in the list.
 
- FieldLayer::GetDownLast(): Returns the last layer.
 
  
 
 
  GeData data;
 
  
  FieldList* const fieldList = data.GetCustomDataTypeWritable<FieldList>();
  if (fieldList == nullptr)
 
  
  FieldLayer* 
const layer = FieldLayer::Alloc(
FLquantize);
 
  if (layer == nullptr)
 
  
  layer->SetStrength(0.5);
 
  
  fieldList->InsertLayer(layer, 
nullptr, 
nullptr) 
iferr_return;
 
 
  
@ FIELDLAYER_QUANTIZE_STEPS
Definition: flquantize.h:6
 
static const Int32 FLquantize
FieldLayer quantize remapping layer.
Definition: c4d_fielddata.h:84
 
  
Properties
If the layer links to another element in the scene this element can be accessed through:
- FieldLayer::GetLinkedObject(): Returns the FieldLayerLink to the scene element.
 
- FieldLayer::SetLinkedObject(): Set the reference to the scene element.
 
The strength of a layer is defined by:
- FieldLayer::GetStrength(): Returns the strength applied to the layer.
 
- FieldLayer::SetStrength(): Sets the strength applied to the layer.
 
The blending mode (see flbase.h) is set/get by:
- FieldLayer::SetBlendingMode(): Sets the current blending mode.
 
- FieldLayer::GetBlendingMode(): Returns the current blending mode.
 
The channel flags (::FIELDLAYER_CHANNELFLAG) are accessed through:
- FieldLayer::GetChannelFlags(): Returns the channel flags.
 
- FieldLayer::SetChannelFlags(): Sets the channel flags.
 
- FieldLayer::GetChannelFlag(): Returns true if the given flag is set.
 
- FieldLayer::SetChannelFlag(): Sets the state of the given flag.
 
The channel flags are:
The layer flags (::FIELDLAYER_FLAG) are set/get by:
- FieldLayer::SetLayerFlags(): Sets the layer flags.
 
- FieldLayer::GetLayerFlags(): Returns the layer flags.
 
The layer flags are:
Mask layers are handled with:
- FieldLayer::GetMaskHead(): Returns the GeListHead containing the mask layers.
 
- FieldLayer::AddMask(): Adds a mask.
 
- FieldLayer::RemoveMask(): Removes the mask.
 
Sampling
A layer can directly be sampled by these functions:
- FieldLayer::InitSampling(): Initializes the sampling
 
- FieldLayer::Sample(): Samples the layer.
 
- FieldLayer::Aggregate(): Used to call FieldLayerData::Aggregate().
 
- FieldLayer::FreeSampling(): Frees internal data after sampling.
 
FieldListGui
FieldListGui is the custom GUI element to display FieldList data. The GUI ID is CUSTOMGUI_FIELDLIST.
Further Reading