#ifndef __bbSlicerModelMaker_h_INCLUDED__ #define __bbSlicerModelMaker_h_INCLUDED__ #include "bbSlicer_EXPORT.h" #include "bbtkAtomicBlackBox.h" #include #include #include #include #include #include #include #include #include #include #include #include "CreationTool.h" namespace bbSlicer { class bbSlicer_EXPORT ModelMaker : public bbtk::AtomicBlackBox { BBTK_BLACK_BOX_INTERFACE ( ModelMaker , bbtk::AtomicBlackBox ) ; // GENERATED ARGS BBTK_DECLARE_INPUT ( InputVolume , std::string ); BBTK_DECLARE_INPUT ( ColorTable , std::string ); BBTK_DECLARE_INPUT ( ModelSceneFile , std::string ); BBTK_DECLARE_INPUT ( Name , std::string ); BBTK_DECLARE_INPUT ( GenerateAll , bool ); BBTK_DECLARE_INPUT ( Labels , std::vector ); BBTK_DECLARE_INPUT ( StartLabel , int ); BBTK_DECLARE_INPUT ( EndLabel , int ); BBTK_DECLARE_INPUT ( SkipUnNamed , bool ); BBTK_DECLARE_INPUT ( JointSmoothing , bool ); BBTK_DECLARE_INPUT ( Smooth , int ); BBTK_DECLARE_INPUT ( FilterType , std::string ); BBTK_DECLARE_INPUT ( Decimate , float ); BBTK_DECLARE_INPUT ( SplitNormals , bool ); BBTK_DECLARE_INPUT ( PointNormals , bool ); BBTK_DECLARE_INPUT ( Pad , bool ); BBTK_DECLARE_INPUT ( SaveIntermediateModels , bool ); BBTK_DECLARE_INPUT ( debug , bool ); // EO GENERATED ARGS BBTK_PROCESS ( Process ) ; void Process ( ) ; private: void execute ( std::string lib , int _argc , char * _argv[] ) ; } ; BBTK_BEGIN_DESCRIBE_BLACK_BOX ( ModelMaker , bbtk::AtomicBlackBox ) ; BBTK_NAME ( "ModelMaker" ) ; BBTK_AUTHOR ( "Nicole Aucoin, BWH Ron Kikinis, BWH, Bill Lorensen GE" ) ; BBTK_DESCRIPTION ( "Create 3D surface models from segmented data. pModels are imported into Slicer under a model hierarchy node in a MRML scene. The model colors are set by the color table associated with the input volume these colours will only be visible if you load the model scene file. /ppbCreate Multiple:/b/pp If you specify a list of Labels, it will over ride any start/end label settings. /pp If you click iGenerate All/i it will over ride the list of lables and any start/end label settings. /ppbModel Maker Settings:/b/pp You can set the number of smoothing iterations, target reduction in number of polygons decimal percentage. Use 0 and 1 if you wish no smoothing nor decimation. brYou can set the flags to split normals or generate point normals in this pane as well. brYou can save a copy of the models after intermediate steps marching cubes, smoothing, and decimation if not joint smoothing, otherwise just after decimation; these models are not saved in the mrml file, turn off deleting temporary files first in the python window: brislicer.modules.modelmaker.cliModuleLogic.DeleteTemporaryFilesOff/i/p" ) ; BBTK_CATEGORY ( "Surface Models" ) ; // GENERATED DESCRPTION BBTK_INPUT(ModelMaker , InputVolume , "InputVolume" , std::string, ""); BBTK_INPUT(ModelMaker , ColorTable , "ColorTable" , std::string, ""); BBTK_INPUT(ModelMaker , ModelSceneFile , "ModelSceneFile" , std::string, ""); BBTK_INPUT(ModelMaker , Name , "Name" , std::string, ""); BBTK_INPUT(ModelMaker , GenerateAll , "GenerateAll" , bool, ""); BBTK_INPUT(ModelMaker , Labels , "Labels" , std::vector, ""); BBTK_INPUT(ModelMaker , StartLabel , "StartLabel" , int, ""); BBTK_INPUT(ModelMaker , EndLabel , "EndLabel" , int, ""); BBTK_INPUT(ModelMaker , SkipUnNamed , "SkipUnNamed" , bool, ""); BBTK_INPUT(ModelMaker , JointSmoothing , "JointSmoothing" , bool, ""); BBTK_INPUT(ModelMaker , Smooth , "Smooth" , int, ""); BBTK_INPUT(ModelMaker , FilterType , "FilterType" , std::string, ""); BBTK_INPUT(ModelMaker , Decimate , "Decimate" , float, ""); BBTK_INPUT(ModelMaker , SplitNormals , "SplitNormals" , bool, ""); BBTK_INPUT(ModelMaker , PointNormals , "PointNormals" , bool, ""); BBTK_INPUT(ModelMaker , Pad , "Pad" , bool, ""); BBTK_INPUT(ModelMaker , SaveIntermediateModels , "SaveIntermediateModels" , bool, ""); BBTK_INPUT(ModelMaker , debug , "debug" , bool, ""); // EO GENERATED DESCRIPTION BBTK_END_DESCRIBE_BLACK_BOX ( ModelMaker ) ; } #endif // __bbSlicerModelMaker_h_INCLUDED__