====== Accessing metadata ====== Exported .stsdk files contain all metadata set in the SpeedTree Modeler using the [[https://docs9.speedtree.com/modeler/doku.php?id=tree-info-window-reference&s[]=metadata|Tree Info Window]]. To access the metadata for a base tree model in the SDK, call ''CCore::Metadata()''. An example of accessing all fields in an .stsdk file follows: #include "SpeedTree/Core/Core.h" void PrintTreeInfo(const char* pFilename) { // populate loading config struct so that the sdk // handles the file and memory operations automatically SpeedTree::CCore::SLoadConfig sLoadConfig; sLoadConfig.m_strFilename = pFilename; sLoadConfig.m_bGrassModel = false; // create a core/tree object to read stsdk into SpeedTree::CCore cModel; // call stsdk-loading function: returns true on success if (cModel.LoadTree(sLoadConfig)) { printf("STSDK load was successful\n"); SpeedTree::CMetadata cMetadata = cModel.Metadata( ); printf("\nSTSDK file metadata:\n"); printf(" up vector: %s\n", cMetadata.UpVector( ) == SpeedTree::CMetadata::UP_VECTOR_Z ? "Z" : "Y"); printf(" meters per unit: %g\n", cMetadata.MetersPerUnit( )); for (int i = 0; i < static_cast(cMetadata.Entries( ).Count( )); ++i) { printf(" '%s' = '%s'\n", cMetadata.Entries( )[i].Key( ).Data( ), cMetadata.Entries( )[i].Value( ).Data( )); } } else fprintf(stderr, "STSDK load was unsuccessful\n"); }