VoronoiFracture Manual
A
VoronoiFracture
object represents a Voronoi Fracture MoGraph generator. The class provides safe access to the point sources referenced, owned and used by the generator. It is defined in the
lib_voronoifracture.h
header file.
// create Voronoi Fracture object VoronoiFracture * const fractureObject = VoronoiFracture::Alloc (); if (fractureObject == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION );
// add a Rigid Body tag (ID 180000102) BaseTag * const rigidBodyTag = BaseTag::Alloc (180000102); if (rigidBodyTag == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION );
// add sphere as input object BaseObject * const sphere = BaseObject::Alloc ( Osphere ); if (sphere == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); doc-> InsertObject (sphere, fractureObject, nullptr );
// add point source const Int32 pointCreatorType = ID_POINTCREATOR_CREATORTYPE_DISTRIBUTION ; BaseObject * const pointGenerator = fractureObject-> AddPointGenerator (pointCreatorType, NOTOK , nullptr ); if (pointGenerator == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION );
// configure point generator pointGenerator-> SetParameter ( ID_POINTCREATOR_CREATEDPOINTAMOUNT , 10, DESCFLAGS_SET::NONE );
A VoronoiFracture object can be accessed like any other object.
// This example accesses the currently selected // Voronoi Fracture object to print the number // of used sources. BaseObject * const obj = doc-> GetActiveObject ();// check if the active object is a Voronoi Fracture object (ID 1036557) if (obj != nullptr && obj-> IsInstanceOf (1036557)) { VoronoiFracture * const voronoiFracture = static_cast< VoronoiFracture * > (obj);
// get source count const Int32 srcCnt = voronoiFracture-> GetSourcesCount ();
// print source count const String srcCntStr = String::IntToString (srcCnt); ApplicationOutput (voronoiFracture-> GetName () + " uses " + srcCntStr + " sources." ); }
VoronoiFracture objects are created with the usual tools:
// get active object BaseObject * const activeObject = doc-> GetActiveObject (); if (activeObject == nullptr ) return maxon::IllegalArgumentError( MAXON_SOURCE_LOCATION );
// create voronoi fracture VoronoiFracture * const fracture = VoronoiFracture::Alloc (); if (fracture == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION );
// insert voronoi fracture doc-> InsertObject (fracture, nullptr , nullptr );
// insert active object under the fracture object activeObject-> 移除 (); doc-> InsertObject (activeObject, fracture, nullptr );
The IDs of the standard parameters of a
VoronoiFracture
object are defined in the
omograph_fracturevoronoi.h
header file.
Both scene objects and dedicated point generator objects can be used to define the position of Voronoi points inside the mesh volume. The following functions allow to add, remove and edit these point sources. The type ID of point generator objects is Ovoronoipointgenerator .
The VoronoiFracture class provides functions to access the object and generator sources referenced in the "Sources" parameter.
// get source count const Int32 srcCnt = voronoiFracture-> GetSourcesCount ();
// loop through all sources for ( Int32 i = 0; i < srcCnt; ++i) { // get source BaseObject * const source = voronoiFracture-> GetSource (i); if (source == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION );
// print source name const String sourceName = source-> GetName (); ApplicationOutput ( "Source: " + sourceName); }
The VoronoiFracture class also provides functions to safely remove objects and generators from the "Sources" parameter.
// loop through all point generators until no point generator is found anymore while (voronoiFracture-> GetSourceByType ( Ovoronoipointgenerator , NOTOK , &index)) { voronoiFracture-> RemoveSource (index); }
使用 VoronoiFracture functions it is safe to add new sources and generators to the "Sources" parameter.
Point generators are represented by dedicated
BaseObject
elements that are owned by the
VoronoiFracture
object. To configure such a point generator one can simply edit the parameters of the corresponding
BaseObject
. The parameter IDs of these parameters are defined in
opointcreator_panel.h
.
// configure generator shaderSource-> SetParameter ( ID_POINTCREATOR_SHADERSAMPLEAMOUNT , 500, DESCFLAGS_SET::NONE );
The VoronoiFracture object can also use external objects as sources of points:
The IDs for these settings are defined in
tfracturevoronoi.h
.
// use as source object voronoiFracture-> AddSceneObject (cube); BaseContainer * const settings = voronoiFracture-> GetSourceSettingsContainerForObject (cube); if (settings == nullptr ) return maxon::UnknownError( MAXON_SOURCE_LOCATION ); settings-> SetInt32 ( ID_FRACTURETAG_POINTCREATIONTYPE , ID_FRACTURETAG_POLYS );