CLODMeshGenerator::CLODMeshGenerator() : GeometryGeneratorBase()
{
    vertexCount    = 0;
    faceCount      = 0;
    patchID        = 0;
    meshNumber     = 0; // Needed for progress calculation
    meshAttributes = mlU3D::MESH_ATTRIBUTES_DEFAULT;

    _wem = NULL;
    ML_CHECK_NEW(_wem, WEM());
}
Esempio n. 2
0
void SavePRC::savePRCToFileStream(std::ofstream& ofstream)
{
  _progressFld->setFloatValue(0.0f);

  WEMPtr saveWEM = NULL;
  ML_CHECK_NEW(saveWEM,WEM());

  // Clear object info vector;
  _prcObjectInfoVector.clear();

  // Clear geometry vectors
  _pointSetsGeometryVector.clear();
  _lineSetsGeometryVector.clear();

  PRCMeshInfoVector meshInfoVector;

  // Stores the model bounding box data & its center. Shall be modified only with UpdateBoundingBox() method!
  ModelBoundingBoxStruct modelBoundingBox;
  modelBoundingBox.start.x = ML_DOUBLE_MAX;
  modelBoundingBox.start.y = ML_DOUBLE_MAX;
  modelBoundingBox.start.z = ML_DOUBLE_MAX;
  modelBoundingBox.end.x   = ML_DOUBLE_MAX * -1;
  modelBoundingBox.end.y   = ML_DOUBLE_MAX * -1;
  modelBoundingBox.end.z   = ML_DOUBLE_MAX * -1;

  // Get default parameters from field values
  //defaultValues = getDefaultValuesFromFields(); 
  
  // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  
  _statusFld->setStringValue("Analyzing input data.");

  // Scan all data from input field and collect base info for point sets.
  PreProcessPointSetData(modelBoundingBox);

  // Scan all data from input field and collect base info for line sets.
  PreProcessLineSetData(modelBoundingBox);

  // Scan all WEM patches, triangulate them if necessary and collect base info.
  PreProcessMeshData(saveWEM, meshInfoVector, modelBoundingBox);

  
  GroupNodeVector groupNodes = assemblePRCGroupNodeInfo(_prcObjectInfoVector);
  mapParentTreeNodeIDs(_prcObjectInfoVector, groupNodes);

  _modelTree = assemblePRCModelTreeInfo(groupNodes);

  // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  _progressFld->setFloatValue(0.1f);

  PRCFile outPRCFile(ofstream);

  PRCModelTreeNode modelRootNode = getNodeFromPRCModelTree(_modelTree, 0);

  WriteNodeModelsToPRCFile(outPRCFile, modelRootNode);





  outPRCFile.finish();


  _progressFld->setFloatValue(1.0f);

}