About

A VolumeBuilder is used to create a volume based on various input objects. The created volumes are represented as VolumeObject objects within the generator's cache. The VolumeBuilder class is defined in the lib_volumebuilder.h header file. The parameter IDs are defined in ovolumebuilder.h.

A VolumeBuilder object is an instance of Ovolumebuilder.

VolumeBuilder

Creation

A VolumeBuilder object is created with these functions:

// This example creates a new VolumeBuilder object and
// adds it to the given BaseDocument.
VolumeBuilder* const volumeBuilder = VolumeBuilder::Alloc();
if (volumeBuilder == nullptr)
return maxon::OutOfMemoryError(MAXON_SOURCE_LOCATION);
doc->InsertObject(volumeBuilder, nullptr, nullptr);

Input Objects

A VolumeBuilder creates volumes based on various input objects. Such input objects are added or removed to the input objects list with these functions:

// This example adds the given scene object as a source object for the volume builder.
const Int32 index = 0;
// add the given object
if (volumeBuilder->AddSceneObject(object, index, true, BOOLTYPE::UNION, MIXTYPE::NORMAL) == false)
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);
// get the corresponding settings
BaseContainer* const settings = volumeBuilder->GetSettingsContainerForIndex(index);
if (settings == nullptr)
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);
// set settings

The objects in the input list are accessed with:

// This example loops through all input elements of the given
// VolumeBuilder object.
const Int32 inputCount = volumeBuilder->GetListEntryCount();
for (Int32 i = 0; i < inputCount; ++i)
{
const BaseObject* const inputObject = volumeBuilder->GetInputObject(i);
if (inputObject != nullptr)
{
// get input name
const maxon::String name = inputObject->GetName();
DiagnosticOutput("Object: @", name);
// check if child object
if (volumeBuilder->InputObjectIsChild(i))
DiagnosticOutput("(Child object)");
}
}

For each input object various settings can be set (see tvolumebuilder.h). The BaseContainer storing these settings is accessed with:

// This example gets the settings BaseContainer or the given input object.
BaseContainer* const settings = volumeBuilder->GetSettingsContainerForObject(inputObject);
if (settings == nullptr)
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION);

The bool mode (BOOLTYPE) of a given object is accessed with:

The mix mode (::MIXTYPE) of a given object is accessed with:

The functional state of an object in the list is accessed by:

The selection state of an object in the list is accessed with:

The MIXVECTORTYPE defines how vector data is handled:

// This example enables all selected input objects and disables un-selected objects.
const Int32 objectCount = volumeBuilder->GetListEntryCount();
for (Int32 i = 0; i < objectCount; ++i)
{
const Bool selected = volumeBuilder->GetSelected(i);
if (selected)
volumeBuilder->SetEnable(i, true);
else
volumeBuilder->SetEnable(i, false);
}

Further Reading

BaseDocument::InsertObject
void InsertObject(BaseObject *op, BaseObject *parent, BaseObject *pred, Bool checknames=false)
VolumeBuilder::GetSettingsContainerForObject
BaseContainer * GetSettingsContainerForObject(BaseObject *object) const
MIXTYPE::NORMAL
@ NORMAL
BaseObject
Definition: c4d_baseobject.h:224
VolumeBuilder::GetInputObject
BaseObject * GetInputObject(Int32 index) const
maxon::String
Definition: string.h:1213
MAXON_SOURCE_LOCATION
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:66
BaseContainer::SetBool
void SetBool(Int32 id, Bool b)
Definition: c4d_basecontainer.h:498
DiagnosticOutput
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:167
VolumeBuilder
Definition: lib_volumebuilder.h:42
VolumeBuilder::GetListEntryCount
Int32 GetListEntryCount()
VolumeBuilder::SetEnable
void SetEnable(Int32 index, Bool enable)
ID_VOLUMEBUILDER_TAG_OPTIMIZEANDCLOSE
@ ID_VOLUMEBUILDER_TAG_OPTIMIZEANDCLOSE
Definition: tvolumebuilder.h:28
Int32
maxon::Int32 Int32
Definition: ge_sys_math.h:60
VolumeBuilder::GetSettingsContainerForIndex
BaseContainer * GetSettingsContainerForIndex(Int32 index) const
VolumeBuilder::AddSceneObject
Bool AddSceneObject(BaseObject *object, Int32 index, Bool enabled, BOOLTYPE boolMode, MIXTYPE mixMode)
BaseContainer::SetFloat
void SetFloat(Int32 id, Float r)
Definition: c4d_basecontainer.h:533
VolumeBuilder::InputObjectIsChild
Bool InputObjectIsChild(Int32 index) const
VolumeBuilder::Alloc
static VolumeBuilder * Alloc()
Definition: lib_volumebuilder.h:55
Bool
maxon::Bool Bool
Definition: ge_sys_math.h:55
BaseList2D::GetName
String GetName() const
Definition: c4d_baselist.h:2348
VolumeBuilder::GetSelected
Bool GetSelected(Int32 index) const
ID_VOLUMEBUILDER_TAG_USEPOINTS
@ ID_VOLUMEBUILDER_TAG_USEPOINTS
Definition: tvolumebuilder.h:17
BOOLTYPE::UNION
@ UNION
ID_VOLUMEBUILDER_TAG_MESHRADIUS
@ ID_VOLUMEBUILDER_TAG_MESHRADIUS
Definition: tvolumebuilder.h:27
BaseContainer
Definition: c4d_basecontainer.h:46