Open Search
    VolumeSet Manual

    About

    A VolumeSet is a BaseObject that stores a collection of volume objects (VolumeObject).

    A VolumeSet object is an instance of Ovolumeset.

    Creation

    A VolumeSet object is created as usual (see Entity Creation and Destruction Manual (Cinema API)):

    // This example creates a VolumeSet object
    // and inserts it into the given BaseDocument.
    VolumeSet* const volumeSet = VolumeSet::Alloc();
    if (volumeSet == nullptr)
    return maxon::OutOfMemoryError(MAXON_SOURCE_LOCATION);
    doc->InsertObject(volumeSet, nullptr, nullptr);
    Definition: lib_volumeset.h:87
    static VolumeSet * Alloc()
    Definition: lib_volumeset.h:99
    #define MAXON_SOURCE_LOCATION
    Definition: memoryallocationbase.h:69
    const char * doc
    Definition: pyerrors.h:226

    Handling Volumes

    A VolumeSet contains multiple VolumeObject elements. These elements are edited with:

    // This example reads the grids stored in the given vdb file.
    // A VolumeSet object is created and the grid with a given name
    // is inserted as a VolumeObject.
    // get grid names
    const maxon::Int gridCnt = gridNames.GetCount();
    if (gridCnt == 0)
    return maxon::IllegalArgumentError(MAXON_SOURCE_LOCATION);
    // create volume set
    VolumeSet* const volumeSet = VolumeSet::Alloc();
    if (volumeSet == nullptr)
    return maxon::OutOfMemoryError(MAXON_SOURCE_LOCATION);
    doc->InsertObject(volumeSet, nullptr, nullptr);
    // check all grids
    for (maxon::Int gridIndex = 0; gridIndex < gridCnt; ++gridIndex)
    {
    // get grid name
    const maxon::String& gridName = gridNames[gridIndex];
    // check grid name
    if (gridName == "cube_volume"_s)
    {
    // load volume data
    const maxon::Volume volume = maxon::VolumeInterface::CreateFromFile(volumeUrl, 1.0, gridIndex) iferr_return;
    // make volume object
    VolumeObject* const volumeObject = VolumeObject::Alloc();
    if (volumeObject == nullptr)
    return maxon::OutOfMemoryError(MAXON_SOURCE_LOCATION);
    volumeObject->SetName(gridName);
    // store volume data
    volumeObject->SetVolume(volume);
    // insert
    volumeSet->AddVolume(volumeObject);
    }
    }
    void AddVolume(VolumeObject *volumeObj)
    Definition: lib_volumeset.h:130
    MAXON_ATTRIBUTE_FORCE_INLINE Int GetCount() const
    Gets the number of array elements.
    Definition: basearray.h:585
    Definition: string.h:1287
    static MAXON_METHOD Result< Volume > CreateFromFile(const Url &url, Float scale, Int gridIndex)
    static MAXON_METHOD Result< BaseArray< String > > GetGridNamesFromFile(const Url &filename)
    Int64 Int
    signed 32/64 bit int, size depends on the platform
    Definition: apibase.h:187
    #define iferr_return
    Definition: resultbase.h:1531

    Further Reading