diff --git a/Base/Core/imstkLogUtility.cpp b/Base/Core/imstkLogger.cpp similarity index 98% rename from Base/Core/imstkLogUtility.cpp rename to Base/Core/imstkLogger.cpp index 0e8b94f79cc36f5a1c3312ac4e030897a4710218..e4b63d873c4f029e82f5373f357c5d5d1beca2d0 100644 --- a/Base/Core/imstkLogUtility.cpp +++ b/Base/Core/imstkLogger.cpp @@ -19,7 +19,7 @@ =========================================================================*/ -#include "imstkLogUtility.h" +#include "imstkLogger.h" namespace imstk { stdSink::FG_Color diff --git a/Base/Core/imstkLogUtility.h b/Base/Core/imstkLogger.h similarity index 100% rename from Base/Core/imstkLogUtility.h rename to Base/Core/imstkLogger.h diff --git a/Base/Core/imstkModule.h b/Base/Core/imstkModule.h index f6a743db722cf2ec11caeeebea3a83e99e8bac24..1ea938f8581424edbfd6f061860950b8003b550d 100644 --- a/Base/Core/imstkModule.h +++ b/Base/Core/imstkModule.h @@ -26,7 +26,9 @@ #include <thread> #include <atomic> -namespace imstk { +namespace imstk +{ + enum class ModuleStatus { STARTING, diff --git a/Base/Devices/imstkVRPNDeviceServer.h b/Base/Devices/imstkVRPNDeviceServer.h index 12585100fe1022fbc69b2e6cfca16affffbfd81e..48d8901f2eb5bd7caf761efb87a53ed2a8f952b9 100644 --- a/Base/Devices/imstkVRPNDeviceServer.h +++ b/Base/Devices/imstkVRPNDeviceServer.h @@ -32,7 +32,8 @@ #include "imstkModule.h" #include "imstkVRPNDeviceClient.h" -namespace imstk { +namespace imstk +{ enum class DeviceType { diff --git a/Base/Geometry/Map/imstkGeometryMap.h b/Base/Geometry/Map/imstkGeometryMap.h index fd141857be6d3ac4e4439ea338ffc638b76172bd..fb67f1b65709433f86ba1b0e6907de61fd1cfc06 100644 --- a/Base/Geometry/Map/imstkGeometryMap.h +++ b/Base/Geometry/Map/imstkGeometryMap.h @@ -28,7 +28,8 @@ #include "imstkGeometry.h" #include "g3log/g3log.hpp" -namespace imstk { +namespace imstk +{ /// /// \class GeometryMap diff --git a/Base/Geometry/Map/imstkTetraTriangleMap.cpp b/Base/Geometry/Map/imstkTetraTriangleMap.cpp index 9613ab3a5a82198477f6c3ae3f1ae68ee397a887..056473b36962ff41f80e3ddd19f395c56747f513 100644 --- a/Base/Geometry/Map/imstkTetraTriangleMap.cpp +++ b/Base/Geometry/Map/imstkTetraTriangleMap.cpp @@ -64,7 +64,7 @@ TetraTriangleMap::compute() void TetraTriangleMap::apply() { - // Check Map active + // Check if map is active if (!m_isActive) { LOG(WARNING) << "TetraTriangle map is not active"; diff --git a/Base/Geometry/Reader/imstkMeshReader.cpp b/Base/Geometry/Reader/imstkMeshReader.cpp index c56d2301e3135eb10c9270e76d7600c0999461c3..c41f124dc23278759af2dd4385c1c505c6754131 100644 --- a/Base/Geometry/Reader/imstkMeshReader.cpp +++ b/Base/Geometry/Reader/imstkMeshReader.cpp @@ -38,18 +38,18 @@ MeshReader::read(const std::string& filePath) return nullptr; } - FileType meshType = MeshReader::getFileType(filePath); + MeshFileType meshType = MeshReader::getFileType(filePath); switch (meshType) { - case FileType::VTK : - case FileType::VTU : - case FileType::VTP : - case FileType::STL : - case FileType::PLY : - case FileType::OBJ : + case MeshFileType::VTK : + case MeshFileType::VTU : + case MeshFileType::VTP : + case MeshFileType::STL : + case MeshFileType::PLY : + case MeshFileType::OBJ : return VTKMeshReader::read(filePath, meshType); break; - case FileType::VEG : + case MeshFileType::VEG : return VegaMeshReader::read(filePath, meshType); break; } @@ -65,10 +65,10 @@ MeshReader::fileExists(const std::string& file) return (stat(file.c_str(), &buf) == 0); } -const MeshReader::FileType +const MeshFileType MeshReader::getFileType(const std::string& filePath) { - FileType meshType = FileType::UNKNOWN; + MeshFileType meshType = MeshFileType::UNKNOWN; std::string extString = filePath.substr(filePath.find_last_of(".") + 1); if (extString.empty()) @@ -79,31 +79,31 @@ MeshReader::getFileType(const std::string& filePath) if (extString == "vtk" || extString == "VTK") { - meshType = FileType::VTK; + meshType = MeshFileType::VTK; } else if (extString == "vtp" || extString == "VTP") { - meshType = FileType::VTP; + meshType = MeshFileType::VTP; } else if (extString == "vtu" || extString == "VTU") { - meshType = FileType::VTU; + meshType = MeshFileType::VTU; } else if (extString == "obj" || extString == "OBJ") { - meshType = FileType::OBJ; + meshType = MeshFileType::OBJ; } else if (extString == "stl" || extString == "STL") { - meshType = FileType::STL; + meshType = MeshFileType::STL; } else if (extString == "ply" || extString == "PLY") { - meshType = FileType::PLY; + meshType = MeshFileType::PLY; } else if (extString == "veg" || extString == "VEG") { - meshType = FileType::VEG; + meshType = MeshFileType::VEG; } else { diff --git a/Base/Geometry/Reader/imstkMeshReader.h b/Base/Geometry/Reader/imstkMeshReader.h index 20d801d1ecdf900328cc9f585e1e316e54ea32ff..b8f6afb3f7223e5eb238e03ad0c4abadd27698a0 100644 --- a/Base/Geometry/Reader/imstkMeshReader.h +++ b/Base/Geometry/Reader/imstkMeshReader.h @@ -30,43 +30,45 @@ namespace imstk { +enum MeshFileType +{ + UNKNOWN, + VTK, + VTU, + VTP, + STL, + PLY, + OBJ, + VEG +}; + /// /// \class MeshReader /// -/// \brief +/// \brief Mesh data reader /// class MeshReader { public: - enum FileType - { - UNKNOWN, - VTK, - VTU, - VTP, - STL, - PLY, - OBJ, - VEG - }; - MeshReader() = default; ~MeshReader() = default; /// - /// \brief read + /// \brief Read external file /// static std::shared_ptr<Mesh> read(const std::string& filePath); /// - /// \brief fileExists + /// \brief Returns true if the file exists, else false /// static bool fileExists(const std::string& file); protected: - - static const FileType getFileType(const std::string& filePath); + /// + /// \brief Returns the type of the file + /// + static const MeshFileType getFileType(const std::string& filePath); }; } diff --git a/Base/Geometry/Reader/imstkVTKMeshReader.cpp b/Base/Geometry/Reader/imstkVTKMeshReader.cpp index 04ad2dcf4393549013bb12c8e554e4e120c99d27..dbc7c18fdefb7c12e987c3ee6d84848cfaa7e88d 100644 --- a/Base/Geometry/Reader/imstkVTKMeshReader.cpp +++ b/Base/Geometry/Reader/imstkVTKMeshReader.cpp @@ -34,36 +34,36 @@ namespace imstk { std::shared_ptr<Mesh> -VTKMeshReader::read(const std::string& filePath, MeshReader::FileType meshType) +VTKMeshReader::read(const std::string& filePath, MeshFileType meshType) { switch (meshType) { - case MeshReader::FileType::VTK : + case MeshFileType::VTK : { return VTKMeshReader::readVtkGenericFormatData<vtkGenericDataObjectReader>(filePath); break; } - case MeshReader::FileType::VTU : + case MeshFileType::VTU : { return VTKMeshReader::readVtkUnstructuredGrid<vtkXMLUnstructuredGridReader>(filePath); break; } - case MeshReader::FileType::VTP : + case MeshFileType::VTP : { return VTKMeshReader::readVtkPolyData<vtkXMLPolyDataReader>(filePath); break; } - case MeshReader::FileType::STL : + case MeshFileType::STL : { return VTKMeshReader::readVtkPolyData<vtkSTLReader>(filePath); break; } - case MeshReader::FileType::PLY : + case MeshFileType::PLY : { return VTKMeshReader::readVtkPolyData<vtkPLYReader>(filePath); break; } - case MeshReader::FileType::OBJ : + case MeshFileType::OBJ : { return VTKMeshReader::readVtkPolyData<vtkOBJReader>(filePath); break; diff --git a/Base/Geometry/Reader/imstkVTKMeshReader.h b/Base/Geometry/Reader/imstkVTKMeshReader.h index fa4131f17a077b0c92cba93dab01241cdd53f6cb..d62018fdbfff5d1921958a81874d14dd95671283 100644 --- a/Base/Geometry/Reader/imstkVTKMeshReader.h +++ b/Base/Geometry/Reader/imstkVTKMeshReader.h @@ -52,7 +52,7 @@ public: /// /// \brief /// - static std::shared_ptr<Mesh> read(const std::string& filePath, MeshReader::FileType meshType); + static std::shared_ptr<Mesh> read(const std::string& filePath, MeshFileType meshType); protected: diff --git a/Base/Geometry/Reader/imstkVegaMeshReader.cpp b/Base/Geometry/Reader/imstkVegaMeshReader.cpp index 1cef0bc099715e4b50b0ae840f2695503756143b..f8c7185d5d83d08dcc0b88cca726b19586b55b83 100644 --- a/Base/Geometry/Reader/imstkVegaMeshReader.cpp +++ b/Base/Geometry/Reader/imstkVegaMeshReader.cpp @@ -33,9 +33,9 @@ namespace imstk{ std::shared_ptr<VolumetricMesh> -VegaMeshReader::read(const std::string& filePath, MeshReader::FileType meshType) +VegaMeshReader::read(const std::string& filePath, MeshFileType meshType) { - if (meshType != MeshReader::FileType::VEG) + if (meshType != MeshFileType::VEG) { LOG(WARNING) << "VegaMeshReader::read error: file type not supported"; return nullptr; diff --git a/Base/Geometry/Reader/imstkVegaMeshReader.h b/Base/Geometry/Reader/imstkVegaMeshReader.h index e5c1d93bb0b66af48c81c309bf097e0579f7c05b..9ff210464f026d2c1b450bd0d798c7720c234dc1 100644 --- a/Base/Geometry/Reader/imstkVegaMeshReader.h +++ b/Base/Geometry/Reader/imstkVegaMeshReader.h @@ -44,7 +44,7 @@ public: /// /// \brief /// - static std::shared_ptr<VolumetricMesh> read(const std::string& filePath, MeshReader::FileType meshType); + static std::shared_ptr<VolumetricMesh> read(const std::string& filePath, MeshFileType meshType); }; } diff --git a/Base/Scene/Object/imstkTimeIntegrator.h b/Base/Scene/Object/imstkTimeIntegrator.h index 1a8c0df2eedd8193357b35a867c1f4483213987c..3f5367dca565284f6e1cd913f308a69d5124a533 100644 --- a/Base/Scene/Object/imstkTimeIntegrator.h +++ b/Base/Scene/Object/imstkTimeIntegrator.h @@ -25,7 +25,16 @@ #include <array> #include "g3log/g3log.hpp" -namespace imstk { +namespace imstk +{ + +enum class TimeIntegratorType +{ + forwardEuler, + backwardEuler, + newmarkBeta, + centralDifference +}; /// /// \class TimeIntegrator diff --git a/Base/Scene/imstkScene.h b/Base/Scene/imstkScene.h index d9aba4b54faf4746a9e63df19112369b8fe8da2f..c88dc2f3cbc7b6fe65901ae46038ebf6b4205198 100644 --- a/Base/Scene/imstkScene.h +++ b/Base/Scene/imstkScene.h @@ -30,7 +30,9 @@ #include "imstkCamera.h" #include "imstkCollisionGraph.h" -namespace imstk { +namespace imstk +{ + class Scene { template<class T> diff --git a/Base/SceneElements/Controllers/imstkTrackingController.h b/Base/SceneElements/Controllers/imstkTrackingController.h index fcb3007734522760b0c7d439d351852136cad514..ad7eaf9acfff2a48865b71352d15815f73425787 100644 --- a/Base/SceneElements/Controllers/imstkTrackingController.h +++ b/Base/SceneElements/Controllers/imstkTrackingController.h @@ -29,6 +29,11 @@ namespace imstk { +/// +/// \class TrackingController +/// +/// \brief This class reports external device's position and orientation with a given offset +/// class TrackingController { public: @@ -43,6 +48,9 @@ public: rotZ = 0x20 }; + /// + /// \brief Destructor + /// ~TrackingController() = default; /// @@ -81,7 +89,9 @@ public: void setInversionFlags(unsigned char f); protected: - + /// + /// \brief Constructor + /// TrackingController(std::shared_ptr<DeviceClient> deviceClient = nullptr, double scaling = 1.0) : m_deviceClient(deviceClient), m_scaling(scaling) diff --git a/Base/SceneElements/Light/imstkLight.h b/Base/SceneElements/Light/imstkLight.h index 8492ca1c8a29ce3650c3d86803a921b347425863..1bf96c8c4a6fcabc1cdae64f7a129f021190bb0d 100644 --- a/Base/SceneElements/Light/imstkLight.h +++ b/Base/SceneElements/Light/imstkLight.h @@ -30,7 +30,9 @@ #include "imstkMath.h" #include "imstkColor.h" -namespace imstk { +namespace imstk +{ + enum class LightType { SCENE_LIGHT, diff --git a/Base/SceneElements/Objects/imstkSceneObject.cpp b/Base/SceneElements/Objects/imstkSceneObject.cpp index 4ba45f9ccc2463659da681911795e861f1bae24d..5d19c22cc9905cf512d34188787c7973626d08e1 100644 --- a/Base/SceneElements/Objects/imstkSceneObject.cpp +++ b/Base/SceneElements/Objects/imstkSceneObject.cpp @@ -21,9 +21,9 @@ #include "imstkSceneObject.h" -#include "imstkGeometry.h" +namespace imstk +{ -namespace imstk { std::shared_ptr<Geometry> SceneObject::getVisualGeometry() const { @@ -36,14 +36,14 @@ SceneObject::setVisualGeometry(std::shared_ptr<Geometry> geometry) m_visualGeometry = geometry; } -const SceneObject::Type& +const SceneObjectType& SceneObject::getType() const { return m_type; } void -SceneObject::setType(Type type) +SceneObject::setType(SceneObjectType type) { m_type = type; } @@ -55,8 +55,32 @@ SceneObject::getName() const } void -SceneObject::setName(std::string name) +SceneObject::setName(const std::string& name) { m_name = name; } + +std::shared_ptr<Geometry> +SceneObject::getCollidingGeometry() const +{ + return m_collidingGeometry; +} + +void +SceneObject::setCollidingGeometry(std::shared_ptr<Geometry> geometry) +{ + m_collidingGeometry = geometry; +} + +std::shared_ptr<GeometryMap> +SceneObject::getCollidingToVisualMap() const +{ + return m_collidingToVisualMap; +} + +void +SceneObject::setCollidingToVisualMap(std::shared_ptr<GeometryMap> map) +{ + m_collidingToVisualMap = map; +} } diff --git a/Base/SceneElements/Objects/imstkSceneObject.h b/Base/SceneElements/Objects/imstkSceneObject.h index e1b4bd2cd1637ba9472863ceefebd27f546b234c..4fbb4a2b7c874ca5ed299e98a47034c2bdf47440 100644 --- a/Base/SceneElements/Objects/imstkSceneObject.h +++ b/Base/SceneElements/Objects/imstkSceneObject.h @@ -22,45 +22,87 @@ #ifndef imstkSceneObject_h #define imstkSceneObject_h +#include "imstkGeometry.h" +#include "imstkGeometryMap.h" + #include <memory> #include <string> namespace imstk { -class Geometry; +enum class SceneObjectType +{ + Static, + Dynamic, + Rigid, + Deformable, + VirtualTool, +}; + +//class Geometry; +//class GeometryMap; +/// +/// \class SceneObject +/// +/// \brief Base class for all scene objects. A scene object can optionally be visible and +/// collide with other scene objects. A object of the class is static. +/// class SceneObject { public: - enum class Type - { - Visual, - Static, - VirtualCoupling, - Rigid, - Deformable - }; - + /// + /// \brief Constructor + /// SceneObject(std::string name) : m_name(name) {} + /// + /// \brief Destructor + /// virtual ~SceneObject() = default; - const Type& getType() const; + /// + /// \brief Get the type of the object + /// + const SceneObjectType& getType() const; + /// + /// \brief Get/Set the custom name of the scene object + /// const std::string& getName() const; - void setName(std::string name); + void setName(const std::string& name); + /// + /// \brief Get/Set geometry used for viewing + /// std::shared_ptr<Geometry> getVisualGeometry() const; void setVisualGeometry(std::shared_ptr<Geometry> geometry); + /// + /// \brief Set/Get the geometry used for collisions + /// + std::shared_ptr<Geometry> getCollidingGeometry() const; + void setCollidingGeometry(std::shared_ptr<Geometry> geometry); + + /// + /// \brief Set/Get the Colliding-to-Visual map + /// + std::shared_ptr<GeometryMap> getCollidingToVisualMap() const; + void setCollidingToVisualMap(std::shared_ptr<GeometryMap> map); + protected: + /// + /// \brief Assigns the type of the object + /// + void setType(SceneObjectType type); - void setType(Type type); + SceneObjectType m_type = SceneObjectType::Static; ///> Type of the scene object + std::string m_name; ///> Custom name of the scene object - Type m_type = Type::Visual; - std::string m_name; - std::shared_ptr<Geometry> m_visualGeometry; ///> Geometry for rendering + std::shared_ptr<Geometry> m_visualGeometry; ///> Geometry for rendering + std::shared_ptr<Geometry> m_collidingGeometry; ///> Geometry for collisions + std::shared_ptr<GeometryMap> m_collidingToVisualMap; ///> Maps transformations to visual geometry }; using VisualObject = SceneObject; diff --git a/Base/SimulationManager/imstkSceneManager.cpp b/Base/SimulationManager/imstkSceneManager.cpp index d402e0f37b0c3b38700308b51081061fd18a5553..8d87e2685ba3259e43f4599e96b64bdc4d68b7ca 100644 --- a/Base/SimulationManager/imstkSceneManager.cpp +++ b/Base/SimulationManager/imstkSceneManager.cpp @@ -22,7 +22,7 @@ #include "imstkSceneManager.h" #include "imstkCameraController.h" -#include "imstkVirtualCouplingObject.h" +#include "imstkVirtualToolObject.h" #include "g3log/g3log.hpp" @@ -46,7 +46,7 @@ SceneManager::initModule() // Init virtual coupling objects offsets for (auto obj : m_scene->getSceneObjects()) { - if (auto virtualCoupling = std::dynamic_pointer_cast<VirtualCouplingObject>(obj)) + if (auto virtualCoupling = std::dynamic_pointer_cast<VirtualToolObject>(obj)) { virtualCoupling->initOffsets(); } @@ -66,7 +66,7 @@ SceneManager::runModule() // Update virtualCoupling objects based on devices for (auto obj : m_scene->getSceneObjects()) { - if (auto virtualCoupling = std::dynamic_pointer_cast<VirtualCouplingObject>(obj)) + if (auto virtualCoupling = std::dynamic_pointer_cast<VirtualToolObject>(obj)) { virtualCoupling->updateFromDevice(); virtualCoupling->applyForces(); diff --git a/Base/SimulationManager/imstkSimulationManager.h b/Base/SimulationManager/imstkSimulationManager.h index d4cc1a29bcad96c50c2bdc1671e888cecc09fc56..3afc107cdebda032bfbab48ed40f6129eb75fc7b 100644 --- a/Base/SimulationManager/imstkSimulationManager.h +++ b/Base/SimulationManager/imstkSimulationManager.h @@ -32,7 +32,7 @@ #include "imstkDeviceClient.h" #include "imstkSceneManager.h" #include "imstkViewer.h" -#include "imstkLogUtility.h" +#include "imstkLogger.h" namespace imstk { using SimulationStatus = ModuleStatus; diff --git a/Examples/Sandbox/main.cpp b/Examples/Sandbox/main.cpp index 53a4b176d67274334b5f5613733c718061e17c2a..aa159bb77fa1065e3dd7b79332f165cf5c86358b 100644 --- a/Examples/Sandbox/main.cpp +++ b/Examples/Sandbox/main.cpp @@ -10,8 +10,7 @@ // Objects #include "imstkSceneObject.h" -#include "imstkCollidingObject.h" -#include "imstkVirtualCouplingObject.h" +#include "imstkVirtualToolObject.h" #include "imstkLight.h" #include "imstkCamera.h" @@ -254,7 +253,7 @@ void testTwoFalcons() auto sphere0Geom = std::make_shared<imstk::Sphere>(); sphere0Geom->setPosition(imstk::Vec3d(16,4.5,0)); sphere0Geom->scale(1); - auto sphere0Obj = std::make_shared<imstk::VirtualCouplingObject>("Sphere0", falcon0, 30); + auto sphere0Obj = std::make_shared<imstk::VirtualToolObject>("Sphere0", falcon0, 30); sphere0Obj->setVisualGeometry(sphere0Geom); sphere0Obj->setCollidingGeometry(sphere0Geom); scene->addSceneObject(sphere0Obj); @@ -263,7 +262,7 @@ void testTwoFalcons() auto sphere1Geom = std::make_shared<imstk::Sphere>(); sphere1Geom->setPosition(imstk::Vec3d(-16,4.5,0)); sphere1Geom->scale(1); - auto sphere1Obj = std::make_shared<imstk::VirtualCouplingObject>("Sphere1", falcon1, 30); + auto sphere1Obj = std::make_shared<imstk::VirtualToolObject>("Sphere1", falcon1, 30); sphere1Obj->setVisualGeometry(sphere1Geom); sphere1Obj->setCollidingGeometry(sphere1Geom); scene->addSceneObject(sphere1Obj);