diff --git a/Examples/BoneShaving/BoneShavingExample.cpp b/Examples/BoneShaving/BoneShavingExample.cpp index 41c4aa6eed5304e53be338bee5783e93be849c8c..ce8e3912fed516af4b1dd408759ab7c95a281626 100644 --- a/Examples/BoneShaving/BoneShavingExample.cpp +++ b/Examples/BoneShaving/BoneShavingExample.cpp @@ -22,6 +22,7 @@ #include "imstkMath.h" #include "imstkTimer.h" #include "imstkSimulationManager.h" +#include "imstkScene.h" // Objects #include "imstkSceneObject.h" @@ -35,6 +36,7 @@ #include "imstkMeshIO.h" // Devices and controllers +#include "imstkDeviceTracker.h" #include "imstkHDAPIDeviceClient.h" #include "imstkHDAPIDeviceServer.h" #include "imstkSceneObjectController.h" diff --git a/Examples/CameraController/CameraControllerExample.cpp b/Examples/CameraController/CameraControllerExample.cpp index da96f62e0beee11831b748b9d506a3725072f074..8106d64527983b00f6e2bf9617dbae1733f6522b 100644 --- a/Examples/CameraController/CameraControllerExample.cpp +++ b/Examples/CameraController/CameraControllerExample.cpp @@ -24,6 +24,7 @@ #include "imstkLight.h" #include "imstkCamera.h" #include "imstkMeshIO.h" +#include "imstkScene.h" // Devices and controllers #include "imstkHDAPIDeviceClient.h" @@ -31,6 +32,8 @@ #include "imstkCameraController.h" #include "imstkCollisionGraph.h" +#include "imstkScene.h" + const std::string phantomOmni1Name = "Phantom1"; using namespace imstk; diff --git a/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp b/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp index dd115aa62413604b5152d85803cecabf709918d1..b16814ba18a8bdc3c7b800e71cae0a08ea0a7e58 100644 --- a/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp +++ b/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp @@ -28,6 +28,14 @@ #include "imstkTimer.h" #include "imstkVTKTextStatusManager.h" #include "imstkCollisionData.h" +#include "imstkCamera.h" +#include "imstkDebugRenderGeometry.h" +#include "imstkCollidingObject.h" +#include "imstkSceneManager.h" +#include "imstkSurfaceMesh.h" +#include "imstkCollisionGraph.h" +#include "imstkScene.h" +#include "imstkVTKRenderer.h" // This is for collision detection between geometries #include "imstkOctreeBasedCD.h" diff --git a/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp b/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp index 9dd0dcacf256c22bf9a36c071e0ab9d36b211018..48e14db1b750d3d8eb4e8b8bf1df5d13c673e346 100644 --- a/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp +++ b/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp @@ -21,12 +21,15 @@ #include "imstkSimulationManager.h" #include "imstkLight.h" +#include "imstkCamera.h" +#include "imstkCollisionGraph.h" #include "imstkAPIUtilities.h" #include "imstkSurfaceMesh.h" #include "imstkTetrahedralMesh.h" #include "imstkMeshIO.h" #include "imstkVTKMeshIO.h" #include "imstkGeometryUtilities.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/DebugRendering/DebugRenderingExample.cpp b/Examples/DebugRendering/DebugRenderingExample.cpp index 5f1c084c1603aabfcf7f5f292667b14bb4ef2ff6..34510c7e26a717f4762cae13eea03201490b7b33 100644 --- a/Examples/DebugRendering/DebugRenderingExample.cpp +++ b/Examples/DebugRendering/DebugRenderingExample.cpp @@ -22,10 +22,15 @@ #include "imstkSimulationManager.h" #include "imstkSceneObject.h" #include "imstkLight.h" +#include "imstkCamera.h" +#include "imstkSceneManager.h" +#include "imstkCollisionGraph.h" #include "imstkDebugRenderGeometry.h" #include "imstkAPIUtilities.h" #include "imstkVTKViewer.h" +#include "imstkVTKRenderer.h" #include "imstkVTKTextStatusManager.h" +#include "imstkScene.h" #include <thread> #include <chrono> diff --git a/Examples/DeformableBody/DeformableBodyExample.cpp b/Examples/DeformableBody/DeformableBodyExample.cpp index d5d211e1a6a29594d849900d3c3f47ad8de669c7..03f9c3966eee5cadcce3e38c37df71d693498b70 100644 --- a/Examples/DeformableBody/DeformableBodyExample.cpp +++ b/Examples/DeformableBody/DeformableBodyExample.cpp @@ -33,6 +33,11 @@ #include "imstkAPIUtilities.h" #include "imstkConjugateGradient.h" #include "imstkLight.h" +#include "imstkCamera.h" +#include "imstkFEMDeformableBodyModel.h" +#include "imstkCollisionGraph.h" +#include "imstkSurfaceMesh.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/GeometryProcessing/GeometryProcessingExample.cpp b/Examples/GeometryProcessing/GeometryProcessingExample.cpp index 9973b7f1f258aa77257a69c9980ca791a72690a6..7a7df7d819e4cca027de256c7439019c86049a2b 100644 --- a/Examples/GeometryProcessing/GeometryProcessingExample.cpp +++ b/Examples/GeometryProcessing/GeometryProcessingExample.cpp @@ -27,6 +27,12 @@ #include "imstkCube.h" #include "imstkAPIUtilities.h" #include "imstkGeometryUtilities.h" +#include "imstkCamera.h" +#include "imstkMeshIO.h" +#include "imstkSurfaceMesh.h" +#include "imstkTetrahedralMesh.h" +#include "imstkCollisionGraph.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/GeometryTransforms/GeometryTransformsExample.cpp b/Examples/GeometryTransforms/GeometryTransformsExample.cpp index 1c57c90746d250a998bc2345d91503e626d03e37..a2656b5e9b3b862633f9ac200d7554e7bc8d230e 100644 --- a/Examples/GeometryTransforms/GeometryTransformsExample.cpp +++ b/Examples/GeometryTransforms/GeometryTransformsExample.cpp @@ -20,6 +20,8 @@ =========================================================================*/ #include "imstkSimulationManager.h" +#include "imstkSceneManager.h" +#include "imstkCollisionGraph.h" #include "imstkSceneObject.h" #include "imstkCamera.h" #include "imstkLight.h" @@ -27,6 +29,7 @@ #include "imstkCylinder.h" #include "imstkCube.h" #include "imstkAPIUtilities.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/Graph/GraphExample.cpp b/Examples/Graph/GraphExample.cpp index 7f2f65723b4c626d55190e2ad86c358dc820cda3..7dff368ab5dff171bca762583a999232736ef5dc 100644 --- a/Examples/Graph/GraphExample.cpp +++ b/Examples/Graph/GraphExample.cpp @@ -23,6 +23,7 @@ #include "imstkTetrahedralMesh.h" #include "imstkMeshIO.h" #include "imstkAPIUtilities.h" +#include "imstkSurfaceMesh.h" #include <iostream> diff --git a/Examples/LineMesh/LineMeshExample.cpp b/Examples/LineMesh/LineMeshExample.cpp index ab9b0ceaf624e5a984995efcd7a7aa5c0843033f..fd64ccea6c23256771bedfe08ec8d368368cf704 100644 --- a/Examples/LineMesh/LineMeshExample.cpp +++ b/Examples/LineMesh/LineMeshExample.cpp @@ -20,8 +20,11 @@ =========================================================================*/ #include "imstkSimulationManager.h" +#include "imstkCollisionGraph.h" #include "imstkAPIUtilities.h" +#include "imstkCamera.h" #include "imstkLineMesh.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/MultipleScenes/multipleScenes.cpp b/Examples/MultipleScenes/multipleScenes.cpp index db2df2f3c23b7fe13d1a6a4dc3ffd896c37e05bf..0291b9fbf2eda88970a00fcc1c6edcbe99528618 100644 --- a/Examples/MultipleScenes/multipleScenes.cpp +++ b/Examples/MultipleScenes/multipleScenes.cpp @@ -24,6 +24,13 @@ #include "imstkPbdObject.h" #include "imstkAPIUtilities.h" #include "imstkOneToOneMap.h" +#include "imstkCamera.h" +#include "imstkSurfaceMesh.h" +#include "imstkMeshIO.h" +#include "imstkTetrahedralMesh.h" +#include "imstkCollisionGraph.h" +#include "imstkPlane.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/ObjectController/ObjectControllerExample.cpp b/Examples/ObjectController/ObjectControllerExample.cpp index 7530a34845360125a120dedc2ba653affa7e5e63..1cc14e4dc36e8ab428d52425ac19be0e7d9fcf62 100644 --- a/Examples/ObjectController/ObjectControllerExample.cpp +++ b/Examples/ObjectController/ObjectControllerExample.cpp @@ -28,6 +28,8 @@ #include "imstkHDAPIDeviceServer.h" #include "imstkSceneObjectController.h" #include "imstkCollisionGraph.h" +#include "imstkDeviceTracker.h" +#include "imstkScene.h" // global variables const std::string phantomOmni1Name = "Phantom1"; diff --git a/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp b/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp index c86ad85491f21b922458aaadd4e4579af2fd1647..87b0344db7294d62036c282e0f9aa48bbfc39362 100644 --- a/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp +++ b/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp @@ -27,7 +27,9 @@ #include "imstkSceneManager.h" #include "imstkCube.h" #include "imstkDummyClient.h" +#include "imstkDeviceTracker.h" #include "imstkSceneObjectController.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/Octree/OctreeExample.cpp b/Examples/Octree/OctreeExample.cpp index 99b41aff4be4d55a70f03710d8b837ee76970cce..512240c6f90dc8864684fcbdc46856fadffeb1ca 100644 --- a/Examples/Octree/OctreeExample.cpp +++ b/Examples/Octree/OctreeExample.cpp @@ -27,7 +27,13 @@ #include "imstkVTKViewer.h" #include "imstkTimer.h" #include "imstkLight.h" +#include "imstkSurfaceMesh.h" +#include "imstkSceneManager.h" +#include "imstkCamera.h" #include "imstkVTKTextStatusManager.h" +#include "imstkCollisionGraph.h" +#include "imstkScene.h" +#include "imstkVTKRenderer.h" #include <thread> #include <chrono> diff --git a/Examples/PBD/PBDCloth/pbdClothExample.cpp b/Examples/PBD/PBDCloth/pbdClothExample.cpp index 5245ceb52e70a546d7eaa74470cc6bb3132384dc..6ccbf0a2c89f9740e6a7acb728f518fcbe45dc02 100644 --- a/Examples/PBD/PBDCloth/pbdClothExample.cpp +++ b/Examples/PBD/PBDCloth/pbdClothExample.cpp @@ -23,7 +23,11 @@ #include "imstkPbdModel.h" #include "imstkPbdObject.h" #include "imstkAPIUtilities.h" +#include "imstkSurfaceMesh.h" +#include "imstkCollisionGraph.h" +#include "imstkCamera.h" #include "imstkLight.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp b/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp index eb75d2f54930f6803a105a27413b22bb9f0a659b..e620279b58b856420c1cfdea800110c2b56ec541 100644 --- a/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp +++ b/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp @@ -33,6 +33,8 @@ #include "imstkPBDCollisionHandling.h" #include "imstkVTKTextStatusManager.h" #include "imstkCollisionData.h" +#include "imstkSurfaceMesh.h" +#include "imstkScene.h" // Enable this macro to generate many dragons #define BIG_SCENE diff --git a/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp b/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp index 0bc4d5991684547749b3e37b2e2d4678161ada8d..8a09a5c06240b3ed929aab81c8a633bc92d492f8 100644 --- a/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp +++ b/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp @@ -31,6 +31,8 @@ #include "imstkMeshToMeshBruteForceCD.h" #include "imstkPBDCollisionHandling.h" #include "imstkTetraTriangleMap.h" +#include "imstkSurfaceMesh.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp b/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp index 9dc0b77c76c340005ef92458f48365d4fed1cbda..7ae559e88652416458b076e7f3ce0a8ce5d085e5 100644 --- a/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp +++ b/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp @@ -31,62 +31,65 @@ #include "imstkTetrahedralMesh.h" #include "imstkTetraTriangleMap.h" #include "imstkCollisionGraph.h" +#include "imstkSurfaceMesh.h" #include "imstkLight.h" +#include "imstkScene.h" using namespace imstk; // Creates a non-manifold top part of a staircase -static std::unique_ptr<SurfaceMesh> buildStairs(int nSteps, double width, double height, double depth) +static std::unique_ptr<SurfaceMesh> +buildStairs(int nSteps, double width, double height, double depth) { - // Build stair geometry - const double halfWidth = width * 0.5; - const double halfHeight = height * 0.5; - const double halfDepth = depth * 0.5; - const double dz = depth / static_cast<double>(nSteps); - const double dy = height / static_cast<double>(nSteps); - - // Create vertices - StdVectorOfVec3d vertList; - // 4 verts per step, 2 back, then 2 bottom - vertList.reserve(nSteps * 4 + 4); - for (size_t i = 0; i < nSteps; i++) - { - const double z = static_cast<double>(dz * i) - halfDepth; - const double y1 = static_cast<double>(dy * i) - halfHeight; - vertList.push_back(Vec3d(-halfWidth, y1, z)); - vertList.push_back(Vec3d(halfWidth, y1, z)); - - const double y2 = static_cast<double>(dy * (i + 1)) - halfHeight; - vertList.push_back(Vec3d(-halfWidth, y2, z)); - vertList.push_back(Vec3d(halfWidth, y2, z)); - } - { - const double z = static_cast<double>(dz * nSteps) - halfDepth; - const double yTop = static_cast<double>(dy * nSteps) - halfHeight; - vertList.push_back(Vec3d(-halfWidth, yTop, z)); - vertList.push_back(Vec3d(halfWidth, yTop, z)); - - const double yBot = -halfHeight; - vertList.push_back(Vec3d(-halfWidth, yBot, z)); - vertList.push_back(Vec3d(halfWidth, yBot, z)); - } - - // Create cells - std::vector<SurfaceMesh::TriangleArray> triangles; - // Create sides and tops of steps - for (std::size_t i = 0; i < nSteps; ++i) - { - // Stair front side - triangles.push_back({ { i * 4 + 3, i * 4 + 1, i * 4 } }); - triangles.push_back({ { i * 4 + 2, i * 4 + 3, i * 4 } }); - // Stair top - triangles.push_back({ { (i + 1) * 4, i * 4 + 3, i * 4 + 2 } }); - triangles.push_back({ { (i + 1) * 4, (i + 1) * 4 + 1, i * 4 + 3 } }); - } - - std::unique_ptr<SurfaceMesh> stairMesh = std::make_unique<SurfaceMesh>(); - stairMesh->initialize(vertList, triangles); - return stairMesh; + // Build stair geometry + const double halfWidth = width * 0.5; + const double halfHeight = height * 0.5; + const double halfDepth = depth * 0.5; + const double dz = depth / static_cast<double>(nSteps); + const double dy = height / static_cast<double>(nSteps); + + // Create vertices + StdVectorOfVec3d vertList; + // 4 verts per step, 2 back, then 2 bottom + vertList.reserve(nSteps * 4 + 4); + for (size_t i = 0; i < nSteps; i++) + { + const double z = static_cast<double>(dz * i) - halfDepth; + const double y1 = static_cast<double>(dy * i) - halfHeight; + vertList.push_back(Vec3d(-halfWidth, y1, z)); + vertList.push_back(Vec3d(halfWidth, y1, z)); + + const double y2 = static_cast<double>(dy * (i + 1)) - halfHeight; + vertList.push_back(Vec3d(-halfWidth, y2, z)); + vertList.push_back(Vec3d(halfWidth, y2, z)); + } + { + const double z = static_cast<double>(dz * nSteps) - halfDepth; + const double yTop = static_cast<double>(dy * nSteps) - halfHeight; + vertList.push_back(Vec3d(-halfWidth, yTop, z)); + vertList.push_back(Vec3d(halfWidth, yTop, z)); + + const double yBot = -halfHeight; + vertList.push_back(Vec3d(-halfWidth, yBot, z)); + vertList.push_back(Vec3d(halfWidth, yBot, z)); + } + + // Create cells + std::vector<SurfaceMesh::TriangleArray> triangles; + // Create sides and tops of steps + for (std::size_t i = 0; i < nSteps; ++i) + { + // Stair front side + triangles.push_back({ { i* 4 + 3, i* 4 + 1, i* 4 } }); + triangles.push_back({ { i* 4 + 2, i* 4 + 3, i* 4 } }); + // Stair top + triangles.push_back({ { (i + 1) * 4, i * 4 + 3, i * 4 + 2 } }); + triangles.push_back({ { (i + 1) * 4, (i + 1) * 4 + 1, i * 4 + 3 } }); + } + + std::unique_ptr<SurfaceMesh> stairMesh = std::make_unique<SurfaceMesh>(); + stairMesh->initialize(vertList, triangles); + return stairMesh; } /// @@ -96,101 +99,101 @@ static std::unique_ptr<SurfaceMesh> buildStairs(int nSteps, double width, double int main() { - auto simManager = std::make_shared<SimulationManager>(); - auto scene = simManager->createNewScene("PbdCollision"); - scene->getCamera()->setPosition(0.0, 0.0, -30.0); - scene->getCamera()->setFocalPoint(0.0, 0.0, 0.0); - - auto deformableObj = std::make_shared<PbdObject>("DeformableObj"); - { - // Read in the dragon mesh - auto highResSurfMesh = std::dynamic_pointer_cast<SurfaceMesh>(MeshIO::read(iMSTK_DATA_ROOT "/asianDragon/asianDragon.obj")); - auto coarseTetMesh = std::dynamic_pointer_cast<TetrahedralMesh>(MeshIO::read(iMSTK_DATA_ROOT "/asianDragon/asianDragon.veg")); - highResSurfMesh->translate(Vec3d(0.0f, 10.0f, 0.0f), Geometry::TransformType::ApplyToData); - coarseTetMesh->translate(Vec3d(0.0f, 10.0f, 0.0f), Geometry::TransformType::ApplyToData); - auto coarseSurfMesh = std::make_shared<SurfaceMesh>(); - coarseTetMesh->extractSurfaceMesh(coarseSurfMesh, true); - - // Setup parameters - auto pbdParams = std::make_shared<PBDModelConfig>(); - pbdParams->m_YoungModulus = 1000.0; - pbdParams->m_PoissonRatio = 0.3; - pbdParams->enableFEMConstraint(PbdConstraint::Type::FEMTet, - PbdFEMConstraint::MaterialType::StVK); - pbdParams->m_uniformMassValue = 1.0; - pbdParams->m_gravity = Vec3d(0, -10.0, 0); - pbdParams->m_DefaultDt = 0.01; - pbdParams->m_maxIter = 5; - pbdParams->m_proximity = 0.3; - pbdParams->m_contactStiffness = 0.1; - - // Setup Model - auto pbdModel = std::make_shared<PbdModel>(); - pbdModel->setModelGeometry(coarseTetMesh); - pbdModel->configure(pbdParams); - - // Setup VisualModel - auto material = std::make_shared<RenderMaterial>(); - material->setDisplayMode(RenderMaterial::DisplayMode::WireframeSurface); - auto surfMeshModel = std::make_shared<VisualModel>(highResSurfMesh); - surfMeshModel->setRenderMaterial(material); - - // Setup Object - deformableObj->addVisualModel(surfMeshModel); - deformableObj->setCollidingGeometry(coarseSurfMesh); - deformableObj->setPhysicsGeometry(coarseTetMesh); - deformableObj->setPhysicsToCollidingMap(std::make_shared<OneToOneMap>(coarseTetMesh, coarseSurfMesh)); - deformableObj->setPhysicsToVisualMap(std::make_shared<TetraTriangleMap>(coarseTetMesh, highResSurfMesh)); - deformableObj->setDynamicalModel(pbdModel); - - // Add to scene - scene->addSceneObject(deformableObj); - } - - auto stairObj = std::make_shared<PbdObject>("Floor"); - { - std::shared_ptr<SurfaceMesh> stairMesh(std::move(buildStairs(15, 20.0, 10.0, 20.0))); - - // Setup parameters - auto pbdParams2 = std::make_shared<PBDModelConfig>(); - pbdParams2->m_uniformMassValue = 0.0; - pbdParams2->m_proximity = 0.1; - pbdParams2->m_contactStiffness = 1.0; - pbdParams2->m_maxIter = 0; - - // Setup model - auto pbdModel2 = std::make_shared<PbdModel>(); - pbdModel2->setModelGeometry(stairMesh); - pbdModel2->configure(pbdParams2); - - // Setup VisualModel - auto stairMaterial = std::make_shared<RenderMaterial>(); - stairMaterial->setDisplayMode(RenderMaterial::DisplayMode::WireframeSurface); - auto stairMeshModel = std::make_shared<VisualModel>(stairMesh); - stairMeshModel->setRenderMaterial(stairMaterial); - - stairObj->addVisualModel(stairMeshModel); - stairObj->setDynamicalModel(pbdModel2); - stairObj->setCollidingGeometry(stairMesh); - stairObj->setVisualGeometry(stairMesh); - stairObj->setPhysicsGeometry(stairMesh); - - scene->addSceneObject(stairObj); - } - - // Collision - scene->getCollisionGraph()->addInteractionPair(deformableObj, stairObj, - CollisionDetection::Type::MeshToMeshBruteForce, - CollisionHandling::Type::PBD, - CollisionHandling::Type::None); - - // Light - auto light = std::make_shared<DirectionalLight>("light"); - light->setFocalPoint(Vec3d(5, -8, 5)); - scene->addLight(light); - - simManager->setActiveScene(scene); - simManager->start(SimulationStatus::Paused); + auto simManager = std::make_shared<SimulationManager>(); + auto scene = simManager->createNewScene("PbdCollision"); + scene->getCamera()->setPosition(0.0, 0.0, -30.0); + scene->getCamera()->setFocalPoint(0.0, 0.0, 0.0); + + auto deformableObj = std::make_shared<PbdObject>("DeformableObj"); + { + // Read in the dragon mesh + auto highResSurfMesh = std::dynamic_pointer_cast<SurfaceMesh>(MeshIO::read(iMSTK_DATA_ROOT "/asianDragon/asianDragon.obj")); + auto coarseTetMesh = std::dynamic_pointer_cast<TetrahedralMesh>(MeshIO::read(iMSTK_DATA_ROOT "/asianDragon/asianDragon.veg")); + highResSurfMesh->translate(Vec3d(0.0f, 10.0f, 0.0f), Geometry::TransformType::ApplyToData); + coarseTetMesh->translate(Vec3d(0.0f, 10.0f, 0.0f), Geometry::TransformType::ApplyToData); + auto coarseSurfMesh = std::make_shared<SurfaceMesh>(); + coarseTetMesh->extractSurfaceMesh(coarseSurfMesh, true); + + // Setup parameters + auto pbdParams = std::make_shared<PBDModelConfig>(); + pbdParams->m_YoungModulus = 1000.0; + pbdParams->m_PoissonRatio = 0.3; + pbdParams->enableFEMConstraint(PbdConstraint::Type::FEMTet, + PbdFEMConstraint::MaterialType::StVK); + pbdParams->m_uniformMassValue = 1.0; + pbdParams->m_gravity = Vec3d(0, -10.0, 0); + pbdParams->m_DefaultDt = 0.01; + pbdParams->m_maxIter = 5; + pbdParams->m_proximity = 0.3; + pbdParams->m_contactStiffness = 0.1; + + // Setup Model + auto pbdModel = std::make_shared<PbdModel>(); + pbdModel->setModelGeometry(coarseTetMesh); + pbdModel->configure(pbdParams); + + // Setup VisualModel + auto material = std::make_shared<RenderMaterial>(); + material->setDisplayMode(RenderMaterial::DisplayMode::WireframeSurface); + auto surfMeshModel = std::make_shared<VisualModel>(highResSurfMesh); + surfMeshModel->setRenderMaterial(material); + + // Setup Object + deformableObj->addVisualModel(surfMeshModel); + deformableObj->setCollidingGeometry(coarseSurfMesh); + deformableObj->setPhysicsGeometry(coarseTetMesh); + deformableObj->setPhysicsToCollidingMap(std::make_shared<OneToOneMap>(coarseTetMesh, coarseSurfMesh)); + deformableObj->setPhysicsToVisualMap(std::make_shared<TetraTriangleMap>(coarseTetMesh, highResSurfMesh)); + deformableObj->setDynamicalModel(pbdModel); + + // Add to scene + scene->addSceneObject(deformableObj); + } + + auto stairObj = std::make_shared<PbdObject>("Floor"); + { + std::shared_ptr<SurfaceMesh> stairMesh(std::move(buildStairs(15, 20.0, 10.0, 20.0))); + + // Setup parameters + auto pbdParams2 = std::make_shared<PBDModelConfig>(); + pbdParams2->m_uniformMassValue = 0.0; + pbdParams2->m_proximity = 0.1; + pbdParams2->m_contactStiffness = 1.0; + pbdParams2->m_maxIter = 0; + + // Setup model + auto pbdModel2 = std::make_shared<PbdModel>(); + pbdModel2->setModelGeometry(stairMesh); + pbdModel2->configure(pbdParams2); + + // Setup VisualModel + auto stairMaterial = std::make_shared<RenderMaterial>(); + stairMaterial->setDisplayMode(RenderMaterial::DisplayMode::WireframeSurface); + auto stairMeshModel = std::make_shared<VisualModel>(stairMesh); + stairMeshModel->setRenderMaterial(stairMaterial); + + stairObj->addVisualModel(stairMeshModel); + stairObj->setDynamicalModel(pbdModel2); + stairObj->setCollidingGeometry(stairMesh); + stairObj->setVisualGeometry(stairMesh); + stairObj->setPhysicsGeometry(stairMesh); + + scene->addSceneObject(stairObj); + } + + // Collision + scene->getCollisionGraph()->addInteractionPair(deformableObj, stairObj, + CollisionDetection::Type::MeshToMeshBruteForce, + CollisionHandling::Type::PBD, + CollisionHandling::Type::None); + + // Light + auto light = std::make_shared<DirectionalLight>("light"); + light->setFocalPoint(Vec3d(5, -8, 5)); + scene->addLight(light); + + simManager->setActiveScene(scene); + simManager->start(SimulationStatus::Paused); return 0; } diff --git a/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp b/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp index 629cecac5e7c4b03a13c564df91836b0a8fc6390..46f8788b6b54fccf3b7dd14ddc1a6d2ad8deef7c 100644 --- a/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp +++ b/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp @@ -27,6 +27,13 @@ #include "imstkOneToOneMap.h" #include "imstkAPIUtilities.h" #include "imstkTetraTriangleMap.h" +#include "imstkCollisionGraph.h" +#include "imstkSurfaceMesh.h" +#include "imstkCamera.h" +#include "imstkPlane.h" +#include "imstkScene.h" + +#include <array> using namespace imstk; diff --git a/Examples/PBD/PBDFluids/PBDFluidsExample.cpp b/Examples/PBD/PBDFluids/PBDFluidsExample.cpp index 9a285c370d1ab815fbf1b019fb863f2bbcee4900..50e7ee13eda3c6da3099944fbe69f8fe144f8ba2 100644 --- a/Examples/PBD/PBDFluids/PBDFluidsExample.cpp +++ b/Examples/PBD/PBDFluids/PBDFluidsExample.cpp @@ -29,6 +29,8 @@ #include "imstkAPIUtilities.h" #include "imstkMeshToMeshBruteForceCD.h" #include "imstkPBDCollisionHandling.h" +#include "imstkSurfaceMesh.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/PBD/PBDString/pbdStringExample.cpp b/Examples/PBD/PBDString/pbdStringExample.cpp index 20bd8b91bbf4ada411cead17c5a5c09c7a8e6f3e..94a4a4a414ce67453f1a8cf06d0a889317881e40 100644 --- a/Examples/PBD/PBDString/pbdStringExample.cpp +++ b/Examples/PBD/PBDString/pbdStringExample.cpp @@ -24,6 +24,10 @@ #include "imstkPbdModel.h" #include "imstkPbdObject.h" #include "imstkSimulationManager.h" +#include "imstkSceneManager.h" +#include "imstkCollisionGraph.h" +#include "imstkCamera.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/RCM/RCM.cpp b/Examples/RCM/RCM.cpp index c31dec67dd7af09264264cb1f9134ed9463edd60..94b27287116c96e84695dcee86f61e792bfc1f4c 100644 --- a/Examples/RCM/RCM.cpp +++ b/Examples/RCM/RCM.cpp @@ -22,8 +22,10 @@ #include "imstkMeshIO.h" #include "imstkTetrahedralMesh.h" #include "imstkGeometryUtilities.h" +#include "imstkSurfaceMesh.h" #include "imstkLogger.h" #include "bandwidth.h" + #include <thread> using namespace imstk; diff --git a/Examples/Rendering/RenderingExample.cpp b/Examples/Rendering/RenderingExample.cpp index ce5b2d6f3db74e39786a443760297b7565a96f27..2d5ff2a29ab7076931407164b754fcbef6588d48 100644 --- a/Examples/Rendering/RenderingExample.cpp +++ b/Examples/Rendering/RenderingExample.cpp @@ -22,8 +22,11 @@ #include "imstkSimulationManager.h" #include "imstkAPIUtilities.h" #include "imstkVisualObjectImporter.h" +#include "imstkCollisionGraph.h" #include "imstkIBLProbe.h" +#include "imstkCamera.h" #include "imstkLight.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp b/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp index afad4d60cdf2a567b5aed5f8a5e30c0c11f25b40..43495d0053c70c44b71c14afa97988cce58c53cc 100644 --- a/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp +++ b/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp @@ -32,6 +32,7 @@ #include "imstkSphere.h" #include "imstkMeshIO.h" #include "imstkIsometricMap.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp b/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp index e4e68a55c563854ca28431d86dbbb0a1b96fda0d..ee7b4dbdd6b0c041a06dbb75009e51b438235827 100644 --- a/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp +++ b/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp @@ -39,6 +39,8 @@ #include "imstkCamera.h" #include "imstkRigidBodyModel.h" #include "imstkCollisionGraph.h" +#include "imstkDeviceTracker.h" +#include "imstkScene.h" // global variables const std::string phantomOmni1Name = "Default Device"; diff --git a/Examples/SPHFluid/Fluid.hpp b/Examples/SPHFluid/Fluid.hpp index da03a8634416a3f1ef86f01459a78eaa2580461c..48ab27fa649601faa2a3d6ac349ea41c5f98038e 100644 --- a/Examples/SPHFluid/Fluid.hpp +++ b/Examples/SPHFluid/Fluid.hpp @@ -23,6 +23,8 @@ #include "imstkSPHObject.h" #include "imstkSPHSolver.h" #include "imstkSPHModel.h" +#include "imstkPointSet.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/SPHFluid/SPHFluidExample.hpp b/Examples/SPHFluid/SPHFluidExample.hpp index abb660eb0ee104b3063a923583d2508be81b76d2..d86ee4588b9ee0e1336ced89d7331f447ecb1955 100644 --- a/Examples/SPHFluid/SPHFluidExample.hpp +++ b/Examples/SPHFluid/SPHFluidExample.hpp @@ -28,6 +28,9 @@ #include "imstkPlane.h" #include "imstkSphere.h" #include "imstkVTKTextStatusManager.h" +#include "imstkCollisionGraph.h" +#include "imstkSceneManager.h" +#include "imstkCamera.h" #include "Fluid.hpp" #include "Solid.hpp" diff --git a/Examples/SceneManagement/SceneManagementExample.cpp b/Examples/SceneManagement/SceneManagementExample.cpp index f22ff1f47c767507a58c45a101164b1fd31c176a..45418a5f9d8cd4ec668ac39e7da2267528f3ed41 100644 --- a/Examples/SceneManagement/SceneManagementExample.cpp +++ b/Examples/SceneManagement/SceneManagementExample.cpp @@ -22,6 +22,7 @@ #include "imstkSimulationManager.h" #include "imstkCollisionGraph.h" #include "imstkCamera.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/Screenshot/ScreenshotExample.cpp b/Examples/Screenshot/ScreenshotExample.cpp index 66bf43ec58277992c4f96fe6a5c0231108623f0a..b34ce731ddc63cf47514588b4766097ef0c6e3cb 100644 --- a/Examples/Screenshot/ScreenshotExample.cpp +++ b/Examples/Screenshot/ScreenshotExample.cpp @@ -27,6 +27,7 @@ #include "imstkCube.h" #include "imstkSphere.h" #include "imstkPlane.h" +#include "imstkScene.h" using namespace imstk; diff --git a/Examples/VirtualCoupling/VirtualCouplingExample.cpp b/Examples/VirtualCoupling/VirtualCouplingExample.cpp index c4a65a2964f6ac6f8e28ba4caf5b2e05f2e4fe82..cce2bcbab236876fa738c15987234067b53a59e6 100644 --- a/Examples/VirtualCoupling/VirtualCouplingExample.cpp +++ b/Examples/VirtualCoupling/VirtualCouplingExample.cpp @@ -24,11 +24,13 @@ #include "imstkHDAPIDeviceServer.h" #include "imstkHDAPIDeviceClient.h" #include "imstkSceneObjectController.h" +#include "imstkDeviceTracker.h" #include "imstkCollisionGraph.h" #include "imstkLight.h" #include "imstkCamera.h" #include "imstkPlane.h" #include "imstkSphere.h" +#include "imstkScene.h" // global variables const std::string phantomOmni1Name = "Phantom1"; diff --git a/Examples/VolumeRendering/VolumeRenderingExample.cpp b/Examples/VolumeRendering/VolumeRenderingExample.cpp index b69fadc073ca3e35ef67cbba8882cbed03939e99..f5d5dff507d36730c65873e7fdc5b5ec83dd89a8 100644 --- a/Examples/VolumeRendering/VolumeRenderingExample.cpp +++ b/Examples/VolumeRendering/VolumeRenderingExample.cpp @@ -21,11 +21,16 @@ // imstk #include "imstkAPIUtilities.h" +#include "imstkCamera.h" #include "imstkMeshIO.h" #include "imstkSimulationManager.h" #include "imstkVolumeRenderMaterial.h" #include "imstkVolumeRenderMaterialPresets.h" #include "imstkVTKTextStatusManager.h" +#include "imstkSceneManager.h" +#include "imstkCollisionGraph.h" +#include "imstkScene.h" +#include "imstkVTKRenderer.h" // STL #include <sstream> diff --git a/Source/Collision/CollisionDetection/imstkCollisionDetection.cpp b/Source/Collision/CollisionDetection/imstkCollisionDetection.cpp index 520284ce2d92feffdfe9991784c60c0d575dace6..ed492025909620e3e8a5b0896dc9c705f333c161 100644 --- a/Source/Collision/CollisionDetection/imstkCollisionDetection.cpp +++ b/Source/Collision/CollisionDetection/imstkCollisionDetection.cpp @@ -90,6 +90,7 @@ CollisionDetection::makeCollisionDetectionObject(const Type IMSTK_CHECK_FOR_VALID_GEOMETRIES(pointset, capsule) return std::make_shared<PointSetToCapsuleCD>(pointset, capsule, colData); } +#if 0 case Type::PointSetToSpherePicking: { auto pointset = std::dynamic_pointer_cast<PointSet>(objA->getCollidingGeometry()); @@ -97,6 +98,7 @@ CollisionDetection::makeCollisionDetectionObject(const Type IMSTK_CHECK_FOR_VALID_GEOMETRIES(pointset, sphere) return std::make_shared<PointSetToSpherePickingCD>(pointset, sphere, colData); } +#endif case Type::PointSetToSurfaceMesh: { const auto& geomA = objA->getCollidingGeometry(); diff --git a/Source/Collision/CollisionDetection/imstkMeshToMeshBruteForceCD.cpp b/Source/Collision/CollisionDetection/imstkMeshToMeshBruteForceCD.cpp index 2503edf23e772170dc5571aac1c86099ddf15168..bf3a503e5af0b4b87f7a4f3de6f49b433c5bc7a4 100644 --- a/Source/Collision/CollisionDetection/imstkMeshToMeshBruteForceCD.cpp +++ b/Source/Collision/CollisionDetection/imstkMeshToMeshBruteForceCD.cpp @@ -27,6 +27,7 @@ #include "imstkPointSet.h" #include "imstkLineMesh.h" #include "imstkGeometry.h" +#include "imstkColor.h" #include "imstkCollisionUtils.h" #include <g3log/g3log.hpp> diff --git a/Source/Collision/CollisionDetection/imstkPointSetToSpherePickingCD.cpp b/Source/Collision/CollisionDetection/imstkPointSetToSpherePickingCD.cpp index 95c5208079c5238b3846197c4f1b8d116f5d1659..b8780443e5cba53044bb01cb4b2cb40d2833a97e 100644 --- a/Source/Collision/CollisionDetection/imstkPointSetToSpherePickingCD.cpp +++ b/Source/Collision/CollisionDetection/imstkPointSetToSpherePickingCD.cpp @@ -18,7 +18,7 @@ See the License for the specific language governing permissions and limitations under the License. =========================================================================*/ - +#if 0 #include "imstkPointSetToSpherePickingCD.h" #include "imstkDeviceTracker.h" #include "imstkNarrowPhaseCD.h" @@ -59,3 +59,4 @@ PointSetToSpherePickingCD::setDeviceTrackerAndButton(const std::shared_ptr<Devic m_deviceTracker = devTracker; } } // imstk +#endif \ No newline at end of file diff --git a/Source/Collision/CollisionDetection/imstkPointSetToSpherePickingCD.h b/Source/Collision/CollisionDetection/imstkPointSetToSpherePickingCD.h index f8528dd15eda21bd4dc3da25e90f23c8c3f0ab06..41e595360d9ff271f669ce5e306b8929d71b43d0 100644 --- a/Source/Collision/CollisionDetection/imstkPointSetToSpherePickingCD.h +++ b/Source/Collision/CollisionDetection/imstkPointSetToSpherePickingCD.h @@ -18,7 +18,7 @@ limitations under the License. =========================================================================*/ - +#if 0 #pragma once #include "imstkCollisionDetection.h" @@ -61,7 +61,8 @@ private: std::shared_ptr<PointSet> m_pointSet; std::shared_ptr<Sphere> m_sphere; - std::shared_ptr<imstk::DeviceTracker> m_deviceTracker; ///> Device tracker to get the button status + std::shared_ptr<DeviceTracker> m_deviceTracker; ///> Device tracker to get the button status unsigned int m_buttonId = 0; ///> button id }; } +#endif \ No newline at end of file diff --git a/Source/Collision/CollisionHandling/imstkBoneDrillingCH.cpp b/Source/Collision/CollisionHandling/imstkBoneDrillingCH.cpp index d7fabcf036c221eef7759dfeb6530ac7da565d05..23578cc8e044cba3503441cedd47f2ea1b279762 100644 --- a/Source/Collision/CollisionHandling/imstkBoneDrillingCH.cpp +++ b/Source/Collision/CollisionHandling/imstkBoneDrillingCH.cpp @@ -20,7 +20,6 @@ =========================================================================*/ #include "imstkBoneDrillingCH.h" - #include "imstkCollidingObject.h" #include "imstkTetrahedralMesh.h" #include "imstkCollisionData.h" diff --git a/Source/Collision/CollisionHandling/imstkSPHCollisionHandling.h b/Source/Collision/CollisionHandling/imstkSPHCollisionHandling.h index ad9179770057b32baabce0761a0be9a26a914beb..27a819f09668e4609b1c97dc48768c64b3060f0d 100644 --- a/Source/Collision/CollisionHandling/imstkSPHCollisionHandling.h +++ b/Source/Collision/CollisionHandling/imstkSPHCollisionHandling.h @@ -30,7 +30,8 @@ class SPHObject; class SPHCollisionHandling : public CollisionHandling { public: - SPHCollisionHandling(const Side& side, const std::shared_ptr<CollisionData>& colData, + SPHCollisionHandling(const Side& side, + const std::shared_ptr<CollisionData>& colData, const std::shared_ptr<CollidingObject>& obj); SPHCollisionHandling() = delete; diff --git a/Source/Collision/imstkPbdInteractionPair.cpp b/Source/Collision/imstkPbdInteractionPair.cpp index cf2973dfcd89aa60d3dc38a921f9d6cb6cf5c4ea..e82b0fbd1c3b8ef5ea9f4ba14babff0e2da88349 100644 --- a/Source/Collision/imstkPbdInteractionPair.cpp +++ b/Source/Collision/imstkPbdInteractionPair.cpp @@ -26,6 +26,7 @@ #include "imstkCollisionUtils.h" #include "imstkPbdModel.h" #include "imstkPbdObject.h" +#include "imstkColor.h" #include "imstkPbdEdgeEdgeCollisionConstraint.h" #include "imstkPbdPointTriCollisionConstraint.h" diff --git a/Source/Common/Parallel/imstkParallelUtils.h b/Source/Common/Parallel/imstkParallelUtils.h index e7ba7fcaf02a338917323797ce3fdeda2f0679ce..61ebf911d2c5c4e1a3fa00820af3d8729fde407e 100644 --- a/Source/Common/Parallel/imstkParallelUtils.h +++ b/Source/Common/Parallel/imstkParallelUtils.h @@ -25,4 +25,4 @@ #include "imstkParallelFor.h" #include "imstkParallelReduce.h" #include "imstkSpinLock.h" -#include "imstkAtomicOperations.h" +#include "imstkAtomicOperations.h" \ No newline at end of file diff --git a/Source/Common/Parallel/imstkThreadManager.cpp b/Source/Common/Parallel/imstkThreadManager.cpp index 8687e460bbc0b7bc475519ba50f78340c6a0bdee..f242cc27b1a89efe0847044eec9d3a015a894dc9 100644 --- a/Source/Common/Parallel/imstkThreadManager.cpp +++ b/Source/Common/Parallel/imstkThreadManager.cpp @@ -20,6 +20,7 @@ =========================================================================*/ #include "imstkThreadManager.h" + #include <g3log/g3log.hpp> namespace imstk diff --git a/Source/Common/Utils/imstkTimer.h b/Source/Common/Utils/imstkTimer.h index 563d0ba0625448fcedcfc3bdcdee1f3d442c1b7c..4621c0cf55c9a2b982b11753e45c31588f5e4887 100644 --- a/Source/Common/Utils/imstkTimer.h +++ b/Source/Common/Utils/imstkTimer.h @@ -55,7 +55,7 @@ public: /// /// \brief Constructor /// - StopWatch() {}; + StopWatch() : state(TimerState::stopped) {}; /// /// \brief Destructor @@ -108,7 +108,7 @@ public: /// void printTimeElapsed(std::string const& name = std::string("noName"), const TimeUnitType unitType = TimeUnitType::milliSeconds); private: - TimerState state = TimerState::stopped; + TimerState state; std::vector<double> lapTimes; std::vector<std::string> lapNames; std::chrono::high_resolution_clock::time_point wallClockTimeKeeper; ///> time keeper for wall clock time @@ -125,7 +125,7 @@ public: /// /// \brief Constructor /// - CpuTimer() : StopWatch() {}; + CpuTimer() : StopWatch(), cpuTimeKeeper(std::clock_t()) {}; /// /// \brief Destructor @@ -145,7 +145,7 @@ public: double getTimeElapsed(const TimeUnitType unitType = TimeUnitType::milliSeconds) override; private: - std::clock_t cpuTimeKeeper = std::clock_t(); ///> time keeper for cpu time + std::clock_t cpuTimeKeeper; ///> time keeper for cpu time }; /// @@ -159,7 +159,11 @@ public: /// /// \brief Constructor/Destructor /// - UPSCounter() = default; + UPSCounter() : m_timer(std::make_shared<StopWatch>()), + m_accumulatedTimer(0.), + m_ups(0), + m_updateCount(0) {}; + ~UPSCounter() = default; /// @@ -184,10 +188,10 @@ public: protected: - std::shared_ptr<StopWatch> m_timer = std::make_shared<StopWatch>(); ///> Timer + std::shared_ptr<StopWatch> m_timer; ///> Timer - double m_accumulatedTimer = 0.; ///> Accumulated time (always < 1 sec) - unsigned int m_ups = 0; ///> Most up-to-date ups - unsigned int m_updateCount = 0; ///> Current update count + double m_accumulatedTimer; ///> Accumulated time (always < 1 sec) + unsigned int m_ups; ///> Most up-to-date ups + unsigned int m_updateCount; ///> Current update count }; } diff --git a/Source/Common/imstkModule.cpp b/Source/Common/imstkModule.cpp index 33068e8bdb65f2b1f180659e74b95457bb3b574a..fc5fe70333c4d3e981777539f1d2834351f40fdc 100644 --- a/Source/Common/imstkModule.cpp +++ b/Source/Common/imstkModule.cpp @@ -21,9 +21,18 @@ #include "imstkModule.h" #include "imstkMath.h" +#include "imstkTimer.h" namespace imstk { +Module::Module(const std::string& name, int loopDelay /*= 0*/) : + m_name(name), + m_frameCounter(std::make_shared<UPSCounter>()), + m_trackFPS(false), + m_loopDelay(loopDelay) +{ +} + void Module::start() { diff --git a/Source/Common/imstkModule.h b/Source/Common/imstkModule.h index 2ab9d3bd1b4590db75b1ed4face2f35089bda3f4..c8b8e2a2659954cfd528d495bba6d1895166e8d8 100644 --- a/Source/Common/imstkModule.h +++ b/Source/Common/imstkModule.h @@ -24,11 +24,11 @@ #include <iostream> #include <atomic> #include <functional> -#include "imstkLogger.h" -#include "imstkTimer.h" namespace imstk { +class UPSCounter; + /// /// \brief Enumerations for the status of the module /// @@ -55,9 +55,7 @@ public: /// /// \brief Constructor /// - Module(const std::string& name, int loopDelay = 0) : - m_name(name), - m_loopDelay(loopDelay) {} + Module(const std::string& name, int loopDelay = 0); /// /// \brief Destructor @@ -144,19 +142,18 @@ protected: /// virtual void cleanUpModule() = 0; - CallbackFunction m_preInitCallback; ///> function callback preceding module initialization - CallbackFunction m_postInitCallback; ///> function callback following module initialization - CallbackFunction m_preUpdateCallback; ///> function callback preceding module update - CallbackFunction m_postUpdateCallback; ///> function callback following module update - CallbackFunction m_preCleanUpCallback; ///> function callback preceding module cleanup - CallbackFunction m_postCleanUpCallback; ///> function callback following module cleanup - - std::atomic<ModuleStatus> m_status { ModuleStatus::Inactive }; ///> Module status + CallbackFunction m_preInitCallback; ///> function callback preceding module initialization + CallbackFunction m_postInitCallback; ///> function callback following module initialization + CallbackFunction m_preUpdateCallback; ///> function callback preceding module update + CallbackFunction m_postUpdateCallback; ///> function callback following module update + CallbackFunction m_preCleanUpCallback; ///> function callback preceding module cleanup + CallbackFunction m_postCleanUpCallback; ///> function callback following module cleanup - bool m_trackFPS = false; - std::shared_ptr<UPSCounter> m_frameCounter = std::make_shared<UPSCounter>(); + std::atomic<ModuleStatus> m_status { ModuleStatus::Inactive }; ///> Module status + std::shared_ptr<UPSCounter> m_frameCounter; - std::string m_name; ///> Name of the module - double m_loopDelay = 0; ///> Loop delay + std::string m_name; ///> Name of the module + double m_loopDelay; ///> Loop delay + bool m_trackFPS; ///> Flag to enable/diable FPS tracking }; } diff --git a/Source/Constraint/imstkLinearProjectionConstraint.cpp b/Source/Constraint/imstkLinearProjectionConstraint.cpp index 1d93f3ba367a44e14548517986b0b3fab45456e9..65a9cbf2e7ae634851cf8901959de106f9e1ce0c 100644 --- a/Source/Constraint/imstkLinearProjectionConstraint.cpp +++ b/Source/Constraint/imstkLinearProjectionConstraint.cpp @@ -24,7 +24,11 @@ namespace imstk { LinearProjectionConstraint:: -LinearProjectionConstraint(const size_t& nodeId, const bool isFixed /*= false*/) +LinearProjectionConstraint(const size_t& nodeId, + const bool isFixed /*= false*/) : + m_isFixedConstraint(false), + m_projection(Mat3d::Identity()), + m_value(Vec3d(0., 0., 0.)) { m_nodeId = nodeId; if (isFixed) diff --git a/Source/Constraint/imstkLinearProjectionConstraint.h b/Source/Constraint/imstkLinearProjectionConstraint.h index 855266af3a514f2595490263489af33e5d5cf675..057dbe9ea38a30e3520f149f41fc863408240ba4 100644 --- a/Source/Constraint/imstkLinearProjectionConstraint.h +++ b/Source/Constraint/imstkLinearProjectionConstraint.h @@ -91,9 +91,9 @@ public: inline bool isFixed() const { return m_isFixedConstraint; } private: - size_t m_nodeId; ///> Node id - bool m_isFixedConstraint = false; ///> Flag to know if that node is fixed - Mat3d m_projection = Mat3d::Identity(); ///> Orthogonal projector - Vec3d m_value = Vec3d(0., 0., 0.); ///> Value in the subspace: range(I-m_projector) + size_t m_nodeId; ///> Node id + bool m_isFixedConstraint; ///> Flag to know if that node is fixed + Mat3d m_projection; ///> Orthogonal projector + Vec3d m_value; ///> Value in the subspace: range(I-m_projector) }; } // imstk diff --git a/Source/Controllers/imstkCameraController.cpp b/Source/Controllers/imstkCameraController.cpp index d5fa2675c355a62c32a818659f6a0036564ad37d..5f2eabe19e2ea692e17e1370bcf8be53917c493b 100644 --- a/Source/Controllers/imstkCameraController.cpp +++ b/Source/Controllers/imstkCameraController.cpp @@ -20,14 +20,24 @@ =========================================================================*/ #include "imstkCameraController.h" +#include "imstkMath.h" #include "imstkCamera.h" +#include "imstkLogger.h" #include <utility> -#include <g3log/g3log.hpp> - namespace imstk { +CameraController::CameraController(std::shared_ptr<Camera> camera, + std::shared_ptr<DeviceClient> deviceClient) : + Module("Camera controller"), + m_camera(camera), + m_cameraTranslationOffset(WORLD_ORIGIN), + m_cameraRotationalOffset(Quatd::Identity()), + DeviceTracker(deviceClient) +{ +} + void CameraController::runModule() { diff --git a/Source/Controllers/imstkCameraController.h b/Source/Controllers/imstkCameraController.h index a9720c7879935492b28a62eac72b25f7f057cc4e..0cb899f40f8e78c87d5601c54e1557115b57d447 100644 --- a/Source/Controllers/imstkCameraController.h +++ b/Source/Controllers/imstkCameraController.h @@ -39,11 +39,7 @@ public: /// /// \brief /// - CameraController(std::shared_ptr<Camera> camera, - std::shared_ptr<DeviceClient> deviceClient) : - Module("Camera controller"), - m_camera(camera), - DeviceTracker(deviceClient) {} + CameraController(std::shared_ptr<Camera> camera, std::shared_ptr<DeviceClient> deviceClient); /// /// \brief @@ -83,9 +79,9 @@ protected: /// void cleanUpModule() override {}; - std::shared_ptr<Camera> m_camera; ///< Camera controlled by the external device + std::shared_ptr<Camera> m_camera; ///< Camera controlled by the external device - Vec3d m_cameraTranslationOffset = WORLD_ORIGIN; ///< Translation offset for the camera over tracking data - Quatd m_cameraRotationalOffset = Quatd::Identity(); ///< camera head angle offset (in deg) + Vec3d m_cameraTranslationOffset; ///< Translation offset for the camera over tracking data + Quatd m_cameraRotationalOffset; ///< camera head angle offset (in deg) }; } // imstk diff --git a/Source/Controllers/imstkDeviceTracker.cpp b/Source/Controllers/imstkDeviceTracker.cpp index d79d790b3815e78718eea3c6ff222253c1733bc8..7ed271c3423f2a69460d42d0caea063041907a54 100644 --- a/Source/Controllers/imstkDeviceTracker.cpp +++ b/Source/Controllers/imstkDeviceTracker.cpp @@ -19,14 +19,22 @@ =========================================================================*/ +#include "imstkMath.h" #include "imstkDeviceTracker.h" +#include "imstkDeviceClient.h" +#include "imstkLogger.h" #include <utility> -#include <g3log/g3log.hpp> - namespace imstk { +DeviceTracker::DeviceTracker(std::shared_ptr<DeviceClient> deviceClient) : + m_deviceClient(deviceClient), + m_translationOffset(WORLD_ORIGIN), + m_rotationOffset(Quatd::Identity()) +{ +} + bool DeviceTracker::updateTrackingData() { diff --git a/Source/Controllers/imstkDeviceTracker.h b/Source/Controllers/imstkDeviceTracker.h index 86c80fbcd66dd3af699ade1c11ff01a82d5ba039..aca78be53703651f05a2da9e0385872649dbd32d 100644 --- a/Source/Controllers/imstkDeviceTracker.h +++ b/Source/Controllers/imstkDeviceTracker.h @@ -21,14 +21,12 @@ #pragma once -#include <memory> - -// imstk #include "imstkMath.h" -#include "imstkDeviceClient.h" namespace imstk { +class DeviceClient; + /// /// \class DeviceTracker /// @@ -51,8 +49,7 @@ public: /// /// \brief Constructor /// - explicit DeviceTracker(std::shared_ptr<DeviceClient> deviceClient) : - m_deviceClient(deviceClient) {} + explicit DeviceTracker(std::shared_ptr<DeviceClient> deviceClient); /// /// \brief Destructor @@ -119,8 +116,8 @@ protected: std::shared_ptr<DeviceClient> m_deviceClient; ///< Reports device tracking information double m_scaling = 1.0; ///< Scaling factor for physical to virtual translations - Vec3d m_translationOffset = WORLD_ORIGIN; ///< Translation concatenated to the device translation - Quatd m_rotationOffset = Quatd::Identity(); ///< Rotation concatenated to the device rotation + Vec3d m_translationOffset; ///< Translation concatenated to the device translation + Quatd m_rotationOffset; ///< Rotation concatenated to the device rotation unsigned char m_invertFlags = 0x00; ///< Invert flags to be masked with DeviceTracker::InvertFlag Vec3d m_currentPos; diff --git a/Source/Controllers/imstkLaparoscopicToolController.cpp b/Source/Controllers/imstkLaparoscopicToolController.cpp index 04a4ce20143321644ff228c706bb3926c3ded033..f478a84817e5179a290b690b73fbb4afdadd82c1 100644 --- a/Source/Controllers/imstkLaparoscopicToolController.cpp +++ b/Source/Controllers/imstkLaparoscopicToolController.cpp @@ -21,14 +21,31 @@ #include "imstkLaparoscopicToolController.h" #include "imstkCollidingObject.h" +#include "imstkDeviceClient.h" #include "imstkGeometry.h" #include "imstkSceneObject.h" #include "imstkLogger.h" +#include "imstkMath.h" #include <utility> namespace imstk { +LaparoscopicToolController::LaparoscopicToolController( + std::shared_ptr<SceneObject> shaft, + std::shared_ptr<SceneObject> upperJaw, + std::shared_ptr<SceneObject> lowerJaw, + std::shared_ptr<DeviceTracker> trackingController) : + SceneObjectControllerBase(), + m_trackingController(trackingController), + m_shaft(shaft), + m_upperJaw(upperJaw), + m_lowerJaw(lowerJaw), + m_jawRotationAxis(Vec3d(0, 1., 0)) +{ + m_trackingController->getDeviceClient()->setButtonsEnabled(true); +} + void LaparoscopicToolController::updateControlledObjects() { diff --git a/Source/Controllers/imstkLaparoscopicToolController.h b/Source/Controllers/imstkLaparoscopicToolController.h index a67c92a17afeb2e983f476c470762d2c80f0e696..064c4b8e515ff0248501754e275408b9232aaa5a 100644 --- a/Source/Controllers/imstkLaparoscopicToolController.h +++ b/Source/Controllers/imstkLaparoscopicToolController.h @@ -23,7 +23,6 @@ #include "imstkSceneObjectControllerBase.h" #include "imstkDeviceTracker.h" -#include "imstkMath.h" namespace imstk { @@ -47,14 +46,7 @@ public: std::shared_ptr<SceneObject> shaft, std::shared_ptr<SceneObject> upperJaw, std::shared_ptr<SceneObject> lowerJaw, - std::shared_ptr<DeviceTracker> trackingController) : - m_trackingController(trackingController), - m_shaft(shaft), - m_upperJaw(upperJaw), - m_lowerJaw(lowerJaw) - { - m_trackingController->getDeviceClient()->setButtonsEnabled(true); - } + std::shared_ptr<DeviceTracker> trackingController); LaparoscopicToolController() = delete; //not allowed for now @@ -121,6 +113,6 @@ protected: double m_change = 6.0e-5; ///< Amount of change in jaw angle per frame double m_maxJawAngle = PI / 6.0; ///< Maximum angle of the jaws - Vec3d m_jawRotationAxis = Vec3d(0, 1., 0); ///< Angle of the jaws + Vec3d m_jawRotationAxis; ///< Angle of the jaws }; } // imstk diff --git a/Source/Controllers/imstkSceneObjectController.cpp b/Source/Controllers/imstkSceneObjectController.cpp index fc8df01a6fca366ee2a6249f2e16c1a7b8029e76..7056dcb7f7f92d77da5286d338714f0715a88895 100644 --- a/Source/Controllers/imstkSceneObjectController.cpp +++ b/Source/Controllers/imstkSceneObjectController.cpp @@ -20,7 +20,9 @@ =========================================================================*/ #include "imstkSceneObjectController.h" +#include "imstkDeviceTracker.h" #include "imstkSceneObject.h" +#include "imstkDeviceClient.h" #include "imstkCollidingObject.h" #include "imstkGeometry.h" @@ -30,6 +32,11 @@ namespace imstk { +SceneObjectController::SceneObjectController(std::shared_ptr<SceneObject> sceneObject, std::shared_ptr<DeviceTracker> trackingController) : + m_trackingController(trackingController), m_sceneObject(sceneObject) +{ +} + void SceneObjectController::updateControlledObjects() { @@ -60,4 +67,10 @@ SceneObjectController::applyForces() m_trackingController->getDeviceClient()->setForce(collidingObject->getForce()); } } + +void +SceneObjectController::setTrackerToOutOfDate() +{ + m_trackingController->setTrackerToOutOfDate(); +} } // imstk diff --git a/Source/Controllers/imstkSceneObjectController.h b/Source/Controllers/imstkSceneObjectController.h index ad37ca3d4c82eefd4ffbd144f2fb1175690c3bfb..9a35ead4c5a8c8b873c513abc7c3ebd3e03b16d2 100644 --- a/Source/Controllers/imstkSceneObjectController.h +++ b/Source/Controllers/imstkSceneObjectController.h @@ -22,7 +22,6 @@ #pragma once #include "imstkSceneObjectControllerBase.h" -#include "imstkDeviceTracker.h" #include <memory> #include <functional> @@ -30,6 +29,7 @@ namespace imstk { class SceneObject; +class DeviceTracker; /// /// \class SceneObjectController @@ -39,12 +39,12 @@ class SceneObject; class SceneObjectController : public SceneObjectControllerBase { using ControllerCallbackFunction = std::function<void (SceneObjectController* hdapiClient)>; + public: /// /// \brief Constructor /// - SceneObjectController(std::shared_ptr<SceneObject> sceneObject, std::shared_ptr<DeviceTracker> trackingController) : - m_trackingController(trackingController), m_sceneObject(sceneObject) {} + SceneObjectController(std::shared_ptr<SceneObject> sceneObject, std::shared_ptr<DeviceTracker> trackingController); SceneObjectController() = delete; @@ -66,7 +66,7 @@ public: /// /// \brief Sets the tracker to out-of-date /// - inline void setTrackerToOutOfDate() override { m_trackingController->setTrackerToOutOfDate(); } + void setTrackerToOutOfDate() override; /// /// \brief Get/Set controlled scene object diff --git a/Source/DataStructures/imstkNeighborSearch.h b/Source/DataStructures/imstkNeighborSearch.h index 2c687de19eb2fb121818619155bca0caa9b284c6..5cc349a1c46945e85b4b7821e6f6993522e758ab 100644 --- a/Source/DataStructures/imstkNeighborSearch.h +++ b/Source/DataStructures/imstkNeighborSearch.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkMath.h" namespace imstk diff --git a/Source/DataStructures/imstkSpatialHashTable.h b/Source/DataStructures/imstkSpatialHashTable.h index 3d4c3ba5b036e8eb497c3a70329e598c0ce735ff..a49c62d7323ec2de628947c71aa5b4abca02fbd3 100644 --- a/Source/DataStructures/imstkSpatialHashTable.h +++ b/Source/DataStructures/imstkSpatialHashTable.h @@ -21,8 +21,6 @@ #pragma once -#include "imstkMath.h" - namespace imstk { /// diff --git a/Source/DataStructures/imstkSpatialHashTableSeparateChaining.h b/Source/DataStructures/imstkSpatialHashTableSeparateChaining.h index 9d1b4a8a94d270176cea3837c5962cb445c27612..83292740955320e81563c0bb1652238db2d2132b 100644 --- a/Source/DataStructures/imstkSpatialHashTableSeparateChaining.h +++ b/Source/DataStructures/imstkSpatialHashTableSeparateChaining.h @@ -21,7 +21,6 @@ #pragma once -#include <memory> #include <unordered_set> #include "imstkMath.h" diff --git a/Source/DataStructures/imstkUniformSpatialGrid.h b/Source/DataStructures/imstkUniformSpatialGrid.h index f14f1f90a42a7e4576c437d0900f89a22748737b..449ac7b76212a87e75026890b06bf19c1600476c 100644 --- a/Source/DataStructures/imstkUniformSpatialGrid.h +++ b/Source/DataStructures/imstkUniformSpatialGrid.h @@ -22,7 +22,6 @@ #pragma once #include <array> -#include <vector> #include "imstkMath.h" #include "imstkLogger.h" @@ -63,7 +62,7 @@ public: /// void initialize(const Vec3r& lowerCorner, const Vec3r& upperCorner, const Real cellSize) { - LOG_IF(FATAL, (cellSize <= 0)) << "Invalid cell size"; + CHECK(cellSize > 0) << "Invalid cell size"; m_LowerCorner = lowerCorner; m_UpperCorner = upperCorner; @@ -78,7 +77,7 @@ public: m_NTotalCells *= m_Resolution[i]; } - LOG_IF(FATAL, (m_NTotalCells == 0)) << "Invalid grid size: [" + + CHECK(m_NTotalCells != 0) << "Invalid grid size: [" + std::to_string(m_LowerCorner[0]) + ", " + std::to_string(m_LowerCorner[1]) + ", " + std::to_string(m_LowerCorner[2]) + "] => " + std::to_string(m_UpperCorner[0]) + ", " + std::to_string(m_UpperCorner[1]) + ", " + std::to_string(m_UpperCorner[2]) + "], " + "cellSize = " + std::to_string(m_CellSize); diff --git a/Source/Devices/imstkDeviceClient.cpp b/Source/Devices/imstkDeviceClient.cpp index 9ef45ad2b020adb70191fe1e00bc0cba004e434e..6f7f5db5c0dc0202420355f9ce1d4000fb934302 100644 --- a/Source/Devices/imstkDeviceClient.cpp +++ b/Source/Devices/imstkDeviceClient.cpp @@ -25,6 +25,16 @@ namespace imstk { +DeviceClient::DeviceClient(const std::string& name, const std::string& ip) : + m_deviceName(name), + m_position(Vec3d::Zero()), + m_velocity(Vec3d::Zero()), + m_force(Vec3d::Zero()), + m_orientation(Quatd::Identity()), + m_ip(ip) +{ +} + const std::string& DeviceClient::getIp() { diff --git a/Source/Devices/imstkDeviceClient.h b/Source/Devices/imstkDeviceClient.h index 62637acb651d979700b642e02e5c371e696c4644..2f9bc39e7b554a322f391ced0f0e7a88c62a8991 100644 --- a/Source/Devices/imstkDeviceClient.h +++ b/Source/Devices/imstkDeviceClient.h @@ -21,8 +21,6 @@ #pragma once -#include <map> - #include "imstkMath.h" namespace imstk @@ -100,9 +98,7 @@ protected: /// /// \brief Constructor /// - DeviceClient(const std::string& name, const std::string& ip) : - m_deviceName(name), - m_ip(ip) {} + DeviceClient(const std::string& name, const std::string& ip); std::string m_deviceName; ///< Device Name std::string m_ip; ///< Connection device IP @@ -112,10 +108,10 @@ protected: bool m_buttonsEnabled = true; ///< Buttons enabled if true bool m_forceEnabled = false; ///< Force enabled if true - Vec3d m_position = Vec3d::Zero(); ///< Position of end effector - Vec3d m_velocity = Vec3d::Zero(); ///< Linear velocity of end effector - Quatd m_orientation = Quatd::Identity(); ///< Orientation of the end effector + Vec3d m_position; ///< Position of end effector + Vec3d m_velocity; ///< Linear velocity of end effector + Quatd m_orientation; ///< Orientation of the end effector std::map<size_t, bool> m_buttons; ///< Buttons: true = pressed/false = not pressed - Vec3d m_force = Vec3d::Zero(); ///< Force vector + Vec3d m_force; ///< Force vector }; } diff --git a/Source/Devices/imstkHDAPIDeviceClient.h b/Source/Devices/imstkHDAPIDeviceClient.h index bd16f0da0dc68bda8be1cfa265ba1a242bcee6a5..c4d2ab3ae5a8dd8739356cccb864eb8fc33ffe56 100644 --- a/Source/Devices/imstkHDAPIDeviceClient.h +++ b/Source/Devices/imstkHDAPIDeviceClient.h @@ -24,14 +24,10 @@ #ifndef imstkHDAPIDeviceClient_h #define imstkHDAPIDeviceClient_h -#include <map> - #include "imstkDeviceClient.h" #include <HD/hd.h> -#include <memory> - namespace imstk { struct HD_state diff --git a/Source/Devices/imstkHDAPIDeviceServer.cpp b/Source/Devices/imstkHDAPIDeviceServer.cpp index 0462c51c012c5fa474d100c1c32958442cfca58e..380a3a2a3ffcc7ab42b649d672d84d9eff3e4390 100644 --- a/Source/Devices/imstkHDAPIDeviceServer.cpp +++ b/Source/Devices/imstkHDAPIDeviceServer.cpp @@ -22,6 +22,7 @@ #ifdef iMSTK_USE_OPENHAPTICS #include "imstkHDAPIDeviceServer.h" +#include "imstkHDAPIDeviceClient.h" #include <HD/hd.h> diff --git a/Source/Devices/imstkHDAPIDeviceServer.h b/Source/Devices/imstkHDAPIDeviceServer.h index a94e955329467544b94a89a99296b74602defb0d..9d25aeece66471cb127818292ef24116952ee542 100644 --- a/Source/Devices/imstkHDAPIDeviceServer.h +++ b/Source/Devices/imstkHDAPIDeviceServer.h @@ -25,15 +25,13 @@ #define imstkHDAPIDeviceServer_h #include <vector> -#include <map> -#include <typeinfo> // imstk #include "imstkModule.h" -#include "imstkHDAPIDeviceClient.h" namespace imstk { +class HDAPIDeviceClient; /// /// \class HDAPIDeviceServer /// \brief Devices server using HDAPI diff --git a/Source/Devices/imstkVRPNArduinoDeviceClient.h b/Source/Devices/imstkVRPNArduinoDeviceClient.h index 3d0b4abbf4d97b1f55a3031ca3d5f96b28f60a37..c47b61c752b094a32407b1773c3a3f416ebf7f81 100644 --- a/Source/Devices/imstkVRPNArduinoDeviceClient.h +++ b/Source/Devices/imstkVRPNArduinoDeviceClient.h @@ -21,13 +21,9 @@ #pragma once -#include <map> - #include "imstkDeviceClient.h" #include "imstkModule.h" -#include <memory> - #include <vrpn_Configure.h> #include <vrpn_Analog.h> @@ -46,8 +42,10 @@ public: /// VRPNArduinoDeviceClient(const std::string& deviceName, const std::string& ip) : DeviceClient(deviceName, ip), - Module(deviceName + "@" + ip) - {} + Module(deviceName + "@" + ip), + m_ypr(Vec3d::Zero()), + m_accel(Vec3d::Zero()), + m_roll(0) {} /// /// \brief Destructor @@ -88,8 +86,8 @@ private: static void VRPN_CALLBACK analogChangeHandler(void* userData, const _vrpn_ANALOGCB a); std::shared_ptr<vrpn_Analog_Remote> m_vrpnAnalog; //!< VRPN position/orientation interface - Vec3d m_ypr = Vec3d::Zero(); - Vec3d m_accel = Vec3d::Zero(); - float m_roll = 0; + Vec3d m_ypr; + Vec3d m_accel; + float m_roll; }; } diff --git a/Source/Devices/imstkVRPNDeviceClient.h b/Source/Devices/imstkVRPNDeviceClient.h index 07f80bbf5725c6a97f776f1b1bbf526624e44310..ef641fecab24939268b4dbebe387a26259c768b1 100644 --- a/Source/Devices/imstkVRPNDeviceClient.h +++ b/Source/Devices/imstkVRPNDeviceClient.h @@ -21,13 +21,10 @@ #pragma once -#include <map> - #include "imstkDeviceClient.h" #include "imstkModule.h" -#include <memory> - +// vrpn includes #include <vrpn_Configure.h> #include <vrpn_Tracker.h> #include <vrpn_Analog.h> diff --git a/Source/Devices/imstkVRPNDeviceServer.h b/Source/Devices/imstkVRPNDeviceServer.h index e360d7086d3b574d89927e06e9d9c31e781a6c0d..430f6846f9e44db7e208af2a5fe70010ddd59ccd 100644 --- a/Source/Devices/imstkVRPNDeviceServer.h +++ b/Source/Devices/imstkVRPNDeviceServer.h @@ -23,7 +23,6 @@ #include <vector> #include <map> -#include <typeinfo> #include <string> // vrpn diff --git a/Source/DynamicalModels/CMakeLists.txt b/Source/DynamicalModels/CMakeLists.txt index e3168887a7f4aedf2ce81c3968dde33d2d87e0d1..adb258a712ff1998c80ac6c6b1e4e57a88e290b4 100644 --- a/Source/DynamicalModels/CMakeLists.txt +++ b/Source/DynamicalModels/CMakeLists.txt @@ -25,7 +25,7 @@ imstk_add_library( DynamicalModels VegaFEM::volumetricMesh PhysX ) - + #----------------------------------------------------------------------------- # Testing #----------------------------------------------------------------------------- diff --git a/Source/DynamicalModels/InternalForceModel/imstkInternalForceModel.h b/Source/DynamicalModels/InternalForceModel/imstkInternalForceModel.h index 9b9f5d8910323782118dc6d1f9d6844d51f6f304..c8b5e17c771d8514cb8ec3a9e6881e6dafe5f122 100644 --- a/Source/DynamicalModels/InternalForceModel/imstkInternalForceModel.h +++ b/Source/DynamicalModels/InternalForceModel/imstkInternalForceModel.h @@ -21,8 +21,6 @@ #pragma once -#include "imstkLogger.h" - #include "imstkMath.h" #include "imstkInternalForceModelTypes.h" diff --git a/Source/DynamicalModels/InternalForceModel/imstkLinearFEMForceModel.h b/Source/DynamicalModels/InternalForceModel/imstkLinearFEMForceModel.h index aa6702f0d65a810e9c99c62b6a62e5f72a33a133..7282614a67f0c09ea4672acd4e7b19694f04df46 100644 --- a/Source/DynamicalModels/InternalForceModel/imstkLinearFEMForceModel.h +++ b/Source/DynamicalModels/InternalForceModel/imstkLinearFEMForceModel.h @@ -21,12 +21,9 @@ #pragma once -#include <memory> - -#include "imstkLogger.h" - //imstk #include "imstkInternalForceModel.h" +#include "imstkLogger.h" //vega #include "StVKInternalForces.h" diff --git a/Source/DynamicalModels/InternalForceModel/imstkStVKForceModel.h b/Source/DynamicalModels/InternalForceModel/imstkStVKForceModel.h index eea7a604c14a84db9ade641812cbaa25d5dfb371..7e06e4742866a938a2a06ed54bb4c0b844f35398 100644 --- a/Source/DynamicalModels/InternalForceModel/imstkStVKForceModel.h +++ b/Source/DynamicalModels/InternalForceModel/imstkStVKForceModel.h @@ -21,21 +21,18 @@ #pragma once -#include <memory> -#include "imstkLogger.h" - //imstk #include "imstkInternalForceModel.h" +#include "imstkLogger.h" +//vega #pragma warning( push ) #pragma warning( disable : 4458 ) -//vega #include "StVKInternalForces.h" #pragma warning( pop ) #include "StVKStiffnessMatrix.h" #include "StVKElementABCDLoader.h" - #include "tetMesh.h" namespace imstk diff --git a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdAreaConstraint.h b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdAreaConstraint.h index 88eb5a15daaa61c12932ca36f9815916597694aa..03cd7b923b4a2e62eb4803fc820ed2132790f87e 100644 --- a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdAreaConstraint.h +++ b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdAreaConstraint.h @@ -46,9 +46,11 @@ public: /// /// \brief Initializes the area constraint /// - void initConstraint(PbdModel& model, const size_t& pIdx1, - const size_t& pIdx2, const size_t& pIdx3, - const double k = 2.5); + void initConstraint(PbdModel& model, + const size_t& pIdx1, + const size_t& pIdx2, + const size_t& pIdx3, + const double k = 2.5); /// /// \brief Solves the area constraint diff --git a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdConstraint.h b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdConstraint.h index 667fb3d68f226e0b87f8d0464208c81af446e221..d2ab09f2eb8131d6d6c04ea2bd0af5995d063277 100644 --- a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdConstraint.h +++ b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdConstraint.h @@ -21,7 +21,7 @@ #pragma once -#include "imstkMath.h" +#include <vector> namespace imstk { diff --git a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFEMConstraint.cpp b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFEMConstraint.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f9acfad1d5e7291c29bba6812e08ec843c25ec59 --- /dev/null +++ b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFEMConstraint.cpp @@ -0,0 +1,35 @@ +/*========================================================================= + + Library: iMSTK + + Copyright (c) Kitware, Inc. & Center for Modeling, Simulation, + & Imaging in Medicine, Rensselaer Polytechnic Institute. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0.txt + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +=========================================================================*/ + +#include "imstkPbdFEMConstraint.h" + +namespace imstk +{ +PbdFEMConstraint::PbdFEMConstraint(const unsigned int cardinality, + MaterialType mtype /*= MaterialType::StVK*/) : + PbdConstraint(), + m_elementVolume(0), + m_material(mtype), + m_invRestMat(Mat3d::Identity()) +{ + m_vertexIds.resize(cardinality); +} +} // imstk \ No newline at end of file diff --git a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFEMConstraint.h b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFEMConstraint.h index d6cd035f1ca547fb6aeb037d82bce7d14aaa6238..404cbc9f8fbcd7ca9a81e53386b2608d65e7b29d 100644 --- a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFEMConstraint.h +++ b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFEMConstraint.h @@ -22,6 +22,7 @@ #pragma once #include "imstkPbdConstraint.h" +#include "imstkMath.h" namespace imstk { @@ -48,14 +49,10 @@ public: /// /// \brief Constructor /// - explicit PbdFEMConstraint(const unsigned int cardinality, MaterialType mtype = MaterialType::StVK) : - PbdConstraint(), m_material(mtype), m_invRestMat(Mat3d::Identity()) - { - m_vertexIds.resize(cardinality); - } + explicit PbdFEMConstraint(const unsigned int cardinality, MaterialType mtype = MaterialType::StVK); public: - double m_elementVolume = 0.; ///> Volume of the element + double m_elementVolume; ///> Volume of the element MaterialType m_material; ///> Material type Mat3d m_invRestMat; ///> }; diff --git a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFETetConstraint.cpp b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFETetConstraint.cpp index 354c10c992fd6d171d8e535db693457beb5bcebd..6d1b0e87c8af19e6af062591a44e30cc7409bc14 100644 --- a/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFETetConstraint.cpp +++ b/Source/DynamicalModels/ObjectModels/PbdConstraints/imstkPbdFETetConstraint.cpp @@ -22,6 +22,7 @@ #include "imstkPbdFETetConstraint.h" #include "imstkPbdModel.h" #include "imstkLogger.h" +#include "imstkMath.h" namespace imstk { diff --git a/Source/DynamicalModels/ObjectModels/imstkPbdModel.cpp b/Source/DynamicalModels/ObjectModels/imstkPbdModel.cpp index 36757eaae7aae9c61a715fb8a3c5869402360570..4d9715513c89c95acfac9f9728f70e7d97617689 100644 --- a/Source/DynamicalModels/ObjectModels/imstkPbdModel.cpp +++ b/Source/DynamicalModels/ObjectModels/imstkPbdModel.cpp @@ -35,8 +35,7 @@ #include "imstkParallelUtils.h" #include "imstkGeometryUtilities.h" #include "imstkMeshIO.h" - -#include <g3log/g3log.hpp> +#include "imstkColor.h" #include <unordered_map> diff --git a/Source/DynamicalModels/ObjectModels/imstkRigidBodyModel.h b/Source/DynamicalModels/ObjectModels/imstkRigidBodyModel.h index cfcd28f7dfe6f9a4241784b5f05e62c87685fa8f..b9d377d7bd34a1ece03e01dfd423c71ada8bbdf4 100644 --- a/Source/DynamicalModels/ObjectModels/imstkRigidBodyModel.h +++ b/Source/DynamicalModels/ObjectModels/imstkRigidBodyModel.h @@ -24,7 +24,6 @@ #include "imstkDynamicalModel.h" #include "imstkRigidBodyState.h" -#include "imstkSurfaceMesh.h" #include "imstkRigidBodyWorld.h" namespace imstk diff --git a/Source/DynamicalModels/ObjectModels/imstkSPHModel.cpp b/Source/DynamicalModels/ObjectModels/imstkSPHModel.cpp index 16f0653216561ddf09bc629a1dc17797e4e18244..ca91fa161179157371ec49e46d519426f85c2c32 100644 --- a/Source/DynamicalModels/ObjectModels/imstkSPHModel.cpp +++ b/Source/DynamicalModels/ObjectModels/imstkSPHModel.cpp @@ -21,7 +21,7 @@ #include "imstkSPHModel.h" #include "imstkParallelUtils.h" -#include <g3log/g3log.hpp> +#include "imstkPointSet.h" namespace imstk { diff --git a/Source/DynamicalModels/ObjectModels/imstkSPHModel.h b/Source/DynamicalModels/ObjectModels/imstkSPHModel.h index 99ff71744d865f134d690eca0ddd367d55a3d391..d5cedcf23b8a2eabe9996d56bbaaed58cc5bae2d 100644 --- a/Source/DynamicalModels/ObjectModels/imstkSPHModel.h +++ b/Source/DynamicalModels/ObjectModels/imstkSPHModel.h @@ -21,7 +21,6 @@ #pragma once -#include "imstkPointSet.h" #include "imstkDynamicalModel.h" #include "imstkSPHState.h" #include "imstkSPHKernels.h" @@ -29,6 +28,8 @@ namespace imstk { +class PointSet; + /// /// \class SPHModelConfig /// \brief Class that holds the SPH model parameters diff --git a/Source/DynamicalModels/ObjectStates/imstkPbdState.cpp b/Source/DynamicalModels/ObjectStates/imstkPbdState.cpp index 3622b0f7df481f8f5001ac453bbefeba8445140d..4c06dc9f5a2b0df9df9bf4474a7e259c10f30f5a 100644 --- a/Source/DynamicalModels/ObjectStates/imstkPbdState.cpp +++ b/Source/DynamicalModels/ObjectStates/imstkPbdState.cpp @@ -20,6 +20,7 @@ =========================================================================*/ #include "imstkPbdState.h" +#include "imstkPointSet.h" namespace imstk { diff --git a/Source/DynamicalModels/ObjectStates/imstkPbdState.h b/Source/DynamicalModels/ObjectStates/imstkPbdState.h index f740b186f349b349b0cc3270c426dc873d74bade..bcc2884edf0417daf9cf185002813c922f46a4e4 100644 --- a/Source/DynamicalModels/ObjectStates/imstkPbdState.h +++ b/Source/DynamicalModels/ObjectStates/imstkPbdState.h @@ -21,14 +21,11 @@ #pragma once -#include <Eigen/Dense> -#include <vector> - -#include "imstkPointSet.h" #include "imstkMath.h" namespace imstk { +class PointSet; /// /// \class PbdState /// diff --git a/Source/DynamicalModels/ObjectStates/imstkSPHState.cpp b/Source/DynamicalModels/ObjectStates/imstkSPHState.cpp index 47f9630960127c23aede1189e388ffd4a41121d6..67e52606bfff5514257d6ef02241053e88345d4d 100644 --- a/Source/DynamicalModels/ObjectStates/imstkSPHState.cpp +++ b/Source/DynamicalModels/ObjectStates/imstkSPHState.cpp @@ -20,7 +20,7 @@ =========================================================================*/ #include "imstkSPHState.h" -#include <g3log/g3log.hpp> +#include "imstkLogger.h" namespace imstk { @@ -66,4 +66,64 @@ SPHSimulationState::initializeData() m_NeighborInfo.resize(numParticles); m_NeighborLists.resize(numParticles); } + +/// +/// \brief Get number of particles +/// +size_t +SPHSimulationState::getNumParticles() const +{ +#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) + LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; +#endif + return m_KinematicState->getNumParticles(); +} + +/// +/// \brief Returns the vector of all particle positions +/// +StdVectorOfVec3r& +SPHSimulationState::getPositions() +{ +#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) + LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; +#endif + return m_KinematicState->getPositions(); +} + +/// +/// \brief Returns the vector of all particle positions +/// +const StdVectorOfVec3r& +SPHSimulationState::getPositions() const +{ +#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) + LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; +#endif + return m_KinematicState->getPositions(); +} + +/// +/// \brief Returns the vector of all particle velocities +/// +StdVectorOfVec3r& +SPHSimulationState::getVelocities() +{ +#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) + LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; +#endif + return m_KinematicState->getVelocities(); +} + +/// +/// \brief Returns the vector of all particle velocities +/// +const StdVectorOfVec3r& +SPHSimulationState::getVelocities() const +{ +#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) + LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; +#endif + return m_KinematicState->getVelocities(); +} } // end namespace imstk diff --git a/Source/DynamicalModels/ObjectStates/imstkSPHState.h b/Source/DynamicalModels/ObjectStates/imstkSPHState.h index 486c5da615e891e8234a51192c2cfdf86f4e86f2..02cab0fe5fb9739322b90365222c3b742d994d65 100644 --- a/Source/DynamicalModels/ObjectStates/imstkSPHState.h +++ b/Source/DynamicalModels/ObjectStates/imstkSPHState.h @@ -21,11 +21,8 @@ #pragma once -#include <memory> #include "imstkMath.h" -#include <g3log/g3log.hpp> - namespace imstk { /// @@ -107,64 +104,35 @@ public: void setBoundaryParticlePositions(const StdVectorOfVec3r& positions) { m_BDPositions = positions; } /// - /// \brief Initialize simulation variables, must be called after setKinematicState and (if applicable) after setBoundaryParticlePositions + /// \brief Initialize simulation variables, must be called after setKinematicState and (if applicable) + /// after setBoundaryParticlePositions /// void initializeData(); /// /// \brief Get number of particles /// - size_t getNumParticles() const - { -#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) - LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; -#endif - return m_KinematicState->getNumParticles(); - } + size_t getNumParticles() const; /// /// \brief Returns the vector of all particle positions /// - StdVectorOfVec3r& getPositions() - { -#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) - LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; -#endif - return m_KinematicState->getPositions(); - } + StdVectorOfVec3r& getPositions(); /// /// \brief Returns the vector of all particle positions /// - const StdVectorOfVec3r& getPositions() const - { -#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) - LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; -#endif - return m_KinematicState->getPositions(); - } + const StdVectorOfVec3r& getPositions() const; /// /// \brief Returns the vector of all particle velocities /// - StdVectorOfVec3r& getVelocities() - { -#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) - LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; -#endif - return m_KinematicState->getVelocities(); - } + StdVectorOfVec3r& getVelocities(); /// /// \brief Returns the vector of all particle velocities /// - const StdVectorOfVec3r& getVelocities() const - { -#if defined(DEBUG) || defined(_DEBUG) || !defined(NDEBUG) - LOG_IF(FATAL, (!m_KinematicState)) << "Particle kinematic state has not been initialized"; -#endif - return m_KinematicState->getVelocities(); - } + const StdVectorOfVec3r& getVelocities() const; /// /// \brief Returns the vector of all particle positions diff --git a/Source/DynamicalModels/ObjectStates/imstkVectorizedState.h b/Source/DynamicalModels/ObjectStates/imstkVectorizedState.h index 8380fc4cf7401731171adda03307a7450d54a3a0..524760a9e15189ce78ab89abc4b3fdf20f6409c0 100644 --- a/Source/DynamicalModels/ObjectStates/imstkVectorizedState.h +++ b/Source/DynamicalModels/ObjectStates/imstkVectorizedState.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkMath.h" namespace imstk diff --git a/Source/DynamicalModels/TimeIntegrators/imstkBackwardEuler.h b/Source/DynamicalModels/TimeIntegrators/imstkBackwardEuler.h index b47ce161563f383147bcd8347013f7be204e1da2..29f1c4e57e490eef395dd5e6e33fb53e12668a8a 100644 --- a/Source/DynamicalModels/TimeIntegrators/imstkBackwardEuler.h +++ b/Source/DynamicalModels/TimeIntegrators/imstkBackwardEuler.h @@ -23,9 +23,6 @@ #include "imstkTimeIntegrator.h" -#include <array> -#include "imstkLogger.h" - namespace imstk { /// diff --git a/Source/DynamicalModels/TimeIntegrators/imstkNewmarkBeta.h b/Source/DynamicalModels/TimeIntegrators/imstkNewmarkBeta.h index 98288d09f526a1c0b0275907bdc1d8ad1c90dcec..15e97069ba3d4f26423bd746eb195148d6bea4f1 100644 --- a/Source/DynamicalModels/TimeIntegrators/imstkNewmarkBeta.h +++ b/Source/DynamicalModels/TimeIntegrators/imstkNewmarkBeta.h @@ -22,8 +22,6 @@ #pragma once #include "imstkTimeIntegrator.h" - -#include <array> #include "imstkLogger.h" namespace imstk diff --git a/Source/DynamicalModels/TimeIntegrators/imstkTimeIntegrator.h b/Source/DynamicalModels/TimeIntegrators/imstkTimeIntegrator.h index 55caa21316b834acf0c5a54ff86fbd077f60478b..3a9a8ef67526315b20048967f2ad505d75f3525e 100644 --- a/Source/DynamicalModels/TimeIntegrators/imstkTimeIntegrator.h +++ b/Source/DynamicalModels/TimeIntegrators/imstkTimeIntegrator.h @@ -21,11 +21,6 @@ #pragma once -#include <array> -#include "imstkLogger.h" - -#include "Eigen/Sparse" - #include "imstkVectorizedState.h" namespace imstk diff --git a/Source/Geometry/Analytic/imstkAnalyticalGeometry.cpp b/Source/Geometry/Analytic/imstkAnalyticalGeometry.cpp index 9e7f4cb16b79370157c35204ae9ae6d0d964a3f3..b0fbb0da50ca990cd1044b886c31ff1db9151b9d 100644 --- a/Source/Geometry/Analytic/imstkAnalyticalGeometry.cpp +++ b/Source/Geometry/Analytic/imstkAnalyticalGeometry.cpp @@ -20,10 +20,16 @@ =========================================================================*/ #include "imstkAnalyticalGeometry.h" +#include "imstkMath.h" #include "imstkLogger.h" namespace imstk { +AnalyticalGeometry::AnalyticalGeometry(Type type, const std::string& name) : Geometry(type, name), + m_position(WORLD_ORIGIN), m_positionPostTransform(WORLD_ORIGIN), m_orientationAxis(UP_VECTOR), m_orientationAxisPostTransform(UP_VECTOR) +{ +} + void AnalyticalGeometry::print() const { diff --git a/Source/Geometry/Analytic/imstkAnalyticalGeometry.h b/Source/Geometry/Analytic/imstkAnalyticalGeometry.h index a8da2462ace88c46a19356fbddd0d2d78acb253d..d129df16332a7d1b02c4267c9713777fcda5157d 100644 --- a/Source/Geometry/Analytic/imstkAnalyticalGeometry.h +++ b/Source/Geometry/Analytic/imstkAnalyticalGeometry.h @@ -22,7 +22,6 @@ #pragma once #include "imstkGeometry.h" -#include "imstkMath.h" namespace imstk { @@ -57,16 +56,16 @@ public: protected: - explicit AnalyticalGeometry(Type type, const std::string& name = std::string("")) : Geometry(type, name) {} + explicit AnalyticalGeometry(Type type, const std::string& name = std::string("")); void applyTranslation(const Vec3d t) override; void applyRotation(const Mat3d r) override; virtual void updatePostTransformData() const override; - Vec3d m_position = WORLD_ORIGIN; ///> position - mutable Vec3d m_positionPostTransform = WORLD_ORIGIN; ///> position once transform applied + Vec3d m_position; ///> position + mutable Vec3d m_positionPostTransform; ///> position once transform applied - Vec3d m_orientationAxis = UP_VECTOR; ///> orientation - mutable Vec3d m_orientationAxisPostTransform = UP_VECTOR; ///> orientation once transform applied + Vec3d m_orientationAxis; ///> orientation + mutable Vec3d m_orientationAxisPostTransform; ///> orientation once transform applied }; } //imstk diff --git a/Source/Geometry/Map/imstkGeometryMap.cpp b/Source/Geometry/Map/imstkGeometryMap.cpp index 8f01b6e6b6709e75f06ac4067e4f8b1a30238786..aafb0af64e2019dd083846dc73cc97ad008909e3 100644 --- a/Source/Geometry/Map/imstkGeometryMap.cpp +++ b/Source/Geometry/Map/imstkGeometryMap.cpp @@ -99,4 +99,12 @@ GeometryMap::getSlave() const { return m_slave; } + +void +GeometryMap::initialize() +{ + CHECK(this->isValid()) << "Map is invalid!"; + + this->compute(); +} } // imstk diff --git a/Source/Geometry/Map/imstkGeometryMap.h b/Source/Geometry/Map/imstkGeometryMap.h index 8f50efcc6866db35ec2e25ac56bd6006e4a0b1f8..19df6de82308c09548fa30bfabc31a3a83ba0981 100644 --- a/Source/Geometry/Map/imstkGeometryMap.h +++ b/Source/Geometry/Map/imstkGeometryMap.h @@ -22,7 +22,6 @@ #pragma once #include "imstkGeometry.h" -#include "imstkLogger.h" namespace imstk { @@ -119,12 +118,7 @@ public: /// /// \brief Initialize the map /// - virtual void initialize() - { - LOG_IF(FATAL, (!this->isValid())) << "Map is invalid!"; - - this->compute(); - } + virtual void initialize(); protected: @@ -138,7 +132,9 @@ protected: /// GeometryMap(const std::shared_ptr<Geometry> master, const std::shared_ptr<Geometry> slave, - Type type) : m_type(type), m_isActive(true) + Type type) : + m_type(type), + m_isActive(true) { this->setMaster(master); this->setSlave(slave); diff --git a/Source/Geometry/Map/imstkOneToOneMap.h b/Source/Geometry/Map/imstkOneToOneMap.h index c79d0df63fd89f56b48f4744a75f6e974018b170..fbbb82fda3d0296672728dd7138b2f353a41da06 100644 --- a/Source/Geometry/Map/imstkOneToOneMap.h +++ b/Source/Geometry/Map/imstkOneToOneMap.h @@ -21,8 +21,6 @@ #pragma once -#include <limits> - // imstk #include "imstkGeometryMap.h" diff --git a/Source/Geometry/Mesh/imstkHexahedralMesh.cpp b/Source/Geometry/Mesh/imstkHexahedralMesh.cpp index 336a89f59aa2a3bb0068340b021b710b7344b4e3..42666b8e3a18d11e4bad6afebf2aabc15fa773ab 100644 --- a/Source/Geometry/Mesh/imstkHexahedralMesh.cpp +++ b/Source/Geometry/Mesh/imstkHexahedralMesh.cpp @@ -20,8 +20,11 @@ =========================================================================*/ #include "imstkHexahedralMesh.h" +#include "imstkSurfaceMesh.h" #include "imstkLogger.h" +#include <array> + namespace imstk { void diff --git a/Source/Geometry/Mesh/imstkLineMesh.cpp b/Source/Geometry/Mesh/imstkLineMesh.cpp index 11d574ba48067777086c0aa133f73c2f587d0014..0ab7c7b683094b55a86e778c30173c74318ba3f2 100644 --- a/Source/Geometry/Mesh/imstkLineMesh.cpp +++ b/Source/Geometry/Mesh/imstkLineMesh.cpp @@ -21,6 +21,7 @@ #include "imstkLineMesh.h" #include "imstkLogger.h" +#include "imstkColor.h" namespace imstk { diff --git a/Source/Geometry/Mesh/imstkLineMesh.h b/Source/Geometry/Mesh/imstkLineMesh.h index 9420814dbb8f5f03dfe38c7b5c55abc80c3edf9b..905fc6cc0d483bae462da2f0888b4b8f67a67c1b 100644 --- a/Source/Geometry/Mesh/imstkLineMesh.h +++ b/Source/Geometry/Mesh/imstkLineMesh.h @@ -21,14 +21,14 @@ #pragma once -#include <memory> #include <array> #include "imstkPointSet.h" -#include "imstkColor.h" namespace imstk { +struct Color; + /// /// \class LineMesh /// diff --git a/Source/Geometry/Mesh/imstkSurfaceMesh.h b/Source/Geometry/Mesh/imstkSurfaceMesh.h index a21e1646ea03fe2b71b88aa30fd5b370c0f75ba3..1c938d9922ba370d032fc5f3777b54411dd9a5a2 100644 --- a/Source/Geometry/Mesh/imstkSurfaceMesh.h +++ b/Source/Geometry/Mesh/imstkSurfaceMesh.h @@ -23,10 +23,7 @@ // std library #include <array> -#include <list> #include <set> -#include <unordered_set> -#include <memory> // imstk #include "imstkPointSet.h" diff --git a/Source/Geometry/Mesh/imstkVolumetricMesh.cpp b/Source/Geometry/Mesh/imstkVolumetricMesh.cpp index 163a29305ec95a0533992378bd313a2c08c1d339..ef3325f79084cf4076626fedea35dc7aa0f0d28e 100644 --- a/Source/Geometry/Mesh/imstkVolumetricMesh.cpp +++ b/Source/Geometry/Mesh/imstkVolumetricMesh.cpp @@ -20,8 +20,15 @@ =========================================================================*/ #include "imstkVolumetricMesh.h" +#include "imstkSurfaceMesh.h" #include "imstkLogger.h" +#pragma warning( push ) +#pragma warning( disable : 4458 ) +// Vega +#include "volumetricMesh.h" +#pragma warning( pop ) + namespace imstk { std::shared_ptr<SurfaceMesh> diff --git a/Source/Geometry/Mesh/imstkVolumetricMesh.h b/Source/Geometry/Mesh/imstkVolumetricMesh.h index dacee1fa664b0a8e3968c09a71e42056dd71a2dc..6b383f7cf1d8d49cd6fe69519998079c1f8cdda6 100644 --- a/Source/Geometry/Mesh/imstkVolumetricMesh.h +++ b/Source/Geometry/Mesh/imstkVolumetricMesh.h @@ -21,19 +21,13 @@ #pragma once -#include <memory> - #include "imstkPointSet.h" -#include "imstkSurfaceMesh.h" -#pragma warning( push ) -#pragma warning( disable : 4458 ) -// Vega -#include "volumetricMesh.h" -#pragma warning( pop ) +#include <memory> namespace imstk { +class SurfaceMesh; /// /// \class VolumetricMesh /// diff --git a/Source/Geometry/Particles/imstkRenderParticles.cpp b/Source/Geometry/Particles/imstkRenderParticles.cpp index 94943afe5f3006b33172e760b728c823a0c8e6b9..44940b52bbbe5aed0349a1b7f2e240b6151ec96d 100644 --- a/Source/Geometry/Particles/imstkRenderParticles.cpp +++ b/Source/Geometry/Particles/imstkRenderParticles.cpp @@ -91,4 +91,22 @@ RenderParticles::getMaxNumParticles() { return m_maxNumParticles; } + +void +RenderParticles::applyTranslation(const Vec3d t) +{ + LOG(WARNING) << "applyTranslation Not implemented!"; +} + +void +RenderParticles::applyRotation(const Mat3d r) +{ + LOG(WARNING) << "applyRotation Not implemented!"; +} + +void +RenderParticles::applyScaling(const double s) +{ + LOG(WARNING) << "applyScaling Not implemented!"; +} } diff --git a/Source/Geometry/Particles/imstkRenderParticles.h b/Source/Geometry/Particles/imstkRenderParticles.h index a74b91a8075a165125d63ecc441650a44b296770..3239da80f7d680fda415cc2e831c403f32451afe 100644 --- a/Source/Geometry/Particles/imstkRenderParticles.h +++ b/Source/Geometry/Particles/imstkRenderParticles.h @@ -28,7 +28,6 @@ #include "imstkGeometry.h" #include "imstkMath.h" -#include "imstkLogger.h" #include "imstkColor.h" namespace imstk @@ -125,9 +124,9 @@ protected: #pragma warning( push ) #pragma warning( disable : 4100 ) - void applyTranslation(const Vec3d t) override { LOG(WARNING) << "applyTranslation Not implemented!"; } - void applyRotation(const Mat3d r) override { LOG(WARNING) << "applyRotation Not implemented!"; } - void applyScaling(const double s) override { LOG(WARNING) << "applyScaling Not implemented!"; } + void applyTranslation(const Vec3d t) override; + void applyRotation(const Mat3d r) override; + void applyScaling(const double s) override; #pragma warning( pop ) virtual void updatePostTransformData() const override {} diff --git a/Source/Geometry/Reader/imstkMSHMeshIO.cpp b/Source/Geometry/Reader/imstkMSHMeshIO.cpp index 570481aff9420730be1cb63360bf0900394dd9c1..aaa879f956e8c18d51db46fcf617b3481a365d0a 100644 --- a/Source/Geometry/Reader/imstkMSHMeshIO.cpp +++ b/Source/Geometry/Reader/imstkMSHMeshIO.cpp @@ -22,6 +22,7 @@ #include <fstream> #include <iostream> #include <algorithm> +#include <array> #include "imstkMSHMeshIO.h" #include "imstkTetrahedralMesh.h" diff --git a/Source/Geometry/Reader/imstkMeshIO.cpp b/Source/Geometry/Reader/imstkMeshIO.cpp index cc5c206f52b4af867514494ce08a623674348cef..aad6421d3bde995f97b2fa9e62fa0bf4713db17e 100644 --- a/Source/Geometry/Reader/imstkMeshIO.cpp +++ b/Source/Geometry/Reader/imstkMeshIO.cpp @@ -26,6 +26,7 @@ #include "imstkAssimpMeshIO.h" #include "imstkVegaMeshIO.h" #include "imstkMSHMeshIO.h" +#include "imstkColor.h" #include "imstkSurfaceMesh.h" #include "imstkLineMesh.h" diff --git a/Source/Geometry/Reader/imstkVTKMeshIO.cpp b/Source/Geometry/Reader/imstkVTKMeshIO.cpp index 99d0f97eed3031b7b00dd85dbf74e2ab21d7f7b3..c0e7dcdad704a2691468db76e48291c45933bcfa 100644 --- a/Source/Geometry/Reader/imstkVTKMeshIO.cpp +++ b/Source/Geometry/Reader/imstkVTKMeshIO.cpp @@ -45,6 +45,7 @@ #include "imstkTetrahedralMesh.h" #include "imstkHexahedralMesh.h" +#include "imstkColor.h" #include "imstkLogger.h" namespace imstk diff --git a/Source/Geometry/Reader/imstkVegaMeshIO.cpp b/Source/Geometry/Reader/imstkVegaMeshIO.cpp index 86798a80e14c089a312a602674b84fa77bea93ed..e32252024e31e184b8944b882c9a6e900e0774a8 100644 --- a/Source/Geometry/Reader/imstkVegaMeshIO.cpp +++ b/Source/Geometry/Reader/imstkVegaMeshIO.cpp @@ -33,6 +33,8 @@ #include "tetMesh.h" +#include <array> + namespace imstk { std::shared_ptr<VolumetricMesh> diff --git a/Source/Geometry/imstkGeometry.cpp b/Source/Geometry/imstkGeometry.cpp index e71c929c0c996d770d095cee6239580a14065d55..53839d11f48a63fb82187a0724aec7457398c0de 100644 --- a/Source/Geometry/imstkGeometry.cpp +++ b/Source/Geometry/imstkGeometry.cpp @@ -26,7 +26,7 @@ namespace imstk { Geometry::Geometry(const Geometry::Type type, const std::string& name) : - m_type(type), m_name(name), m_geometryIndex(Geometry::getUniqueID()) + m_type(type), m_name(name), m_geometryIndex(Geometry::getUniqueID()), m_transform(RigidTransform3d::Identity()) { // If the geometry name is empty, enumerate it by name (which will not be duplicated) if (m_name.empty()) diff --git a/Source/Geometry/imstkGeometry.h b/Source/Geometry/imstkGeometry.h index 545e713eca74fbf3b6fd4f71ef21a9861ff7ed45..6f732798dba32923c0240fc0178c1503a303c215 100644 --- a/Source/Geometry/imstkGeometry.h +++ b/Source/Geometry/imstkGeometry.h @@ -22,11 +22,15 @@ #pragma once #include "imstkMath.h" -#include "tbb/tbb.h" + +#include <tbb\concurrent_unordered_set.h> namespace imstk { -namespace ParallelUtils { class SpinLock; } +namespace ParallelUtils +{ +class SpinLock; +} /// /// \class Geometry @@ -213,7 +217,7 @@ protected: bool m_transformModified = false; mutable bool m_transformApplied = true; - RigidTransform3d m_transform = RigidTransform3d::Identity(); ///> Transformation matrix + RigidTransform3d m_transform; ///> Transformation matrix double m_scaling = 1.0; }; } //imstk diff --git a/Source/Geometry/imstkGeometryUtilities.cpp b/Source/Geometry/imstkGeometryUtilities.cpp index d93a54e09709dc68e30f794926c233707aa35c30..f33ae2b5a1e624097782300cf764e6b2fd73f983 100644 --- a/Source/Geometry/imstkGeometryUtilities.cpp +++ b/Source/Geometry/imstkGeometryUtilities.cpp @@ -25,6 +25,8 @@ #include "imstkPointSet.h" #include "imstkSurfaceMesh.h" #include "imstkTetrahedralMesh.h" +#include "imstkColor.h" + #include <vtkAppendPolyData.h> #include <vtkCleanPolyData.h> #include <vtkDataSet.h> diff --git a/Source/Rendering/Materials/imstkRenderMaterial.h b/Source/Rendering/Materials/imstkRenderMaterial.h index e58b07e4d2c4a213c2aa7cefc6ed5d7f3bc17c65..a94d147e351f4878cbe15d26be0e277f664d4571 100644 --- a/Source/Rendering/Materials/imstkRenderMaterial.h +++ b/Source/Rendering/Materials/imstkRenderMaterial.h @@ -24,9 +24,6 @@ #include "imstkColor.h" #include "imstkTextureManager.h" -#include <memory> -#include <vector> - namespace imstk { class Texture; diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCapsuleRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCapsuleRenderDelegate.cpp index 9fe8c2eee9020782e5f930ecc29a374b7f8b0c2d..adf5568b19d1764b67a632e9497ad87678fb958f 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCapsuleRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCapsuleRenderDelegate.cpp @@ -20,8 +20,10 @@ =========================================================================*/ #include "imstkVTKCapsuleRenderDelegate.h" +#include "imstkCapsule.h" -#include "vtkCapsuleSource.h" +#include <vtkTransformPolyDataFilter.h> +#include <vtkCapsuleSource.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCapsuleRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCapsuleRenderDelegate.h index 0ab268328c317db11d2c2fdc53a7bd15a94e8bac..009c6448bf7e930c55737a4b6f0236687afa024f 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCapsuleRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCapsuleRenderDelegate.h @@ -21,12 +21,9 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" -#include "imstkCapsule.h" -#include "vtkTransformPolyDataFilter.h" +class vtkTransformPolyDataFilter; namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCubeRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCubeRenderDelegate.cpp index e1c2e0981ad074f0da835ade2be5f3f8172f903d..3438fd138d5ad0991baaf527b5c2c42f4b275a6a 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCubeRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCubeRenderDelegate.cpp @@ -20,7 +20,9 @@ =========================================================================*/ #include "imstkVTKCubeRenderDelegate.h" +#include "imstkCube.h" +#include "vtkTransformPolyDataFilter.h" #include "vtkCubeSource.h" namespace imstk diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCubeRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCubeRenderDelegate.h index 5a4ea230588835786ccca05b16d74d23aec78c5a..d298ed443e303c9cee859bf1b7728c929f4542fb 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCubeRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCubeRenderDelegate.h @@ -21,12 +21,9 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" -#include "imstkCube.h" -#include "vtkTransformPolyDataFilter.h" +class vtkTransformPolyDataFilter; namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCylinderRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCylinderRenderDelegate.cpp index 4947eeee17582d1e307e543ea5cf7e6cd2f69386..11181f643867161e7713c0e2bcff197d20b9c2ef 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCylinderRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCylinderRenderDelegate.cpp @@ -20,6 +20,10 @@ =========================================================================*/ #include "imstkVTKCylinderRenderDelegate.h" +#include "imstkCylinder.h" + +#include <vtkTransformPolyDataFilter.h> +#include <vtkCylinderSource.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCylinderRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCylinderRenderDelegate.h index 22a7ca5ae50a055278bbb76d3476a0d8c5083ba6..c5d582ffc960a1209a5489cd5116b5d67e7844f6 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCylinderRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKCylinderRenderDelegate.h @@ -21,14 +21,11 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" -#include "imstkCylinder.h" -#include "vtkTransformPolyDataFilter.h" +class vtkTransformPolyDataFilter; +class vtkCylinderSource; -#include "vtkCylinderSource.h" namespace imstk { /// diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKHexahedralMeshRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKHexahedralMeshRenderDelegate.cpp index c84a7e9e2d9fab47e31e80682d2fdb102bf53c1c..2f8b69cdd1d5b60bd04641455fca7f8288d20700 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKHexahedralMeshRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKHexahedralMeshRenderDelegate.cpp @@ -20,15 +20,16 @@ =========================================================================*/ #include "imstkVTKHexahedralMeshRenderDelegate.h" - #include "imstkHexahedralMesh.h" #include <vtkUnstructuredGrid.h> #include <vtkDataSetMapper.h> -#include <vtkPoints.h> #include <vtkDoubleArray.h> #include <vtkCellArray.h> #include <vtkProperty.h> +#include <vtkPoints.h> + +#include <array> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKHexahedralMeshRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKHexahedralMeshRenderDelegate.h index 6082fd0b056893256e1388554b915c89cc56b191..03ca039dced22adbefd822f283c7e7b37f460832 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKHexahedralMeshRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKHexahedralMeshRenderDelegate.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" class vtkDoubleArray; diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKImageDataRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKImageDataRenderDelegate.cpp index 58f8877a0a94d92eddfb28117d4709ca82e4db7c..58e753aeace62382aee020ce3e6bc46dd4cfde66 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKImageDataRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKImageDataRenderDelegate.cpp @@ -20,13 +20,14 @@ =========================================================================*/ #include "imstkVTKImageDataRenderDelegate.h" - -#include "vtkTrivialProducer.h" -#include "vtkVolumeProperty.h" -#include "vtkColorTransferFunction.h" -#include "vtkPiecewiseFunction.h" -#include "vtkGPUVolumeRayCastMapper.h" -#include "vtkImageData.h" +#include "imstkImageData.h" + +#include <vtkGPUVolumeRayCastMapper.h> +#include <vtkColorTransferFunction.h> +#include <vtkPiecewiseFunction.h> +#include <vtkTrivialProducer.h> +#include <vtkVolumeProperty.h> +#include <vtkImageData.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKImageDataRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKImageDataRenderDelegate.h index 0dd71a964f8faa47564abf5682472937e2af710e..f13957ce7366033dfc001dd81c97c75ea6e85860 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKImageDataRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKImageDataRenderDelegate.h @@ -22,10 +22,11 @@ #pragma once #include "imstkVTKRenderDelegate.h" -#include "imstkImageData.h" namespace imstk { +class ImageData; + /// /// \class ImageDataRenderDelegate /// diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKLineMeshRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKLineMeshRenderDelegate.cpp index a4755cfe3bff20581c19da6099dbf212ea0e499e..3aadee943259637fd06e8302f04a702b2cd0ace9 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKLineMeshRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKLineMeshRenderDelegate.cpp @@ -20,17 +20,18 @@ =========================================================================*/ #include "imstkVTKLineMeshRenderDelegate.h" - #include "imstkLineMesh.h" -#include <vtkLineSource.h> +#include <vtkUnsignedCharArray.h> +#include <vtkTrivialProducer.h> #include <vtkPolyDataMapper.h> -#include <vtkPoints.h> #include <vtkDoubleArray.h> #include <vtkFloatArray.h> +#include <vtkLineSource.h> +#include <vtkPointData.h> +#include <vtkPolyData.h> +#include <vtkPoints.h> #include <vtkLine.h> -#include <vtkTrivialProducer.h> -#include <vtkUnsignedCharArray.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKLineMeshRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKLineMeshRenderDelegate.h index a09b2d1fb633d1656bb3d11047752df9f921139f..6a40a0b4244344451eea3532c5ae65b3c3c2a3ce 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKLineMeshRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKLineMeshRenderDelegate.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" class vtkDoubleArray; diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPlaneRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPlaneRenderDelegate.cpp index d1177c75ff4aab6d30ee0219f5385b09c2716a0f..20ab1b0d839050a13f725a65a33c06fcb1e95f89 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPlaneRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPlaneRenderDelegate.cpp @@ -20,8 +20,10 @@ =========================================================================*/ #include "imstkVTKPlaneRenderDelegate.h" +#include "imstkPlane.h" -#include "vtkPlaneSource.h" +#include <vtkTransformPolyDataFilter.h> +#include <vtkPlaneSource.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPlaneRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPlaneRenderDelegate.h index 7afc394db02d7ecf571040ec5d4c71806d35ff9f..230bbb4b819e552ef96e7aaa78adcae36408abba 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPlaneRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPlaneRenderDelegate.h @@ -21,15 +21,14 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" -#include "imstkPlane.h" -#include "vtkTransformPolyDataFilter.h" +class vtkTransformPolyDataFilter; namespace imstk { +class Plane; + /// /// \class PlaneRenderDelegate /// diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPointSetRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPointSetRenderDelegate.cpp index e884e8b7d9165468b6367cfdd1572770a3f9db5c..7e8b09dde339bd0f0c271b63ed856f53551f190f 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPointSetRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPointSetRenderDelegate.cpp @@ -22,10 +22,10 @@ #include "imstkVTKPointSetRenderDelegate.h" #include "imstkPointSet.h" -#include <vtkTrivialProducer.h> -#include <vtkDoubleArray.h> #include <vtkVertexGlyphFilter.h> +#include <vtkTrivialProducer.h> #include <vtkSphereSource.h> +#include <vtkDoubleArray.h> #include <vtkGlyph3D.h> #include <vtkVersion.h> diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPointSetRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPointSetRenderDelegate.h index b3f118cabf9f5fb3bde71d7d41b3c611ba07b06a..fb69387eb09561b4538a75707ed4e0720590a03d 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPointSetRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKPointSetRenderDelegate.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" class vtkDoubleArray; diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKRenderDelegate.h index 8886bc23c8adad30f0a895bac7e6e70de4e73313..4fed20cc4014ee08f535afa542eaa5e79b3d3fca 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKRenderDelegate.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkGeometry.h" #include "imstkRenderMaterial.h" #include "imstkVTKTextureDelegate.h" @@ -31,14 +29,14 @@ #include "imstkDebugRenderGeometry.h" #include "imstkVisualModel.h" -#include "vtkSmartPointer.h" -#include "vtkAlgorithmOutput.h" -#include "vtkActor.h" -#include "vtkPolyDataMapper.h" -#include "vtkTransform.h" -#include "vtkProperty.h" -#include "vtkGPUVolumeRayCastMapper.h" -#include "vtkVolume.h" +#include <vtkSmartPointer.h> +#include <vtkAlgorithmOutput.h> +#include <vtkActor.h> +#include <vtkPolyDataMapper.h> +#include <vtkTransform.h> +#include <vtkProperty.h> +#include <vtkGPUVolumeRayCastMapper.h> +#include <vtkVolume.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSphereRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSphereRenderDelegate.cpp index f893264eb3bdef81f5993653395eb4698a7c6404..33bbd38599d0490c28ff5f5cc8fc9570e0028e73 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSphereRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSphereRenderDelegate.cpp @@ -20,8 +20,10 @@ =========================================================================*/ #include "imstkVTKSphereRenderDelegate.h" +#include "imstkSphere.h" -#include "vtkSphereSource.h" +#include <vtkTransformPolyDataFilter.h> +#include <vtkSphereSource.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSphereRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSphereRenderDelegate.h index ef63b0cd7145dda9f6f735e9f0291c81df8bc181..01c54a121307cbb934e0e668969d0395b987e97e 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSphereRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSphereRenderDelegate.h @@ -21,15 +21,13 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" -#include "imstkSphere.h" -#include "vtkTransformPolyDataFilter.h" +class vtkTransformPolyDataFilter; namespace imstk { +class VisualModel; /// /// \class SphereRenderDelegate /// diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.cpp index 26886ede475b4e801585d11abb93be5846999dac..0ee4930d5a89b5006e522e19393f94e78e40eea2 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.cpp @@ -20,7 +20,8 @@ =========================================================================*/ #include "imstkVTKSurfaceMeshRenderDelegate.h" - +#include "imstkVTKTextureDelegate.h" +#include "imstkTextureManager.h" #include "imstkSurfaceMesh.h" #include <vtkPolyData.h> diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.h index cfc97b20657186394ccd2f3d146e86e57158bf7c..3eb459c6a4a94151e8e7b023ddd3f4654bf19006 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.h @@ -21,11 +21,7 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" -#include "imstkVTKTextureDelegate.h" -#include "imstkTextureManager.h" class vtkDoubleArray; diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKTetrahedralMeshRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKTetrahedralMeshRenderDelegate.cpp index 2f77c9f929c6dbd45904ff032417b41f22ff7c2f..82ea6aeeef273082a789cf7b3ff3fcb301378099 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKTetrahedralMeshRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKTetrahedralMeshRenderDelegate.cpp @@ -20,20 +20,21 @@ =========================================================================*/ #include "imstkVTKTetrahedralMeshRenderDelegate.h" - #include "imstkTetrahedralMesh.h" #include <vtkUnstructuredGrid.h> #include <vtkDataSetMapper.h> -#include <vtkPoints.h> #include <vtkDoubleArray.h> +#include <vtkFloatArray.h> #include <vtkCellArray.h> +#include <vtkPointData.h> #include <vtkProperty.h> #include <vtkPolyData.h> -#include <vtkPointData.h> -#include <vtkFloatArray.h> +#include <vtkPoints.h> #include <vtkNew.h> +#include <array> + namespace imstk { VTKTetrahedralMeshRenderDelegate::VTKTetrahedralMeshRenderDelegate(std::shared_ptr<VisualModel> visualModel) : diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKTetrahedralMeshRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKTetrahedralMeshRenderDelegate.h index 4916f04a71dc08e854a07891a6f7872caf33b0c3..a11969e8715c4284ef91e920213d19f4cf745d3d 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKTetrahedralMeshRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKTetrahedralMeshRenderDelegate.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" class vtkDoubleArray; diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugLinesRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugLinesRenderDelegate.cpp index b3326aea9dd245a5731143f1443cfcbb97018d11..4053ff133fd2f7694289b7a1fd8ea9e625932a91 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugLinesRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugLinesRenderDelegate.cpp @@ -22,16 +22,16 @@ #include "imstkVTKdebugLinesRenderDelegate.h" #include "imstkSurfaceMesh.h" -#include <vtkPolyData.h> +#include <vtkOpenGLPolyDataMapper.h> +#include <vtkTrivialProducer.h> #include <vtkPolyDataMapper.h> -#include <vtkPoints.h> #include <vtkDoubleArray.h> -#include <vtkCellArray.h> #include <vtkFloatArray.h> +#include <vtkCellArray.h> #include <vtkPointData.h> +#include <vtkPolyData.h> #include <vtkProperty.h> -#include <vtkOpenGLPolyDataMapper.h> -#include <vtkTrivialProducer.h> +#include <vtkPoints.h> #include <vtkLine.h> namespace imstk diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugLinesRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugLinesRenderDelegate.h index bedd7344b12231a86869e23cfe88cdefc6013e49..2724a83fd7cc15ccd745ef527600f7e64d25bf50 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugLinesRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugLinesRenderDelegate.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" class vtkDoubleArray; diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugPointsRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugPointsRenderDelegate.cpp index ccbc293927767b3f342807a8f9a48c61629a7597..8d9a73b246c871adcfa578ddc7bc271bc85e5df8 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugPointsRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugPointsRenderDelegate.cpp @@ -20,22 +20,21 @@ =========================================================================*/ #include "imstkVTKdebugPointsRenderDelegate.h" - #include "imstkSurfaceMesh.h" -#include <vtkPolyData.h> -#include <vtkPolyDataMapper.h> -#include <vtkPoints.h> +#include <vtkOpenGLPolyDataMapper.h> #include <vtkTrivialProducer.h> +#include <vtkPolyDataMapper.h> +#include <vtkSphereSource.h> #include <vtkDoubleArray.h> -#include <vtkCellArray.h> #include <vtkFloatArray.h> +#include <vtkCellArray.h> #include <vtkPointData.h> +#include <vtkPolyData.h> #include <vtkPolyLine.h> #include <vtkProperty.h> -#include <vtkSphereSource.h> #include <vtkGlyph3D.h> -#include <vtkOpenGLPolyDataMapper.h> +#include <vtkPoints.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugPointsRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugPointsRenderDelegate.h index 7aef38f53e3974e50f83562c91fa4f0b1996e356..95925193b47eb5198d1fa4a1b0fce7d5a49f5834 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugPointsRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugPointsRenderDelegate.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" class vtkDoubleArray; diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugTrianglesRenderDelegate.cpp b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugTrianglesRenderDelegate.cpp index 1af58f53c91d36465ce99448e8f3c8bf154900e1..000c2db02b0558621eb071485d33d46c8fce6474 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugTrianglesRenderDelegate.cpp +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugTrianglesRenderDelegate.cpp @@ -21,14 +21,14 @@ #include "imstkVTKdebugTrianglesRenderDelegate.h" -#include <vtkPolyData.h> +#include <vtkTrivialProducer.h> #include <vtkPolyDataMapper.h> #include <vtkDoubleArray.h> -#include <vtkCellArray.h> #include <vtkFloatArray.h> +#include <vtkCellArray.h> #include <vtkPointData.h> +#include <vtkPolyData.h> #include <vtkProperty.h> -#include <vtkTrivialProducer.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugTrianglesRenderDelegate.h b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugTrianglesRenderDelegate.h index f1b045fe0b477eaea61315a0cd103790e4351d45..3e856dccdb533df2011854db9f8906df9fcaca14 100644 --- a/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugTrianglesRenderDelegate.h +++ b/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKdebugTrianglesRenderDelegate.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - #include "imstkVTKRenderDelegate.h" class vtkDoubleArray; diff --git a/Source/Rendering/VTKRenderer/imstkVTKCustomPolyDataMapper.cpp b/Source/Rendering/VTKRenderer/imstkVTKCustomPolyDataMapper.cpp index b6b1b838d0b37f96c88141246b502d3e4cbbc10a..47bda4b3bddbca577661dee8630a75041234af79 100644 --- a/Source/Rendering/VTKRenderer/imstkVTKCustomPolyDataMapper.cpp +++ b/Source/Rendering/VTKRenderer/imstkVTKCustomPolyDataMapper.cpp @@ -19,9 +19,37 @@ =========================================================================*/ -#include "imstkVTKCustomPolyDataMapper.h" +#include <fstream> +#include <sstream> -#include "vtkVersion.h" +#include "imstkVTKCustomPolyDataMapper.h" +#include "imstkSurfaceMesh.h" +#include "imstkGeometry.h" + +#include <vtkOpenGLVertexBufferObjectCache.h> +#include <vtkOpenGLVertexBufferObjectGroup.h> +#include <vtkOpenGLVertexBufferObject.h> +#include <vtkOpenGLVertexArrayObject.h> +#include <vtkOpenGLPolyDataMapper.h> +#include <vtkOpenGLBufferObject.h> +#include <vtkOpenGLRenderWindow.h> +#include <vtkLightCollection.h> +#include <vtkObjectFactory.h> +#include <vtkShaderProgram.h> +#include <vtkOpenGLTexture.h> +#include <vtkRenderWindow.h> +#include <vtkOpenGLCamera.h> +#include <vtkOpenGLActor.h> +#include <vtkOpenGLError.h> +#include <vtkMatrix4x4.h> +#include <vtkPointData.h> +#include <vtkProperty.h> +#include <vtkRenderer.h> +#include <vtkPolyData.h> +#include <vtkVersion.h> +#include <vtkCamera.h> +#include <vtkActor.h> +#include <vtkLight.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/imstkVTKCustomPolyDataMapper.h b/Source/Rendering/VTKRenderer/imstkVTKCustomPolyDataMapper.h index a5c9f3f10daf48858144efeff23e3f578426503d..858c94f8aa33f06fc7dc48650b2d778c95bb986c 100644 --- a/Source/Rendering/VTKRenderer/imstkVTKCustomPolyDataMapper.h +++ b/Source/Rendering/VTKRenderer/imstkVTKCustomPolyDataMapper.h @@ -21,36 +21,18 @@ #pragma once -#include <fstream> -#include <sstream> +#include "imstkRenderMaterial.h" +#include "vtkSetGet.h" #include "vtkOpenGLPolyDataMapper.h" -#include "vtkOpenGLBufferObject.h" -#include "vtkObjectFactory.h" -#include "vtkActor.h" -#include "vtkProperty.h" -#include "vtkOpenGLVertexArrayObject.h" -#include "vtkOpenGLVertexBufferObject.h" -#include "vtkOpenGLVertexBufferObjectCache.h" -#include "vtkOpenGLVertexBufferObjectGroup.h" -#include "vtkOpenGLRenderWindow.h" -#include "vtkRenderWindow.h" -#include "vtkShaderProgram.h" -#include "vtkRenderer.h" -#include "vtkCamera.h" -#include "vtkMatrix4x4.h" -#include "vtkOpenGLCamera.h" -#include "vtkOpenGLActor.h" -#include "vtkPolyData.h" -#include "vtkPointData.h" -#include "vtkLightCollection.h" -#include "vtkLight.h" -#include "vtkOpenGLTexture.h" -#include "vtkOpenGLError.h" - -#include "imstkGeometry.h" -#include "imstkSurfaceMesh.h" -#include "imstkRenderMaterial.h" + +class vtkOpenGLPolyDataMapper; +class vtkOpenGLBufferObject; +class vtkOpenGLHelper; +class vtkOpenGLHelper; +class vtkRenderer; +class vtkShader; +class vtkActor; namespace imstk { diff --git a/Source/Rendering/VTKRenderer/imstkVTKRenderer.cpp b/Source/Rendering/VTKRenderer/imstkVTKRenderer.cpp index 0c20aa9b893ef3f0fa78ad2b71fd10ec794edcdd..c90cb668e5f5c63600c5bee41da4abc1423efdfb 100644 --- a/Source/Rendering/VTKRenderer/imstkVTKRenderer.cpp +++ b/Source/Rendering/VTKRenderer/imstkVTKRenderer.cpp @@ -28,15 +28,18 @@ #include "imstkVTKRenderDelegate.h" #include "imstkVTKSurfaceMeshRenderDelegate.h" #include "imstkLight.h" - -#include "vtkLightActor.h" -#include "vtkCameraActor.h" -#include "vtkAxesActor.h" -#include "vtkCullerCollection.h" -#include "vtkAxesActor.h" - #include "imstkLogger.h" +#include <vtkLightActor.h> +#include <vtkCameraActor.h> +#include <vtkAxesActor.h> +#include <vtkCullerCollection.h> +#include <vtkAxesActor.h> +#include <vtkCamera.h> +#include <vtkProp.h> +#include <vtkLight.h> +#include <vtkRenderer.h> + namespace imstk { VTKRenderer::VTKRenderer(std::shared_ptr<Scene> scene, const bool enableVR) : m_scene(scene) diff --git a/Source/Rendering/VTKRenderer/imstkVTKRenderer.h b/Source/Rendering/VTKRenderer/imstkVTKRenderer.h index da45db103b25260055a524d1fff07f46bb924d1a..b93ad0af475d3dca505b94dbc5e3e20f454d12ca 100644 --- a/Source/Rendering/VTKRenderer/imstkVTKRenderer.h +++ b/Source/Rendering/VTKRenderer/imstkVTKRenderer.h @@ -21,30 +21,27 @@ #pragma once -#include <memory> -#include <vector> - #include "imstkMath.h" #include "imstkTextureManager.h" #include "imstkVTKTextureDelegate.h" #include "imstkRenderer.h" -#include "vtkSmartPointer.h" -#include "vtkRenderer.h" -#include "vtkProp.h" -#include "vtkCamera.h" -#include "vtkLight.h" +#include <vtkSmartPointer.h> #ifdef iMSTK_ENABLE_VR -#include "vtkOpenVRRenderer.h" -#include "vtkOpenVRCamera.h" -#include "vtkOpenVRRenderWindow.h" -#include "vtkOpenVRRenderWindowInteractor.h" -#include "vtkInteractorStyle3D.h" -#include "vtkOpenVROverlayInternal.h" +#include <vtkOpenVRRenderer.h> +#include <vtkOpenVRCamera.h> +#include <vtkOpenVRRenderWindow.h> +#include <vtkOpenVRRenderWindowInteractor.h> +#include <vtkInteractorStyle3D.h> +#include <vtkOpenVROverlayInternal.h> #endif class vtkAxesActor; +class vtkCamera; +class vtkProp; +class vtkLight; +class vtkRenderer; namespace imstk { diff --git a/Source/Rendering/VTKRenderer/imstkVTKTextureDelegate.cpp b/Source/Rendering/VTKRenderer/imstkVTKTextureDelegate.cpp index 4690747903d163c2b353f82a6dc098640e43713d..6f2d1562e258cd523beaeeee0177d8a54c0f59b0 100644 --- a/Source/Rendering/VTKRenderer/imstkVTKTextureDelegate.cpp +++ b/Source/Rendering/VTKRenderer/imstkVTKTextureDelegate.cpp @@ -21,6 +21,14 @@ #include "imstkVTKTextureDelegate.h" #include "imstkLogger.h" +#include "imstkTexture.h" +#include "imstkTextureDelegate.h" +#include "imstkTextureManager.h" + +#include <vtkSmartPointer.h> +#include <vtkImageReader2Factory.h> +#include <vtkImageReader2.h> +#include <vtkImageFlip.h> namespace imstk { diff --git a/Source/Rendering/VTKRenderer/imstkVTKTextureDelegate.h b/Source/Rendering/VTKRenderer/imstkVTKTextureDelegate.h index 329f9ea095e54d55cb26f5945e55a29861a11fb0..64509d28d6d13c71f7e32c870f52360727784a5c 100644 --- a/Source/Rendering/VTKRenderer/imstkVTKTextureDelegate.h +++ b/Source/Rendering/VTKRenderer/imstkVTKTextureDelegate.h @@ -21,18 +21,13 @@ #pragma once -#include "imstkTexture.h" #include "imstkTextureDelegate.h" -#include "imstkTextureManager.h" + +//#include <string> +//#include <memory> #include <vtkTexture.h> #include <vtkSmartPointer.h> -#include <vtkImageReader2Factory.h> -#include <vtkImageReader2.h> -#include <vtkImageFlip.h> - -#include <string> -#include <memory> namespace imstk { diff --git a/Source/Rendering/imstkRenderer.h b/Source/Rendering/imstkRenderer.h index 7340c2a6b4dc011c4816829d95ceee7192ddfbb9..60b913b2a5e870127380d4881983d3f9280d2656 100644 --- a/Source/Rendering/imstkRenderer.h +++ b/Source/Rendering/imstkRenderer.h @@ -23,8 +23,6 @@ #include "imstkMath.h" -#include <memory> - namespace imstk { class Renderer diff --git a/Source/Scene/SceneElements/Loader/imstkVisualObjectImporter.cpp b/Source/Scene/SceneElements/Loader/imstkVisualObjectImporter.cpp index 0ed194502bf5878d3175f1cb88b54e4aa7f64692..3e138b610210623a8ee4770ec5c2505c62c26389 100644 --- a/Source/Scene/SceneElements/Loader/imstkVisualObjectImporter.cpp +++ b/Source/Scene/SceneElements/Loader/imstkVisualObjectImporter.cpp @@ -20,6 +20,7 @@ =========================================================================*/ #include "imstkVisualObjectImporter.h" +#include "imstkRenderMaterial.h" #include "assimp/Importer.hpp" #include "assimp/mesh.h" diff --git a/Source/Scene/SceneElements/Loader/imstkVisualObjectImporter.h b/Source/Scene/SceneElements/Loader/imstkVisualObjectImporter.h index 8aa8cee5e02c768d945929bbabcf3c04b6532db0..e6579f26bfbabd38666cebc0c9603443390e1cef 100644 --- a/Source/Scene/SceneElements/Loader/imstkVisualObjectImporter.h +++ b/Source/Scene/SceneElements/Loader/imstkVisualObjectImporter.h @@ -28,6 +28,7 @@ #include "imstkTexture.h" #include "imstkSceneObject.h" +#include "imstkMath.h" namespace imstk { diff --git a/Source/Scene/SceneElements/Objects/imstkCollidingObject.h b/Source/Scene/SceneElements/Objects/imstkCollidingObject.h index 816049e049c26cbdfd8efad3a2d43f3bbb975cf8..dfe6e5e14c8c4fe4d11706088d08c6a8401a3417 100644 --- a/Source/Scene/SceneElements/Objects/imstkCollidingObject.h +++ b/Source/Scene/SceneElements/Objects/imstkCollidingObject.h @@ -22,6 +22,7 @@ #pragma once #include "imstkSceneObject.h" +#include "imstkMath.h" namespace imstk { diff --git a/Source/Scene/SceneElements/Objects/imstkDeformableObject.cpp b/Source/Scene/SceneElements/Objects/imstkDeformableObject.cpp index b211cbcabed068642f20533a5440a1c905af218b..cd760dd8a30aaf2e6aac4662701484e53a028a3b 100644 --- a/Source/Scene/SceneElements/Objects/imstkDeformableObject.cpp +++ b/Source/Scene/SceneElements/Objects/imstkDeformableObject.cpp @@ -21,6 +21,7 @@ #include "imstkDeformableObject.h" #include "imstkFEMDeformableBodyModel.h" +#include "imstkLogger.h" namespace imstk { diff --git a/Source/Scene/SceneElements/Objects/imstkDynamicObject.cpp b/Source/Scene/SceneElements/Objects/imstkDynamicObject.cpp index 0d5ba242cacec6264bbb35999b408f0250ed4c15..50d28d7b2ed4f744a3bcbd752cc506f5242af72a 100644 --- a/Source/Scene/SceneElements/Objects/imstkDynamicObject.cpp +++ b/Source/Scene/SceneElements/Objects/imstkDynamicObject.cpp @@ -22,6 +22,7 @@ #include "imstkDynamicObject.h" #include "imstkGeometryMap.h" #include "imstkAbstractDynamicalModel.h" +#include "imstkLogger.h" namespace imstk { diff --git a/Source/Scene/SceneElements/Objects/imstkPbdObject.cpp b/Source/Scene/SceneElements/Objects/imstkPbdObject.cpp index a578104d21da89e52cb16edfc5a3b3f26710cb9f..ae380e2f71d42a60afbbf080900b0f7d70ad8782 100644 --- a/Source/Scene/SceneElements/Objects/imstkPbdObject.cpp +++ b/Source/Scene/SceneElements/Objects/imstkPbdObject.cpp @@ -22,6 +22,7 @@ #include "imstkPbdObject.h" #include "imstkGeometryMap.h" #include "imstkPbdModel.h" +#include "imstkLogger.h" namespace imstk { diff --git a/Source/Scene/SceneElements/Objects/imstkRigidObject.cpp b/Source/Scene/SceneElements/Objects/imstkRigidObject.cpp index 64bf174f565cdc9e95df304d38777b79febc32d5..407520854b7fb416a8c924a1d2b758b6a99bd8c6 100644 --- a/Source/Scene/SceneElements/Objects/imstkRigidObject.cpp +++ b/Source/Scene/SceneElements/Objects/imstkRigidObject.cpp @@ -19,6 +19,7 @@ =========================================================================*/ #include "imstkRigidObject.h" +#include "imstkLogger.h" namespace imstk { diff --git a/Source/Scene/SceneElements/Objects/imstkSceneObject.h b/Source/Scene/SceneElements/Objects/imstkSceneObject.h index 247f39940a7108d2d72dd9ecd6bd0c560625711f..6d1cb9eaeca15f764fbb7e01d08be180a6794ea9 100644 --- a/Source/Scene/SceneElements/Objects/imstkSceneObject.h +++ b/Source/Scene/SceneElements/Objects/imstkSceneObject.h @@ -24,6 +24,9 @@ #include "imstkVisualModel.h" #include "imstkSceneEntity.h" +#include <string> +#include <vector> + namespace imstk { class Geometry; diff --git a/Source/Scene/SceneElements/Objects/imstkVisualModel.cpp b/Source/Scene/SceneElements/Objects/imstkVisualModel.cpp index 70dfc1e72354476a869b71cb454518b577c79adb..14a94e2915a6d4632b39fecd4b2a40b2a042239e 100644 --- a/Source/Scene/SceneElements/Objects/imstkVisualModel.cpp +++ b/Source/Scene/SceneElements/Objects/imstkVisualModel.cpp @@ -20,10 +20,12 @@ =========================================================================*/ #include "imstkVisualModel.h" +#include "imstkGeometry.h" +#include "imstkRenderMaterial.h" namespace imstk { -VisualModel::VisualModel(std::shared_ptr<Geometry> geometry) : m_geometry(geometry) +VisualModel::VisualModel(std::shared_ptr<Geometry> geometry) : m_geometry(geometry), m_renderMaterial(std::make_shared<RenderMaterial>()) { } diff --git a/Source/Scene/SceneElements/Objects/imstkVisualModel.h b/Source/Scene/SceneElements/Objects/imstkVisualModel.h index 5d482341930d74f0d4d4974172e8a0a5cc26db69..3b14f4824362b4d406e5e10ceeb077e9b1806801 100644 --- a/Source/Scene/SceneElements/Objects/imstkVisualModel.h +++ b/Source/Scene/SceneElements/Objects/imstkVisualModel.h @@ -23,11 +23,10 @@ #include <memory> -#include "imstkGeometry.h" -#include "imstkRenderMaterial.h" - namespace imstk { +class Geometry; +class RenderMaterial; /// /// \class VisualModel /// @@ -68,8 +67,8 @@ protected: friend class VulkanRenderDelegate; friend class VTKRenderer; - std::shared_ptr<Geometry> m_geometry = nullptr; - std::shared_ptr<RenderMaterial> m_renderMaterial = std::make_shared<RenderMaterial>(); + std::shared_ptr<Geometry> m_geometry = nullptr; + std::shared_ptr<RenderMaterial> m_renderMaterial; bool m_isVisible = true; ///< true if mesh is shown, false if mesh is hidden bool m_renderDelegateCreated = false; ///< true if RenderDelegate has been created diff --git a/Source/Scene/imstkScene.cpp b/Source/Scene/imstkScene.cpp index 4f0d42264afd76f8db1b49459e1e7470b4281799..2cafd96ba16d14780a8db4af98f3a3da11f8a1d9 100644 --- a/Source/Scene/imstkScene.cpp +++ b/Source/Scene/imstkScene.cpp @@ -23,6 +23,7 @@ #include "imstkSceneObject.h" #include "imstkCameraController.h" #include "imstkSceneObjectControllerBase.h" +#include "imstkCameraController.h" #include "imstkDebugRenderGeometry.h" #include "imstkDeformableObject.h" #include "imstkTimer.h" diff --git a/Source/Scene/imstkScene.h b/Source/Scene/imstkScene.h index aba1128dce3104633837ebb036191b03fd23ce15..4d3c43a384a88d2695896656f43b33fa97f5dcab 100644 --- a/Source/Scene/imstkScene.h +++ b/Source/Scene/imstkScene.h @@ -22,15 +22,13 @@ #pragma once #include <unordered_map> -#include <memory> #include <thread> #include <atomic> -#include "imstkCameraController.h" - namespace imstk { class SceneObjectControllerBase; +class CameraController; class DebugRenderGeometry; class SceneObject; class SolverBase; diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKInteractorStyle.cpp b/Source/SimulationManager/VTKRenderer/imstkVTKInteractorStyle.cpp index b8ac964b4b9bddb72590d1f259a0c8a2ed4f2f2b..4dbbe40f9f620db31d77c151b640ebc0b2f895d9 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKInteractorStyle.cpp +++ b/Source/SimulationManager/VTKRenderer/imstkVTKInteractorStyle.cpp @@ -24,7 +24,9 @@ #include "imstkSimulationManager.h" #include "imstkVTKTextStatusManager.h" #include "imstkCollisionGraph.h" +#include "imstkVTKRenderer.h" #include "imstkCamera.h" +#include "imstkScene.h" // vtk #include "vtkObjectFactory.h" diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKInteractorStyle.h b/Source/SimulationManager/VTKRenderer/imstkVTKInteractorStyle.h index c98f212f7c4d4d33c595c57916d5311b17be1b62..d8d0a28f9684a09f8cc885f0eb1980432a33df20 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKInteractorStyle.h +++ b/Source/SimulationManager/VTKRenderer/imstkVTKInteractorStyle.h @@ -21,10 +21,7 @@ #pragma once -#include <memory> #include <chrono> -#include <unordered_map> -#include <functional> #include "imstkInteractorStyle.h" diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.cpp b/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.cpp index 63e6f74e9f1d80543327631f0a6c202943bfed7b..cac4039bb4620b8df9a85bb61f02f9486e9f5e2f 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.cpp +++ b/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.cpp @@ -20,7 +20,6 @@ =========================================================================*/ #include "imstkVTKScreenCaptureUtility.h" - #include "imstkLogger.h" namespace imstk diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.h b/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.h index 4caa6718cd5f91a8eb8fec506ab0fc39c7038889..b6f2d92699ae7b72fd1ac1e160938678382d5770 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.h +++ b/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.h @@ -23,10 +23,10 @@ #include "imstkScreenCaptureUtility.h" -#include "vtkNew.h" -#include "vtkRenderWindow.h" -#include "vtkWindowToImageFilter.h" -#include "vtkPNGWriter.h" +#include <vtkRenderWindow.h> +#include <vtkWindowToImageFilter.h> +#include <vtkPNGWriter.h> +#include <vtkNew.h> #include <string> diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKTextStatusManager.cpp b/Source/SimulationManager/VTKRenderer/imstkVTKTextStatusManager.cpp index 0041e23a0a9c4d3862c992098c3fed8c8301dbac..2f5ca2738730ab2a61be419e2eb3a8416de834f1 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKTextStatusManager.cpp +++ b/Source/SimulationManager/VTKRenderer/imstkVTKTextStatusManager.cpp @@ -27,6 +27,7 @@ #include "imstkCamera.h" #include "vtkTextActor.h" +#include "vtkRenderWindow.h" #include "vtkTextProperty.h" #include <algorithm> diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKViewer.cpp b/Source/SimulationManager/VTKRenderer/imstkVTKViewer.cpp index 23a34fb5e31a923fbc9ade99a899b122c346af73..aebb5e96daaebfb46f7ba3a6ff30053e0ed5028b 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKViewer.cpp +++ b/Source/SimulationManager/VTKRenderer/imstkVTKViewer.cpp @@ -21,8 +21,16 @@ #include "imstkVTKViewer.h" #include "imstkVTKRenderDelegate.h" +#include "imstkVTKInteractorStyle.h" #include "imstkCollisionGraph.h" +#include "imstkVTKRenderer.h" #include "imstkCamera.h" +#include "imstkLogger.h" +#include "imstkScene.h" + +#include <vtkRenderer.h> +#include <vtkRenderWindow.h> +#include <vtkRenderWindowInteractor.h> namespace imstk { diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKViewer.h b/Source/SimulationManager/VTKRenderer/imstkVTKViewer.h index 6eb78095e463ae01c63392ce2c5121183a1bc9d6..5f9c54531c9086394c52a4abd3883209325cb558 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKViewer.h +++ b/Source/SimulationManager/VTKRenderer/imstkVTKViewer.h @@ -21,22 +21,9 @@ #pragma once -#include <memory> -#include <unordered_map> - -#include "imstkLogger.h" - -#include "imstkScene.h" -#include "imstkVTKRenderer.h" -#include "imstkVTKInteractorStyle.h" #include "imstkVTKScreenCaptureUtility.h" #include "imstkViewer.h" #include "imstkVTKRenderDelegate.h" -#include "vtkSmartPointer.h" -#include "vtkRenderWindow.h" -#include "vtkRenderWindowInteractor.h" - -//Screenshot utility #include "imstkVTKScreenCaptureUtility.h" #ifdef iMSTK_ENABLE_VR @@ -45,10 +32,14 @@ #include "vtkOpenVRRenderWindowInteractor.h" #endif +class vtkRenderWindow; + namespace imstk { class SimulationManager; class VTKTextStatusManager; +class VTKInteractorStyle; +class Scene; /// /// \class VTKViewer diff --git a/Source/SimulationManager/imstkSceneManager.cpp b/Source/SimulationManager/imstkSceneManager.cpp index 0b735df51be4c1e62c75cb822b7046c6278fea45..452fc8e52a21a7cd5ff31a1448f88b5117b9c501 100644 --- a/Source/SimulationManager/imstkSceneManager.cpp +++ b/Source/SimulationManager/imstkSceneManager.cpp @@ -20,6 +20,7 @@ =========================================================================*/ // imstk +#include "imstkScene.h" #include "imstkSceneManager.h" //#include "imstkCameraController.h" #include "imstkCollisionGraph.h" @@ -27,6 +28,12 @@ namespace imstk { +SceneManager::SceneManager(std::shared_ptr<Scene> scene) : + Module(scene->getName()), + m_scene(scene) +{ +} + void SceneManager::initModule() { @@ -45,6 +52,12 @@ SceneManager::cleanUpModule() }*/ } +void +SceneManager::runModule() +{ + m_scene->advance(); +}; + void SceneManager::startModuleInNewThread(std::shared_ptr<Module> module) { diff --git a/Source/SimulationManager/imstkSceneManager.h b/Source/SimulationManager/imstkSceneManager.h index 4dc9786841b9b7ce3387b8e7ce2858accd004c90..d055f7d272fdfdc2d1a7d225cf8fb1c10d3edc60 100644 --- a/Source/SimulationManager/imstkSceneManager.h +++ b/Source/SimulationManager/imstkSceneManager.h @@ -22,14 +22,13 @@ #pragma once #include <unordered_map> -#include <memory> #include <thread> #include "imstkModule.h" -#include "imstkScene.h" namespace imstk { +class Scene; /// /// \class SceneManager /// @@ -41,9 +40,7 @@ public: /// /// \brief Constructor /// - explicit SceneManager(std::shared_ptr<Scene> scene) : - Module(scene->getName()), - m_scene(scene) {} + explicit SceneManager(std::shared_ptr<Scene> scene); /// /// \brief Destructor @@ -64,7 +61,7 @@ protected: /// /// \brief Run the module /// - void runModule() override { m_scene->advance(); }; + void runModule() override; /// /// \brief Clean up the module diff --git a/Source/SimulationManager/imstkSimulationManager.cpp b/Source/SimulationManager/imstkSimulationManager.cpp index dc254ed325eb70066adb50b510f74df9b060259b..154c7918168675421d1a7dade62088d55e3e510e 100644 --- a/Source/SimulationManager/imstkSimulationManager.cpp +++ b/Source/SimulationManager/imstkSimulationManager.cpp @@ -26,6 +26,8 @@ #include "imstkSceneManager.h" #include "imstkViewer.h" #include "imstkTimer.h" +#include "imstkLogger.h" +#include "imstkScene.h" #include <string> diff --git a/Source/SimulationManager/imstkSimulationManager.h b/Source/SimulationManager/imstkSimulationManager.h index 513e48c8c851ceb0c1eb2786835748b28a450586..916db00af5febfe713c0de5640acb2db18acd9f7 100644 --- a/Source/SimulationManager/imstkSimulationManager.h +++ b/Source/SimulationManager/imstkSimulationManager.h @@ -21,14 +21,9 @@ #pragma once -//#include <unordered_map> -//#include <vector> -//#include <thread> #include <mutex> -#include <memory> #include "imstkModule.h" -#include "imstkLogger.h" #ifdef iMSTK_USE_Vulkan #include "imstkVulkanViewer.h" @@ -40,6 +35,7 @@ namespace imstk { class SceneManager; class Scene; +struct SceneConfig; class Viewer; using SimulationStatus = ModuleStatus; diff --git a/Source/SimulationManager/imstkViewer.cpp b/Source/SimulationManager/imstkViewer.cpp index ed98635e998244ce516bc0c13a29833423fb2dba..50c68d38bec6256b234dc6917994549098885264 100644 --- a/Source/SimulationManager/imstkViewer.cpp +++ b/Source/SimulationManager/imstkViewer.cpp @@ -20,11 +20,18 @@ =========================================================================*/ #include "imstkViewer.h" +#include "imstkScene.h" #include "imstkCollisionGraph.h" #include "imstkCamera.h" +#include "imstkScreenCaptureUtility.h" +#include "imstkGUICanvas.h" namespace imstk { +Viewer::Viewer() : m_canvas(std::make_shared<GUIOverlay::Canvas>()) +{ +} + const std::shared_ptr<Scene>& Viewer::getActiveScene() const { diff --git a/Source/SimulationManager/imstkViewer.h b/Source/SimulationManager/imstkViewer.h index faa5d484f0fe0015cd89149239ea6c84e9973c37..9b2dc052218370e2fac952a0b1b7e0d07b8aa618 100644 --- a/Source/SimulationManager/imstkViewer.h +++ b/Source/SimulationManager/imstkViewer.h @@ -21,18 +21,18 @@ #pragma once -#include <memory> - -#include "imstkScene.h" #include "imstkRenderer.h" -#include "imstkScreenCaptureUtility.h" #include "imstkInteractorStyle.h" -#include "imstkGUICanvas.h" namespace imstk { class SimulationManager; - +class Scene; +class ScreenCaptureUtility; +namespace GUIOverlay +{ +class Canvas; +} /// /// \class Viewer /// @@ -42,7 +42,7 @@ class Viewer { public: - Viewer() {} + Viewer(); Viewer(SimulationManager*) {} virtual ~Viewer() = default; @@ -136,6 +136,6 @@ protected: std::shared_ptr<ScreenCaptureUtility> m_screenCapturer; ///> Screen shot utility bool m_running = false; - std::shared_ptr<GUIOverlay::Canvas> m_canvas = std::make_shared<GUIOverlay::Canvas>(); + std::shared_ptr<GUIOverlay::Canvas> m_canvas = nullptr; }; } diff --git a/Source/Solvers/imstkConjugateGradient.cpp b/Source/Solvers/imstkConjugateGradient.cpp index bc89030b5b4d5224e8696fd42a3d2b50e49200a7..e9a575683310686a7f186761e7e4ebdb1d4e661b 100644 --- a/Source/Solvers/imstkConjugateGradient.cpp +++ b/Source/Solvers/imstkConjugateGradient.cpp @@ -20,8 +20,8 @@ =========================================================================*/ #include "imstkConjugateGradient.h" - -#include <iostream> +#include "imstkLinearProjectionConstraint.h" +#include "imstkLogger.h" namespace imstk { diff --git a/Source/Solvers/imstkConjugateGradient.h b/Source/Solvers/imstkConjugateGradient.h index 357e02e88f0b88f237d50cb9af3ce9d6a06091cd..16c3c7ec52ca29593ad778b2384782a4dc4fd2c8 100644 --- a/Source/Solvers/imstkConjugateGradient.h +++ b/Source/Solvers/imstkConjugateGradient.h @@ -21,10 +21,6 @@ #pragma once -#include <memory> - -// iMSTK includes -#include "imstkNonlinearSystem.h" #include "imstkIterativeLinearSolver.h" // Eigen includes @@ -32,6 +28,7 @@ namespace imstk { +class LinearProjectionConstraint; /// /// \brief Conjugate gradient sparse linear solver for SPD matrices /// diff --git a/Source/Solvers/imstkGaussSeidel.cpp b/Source/Solvers/imstkGaussSeidel.cpp index c0504a6c174b8d703109ae6ed5cedc7f8cf7eaae..514fb4ca45fc5c32491d53d711e984344b1a25bd 100644 --- a/Source/Solvers/imstkGaussSeidel.cpp +++ b/Source/Solvers/imstkGaussSeidel.cpp @@ -20,6 +20,11 @@ =========================================================================*/ #include "imstkGaussSeidel.h" +#include "imstkLogger.h" +#include "imstkLinearProjectionConstraint.h" + +// Eigen includes +#include <Eigen/IterativeLinearSolvers> namespace imstk { diff --git a/Source/Solvers/imstkGaussSeidel.h b/Source/Solvers/imstkGaussSeidel.h index 875338f37e9759c7d43927b856658291292bb783..4caf0cbf0a4fea7a1ab460667a4ceed43c27afe8 100644 --- a/Source/Solvers/imstkGaussSeidel.h +++ b/Source/Solvers/imstkGaussSeidel.h @@ -21,17 +21,13 @@ #pragma once -#include <memory> - // iMSTK includes -#include "imstkNonlinearSystem.h" #include "imstkIterativeLinearSolver.h" -// Eigen includes -#include <Eigen/IterativeLinearSolvers> - namespace imstk { +class LinearProjectionConstraint; + /// /// \brief Gauss-Seidel sparse linear solver /// diff --git a/Source/Solvers/imstkIterativeLinearSolver.cpp b/Source/Solvers/imstkIterativeLinearSolver.cpp index d8da262760cd8b86a169990f47f79225b6349644..c287f23a5b09fd4c3fe12e3c4e7e703a25d4fe35 100644 --- a/Source/Solvers/imstkIterativeLinearSolver.cpp +++ b/Source/Solvers/imstkIterativeLinearSolver.cpp @@ -20,6 +20,7 @@ =========================================================================*/ #include "imstkIterativeLinearSolver.h" +#include "imstkLogger.h" namespace imstk { diff --git a/Source/Solvers/imstkJacobi.cpp b/Source/Solvers/imstkJacobi.cpp index c86cf34bc530057905f6e15f7d2d553188ceb1e1..5d7d4714dda6f2d5ba4f794204f2440f3eaea5e0 100644 --- a/Source/Solvers/imstkJacobi.cpp +++ b/Source/Solvers/imstkJacobi.cpp @@ -20,6 +20,11 @@ =========================================================================*/ #include "imstkJacobi.h" +#include "imstkLogger.h" +#include "imstkLinearProjectionConstraint.h" + +// Eigen includes +#include <Eigen/IterativeLinearSolvers> namespace imstk { diff --git a/Source/Solvers/imstkJacobi.h b/Source/Solvers/imstkJacobi.h index 22a76b792a26c807f927dfef7e44821803e9d6a1..7d1ee27070c6d0c3479dc459ae66fc24373ae822 100644 --- a/Source/Solvers/imstkJacobi.h +++ b/Source/Solvers/imstkJacobi.h @@ -21,17 +21,12 @@ #pragma once -#include <memory> - -// iMSTK includes -#include "imstkNonlinearSystem.h" #include "imstkIterativeLinearSolver.h" -// Eigen includes -#include <Eigen/IterativeLinearSolvers> - namespace imstk { +class LinearProjectionConstraint; + /// /// \brief Jacobi sparse linear solver /// diff --git a/Source/Solvers/imstkLinearSolver.cpp b/Source/Solvers/imstkLinearSolver.cpp index adb2fa3ddb58d497ced9f20e6cca8d3f8974e7e6..88e14c0714b70b29a5bec3aec7dade6a5a6f3e51 100644 --- a/Source/Solvers/imstkLinearSolver.cpp +++ b/Source/Solvers/imstkLinearSolver.cpp @@ -20,6 +20,7 @@ =========================================================================*/ #include "imstkLinearSolver.h" +#include "imstkLogger.h" namespace imstk { diff --git a/Source/Solvers/imstkLinearSolver.h b/Source/Solvers/imstkLinearSolver.h index 1b3a230d5b75bacfa58ec30c02f9639d6f99bd09..e49596b25b1e3709cd5e7dbf3ebe36a753be2c37 100644 --- a/Source/Solvers/imstkLinearSolver.h +++ b/Source/Solvers/imstkLinearSolver.h @@ -25,8 +25,6 @@ #include "imstkLinearSystem.h" #include "imstkMath.h" -#include "imstkLogger.h" - namespace imstk { /// @@ -97,7 +95,7 @@ public: /// virtual void print() const { - LOG(INFO) << "Solver type (broad): Linear"; + //LOG(INFO) << "Solver type (broad): Linear"; }; /// diff --git a/Source/Solvers/imstkNewtonSolver.cpp b/Source/Solvers/imstkNewtonSolver.cpp index 3cf60fb5760d0c7db9150f223888a423d9392d32..70fbb6074914cf7ca725f93f4f804d5f097c2280 100644 --- a/Source/Solvers/imstkNewtonSolver.cpp +++ b/Source/Solvers/imstkNewtonSolver.cpp @@ -24,6 +24,7 @@ #include "imstkNewtonSolver.h" #include "imstkIterativeLinearSolver.h" #include "imstkConjugateGradient.h" +#include "imstkLogger.h" namespace imstk { diff --git a/Source/Solvers/imstkNonlinearSystem.h b/Source/Solvers/imstkNonlinearSystem.h index bbe8368da5231218c4aa0c2fd487e6599395ca70..941387064002f836d9160338239a061a439a4019 100644 --- a/Source/Solvers/imstkNonlinearSystem.h +++ b/Source/Solvers/imstkNonlinearSystem.h @@ -21,11 +21,8 @@ #pragma once -#include <memory> -#include <stdio.h> - #include "imstkMath.h" -#include "imstkLinearProjectionConstraint.h" +//#include "imstkLinearProjectionConstraint.h" namespace imstk { diff --git a/Source/Solvers/imstkSOR.cpp b/Source/Solvers/imstkSOR.cpp index dd750932895aaac905a136adc54d13f46689563e..8e6c6f3a02f7df3b4de2db73e875604f080eed97 100644 --- a/Source/Solvers/imstkSOR.cpp +++ b/Source/Solvers/imstkSOR.cpp @@ -20,6 +20,8 @@ =========================================================================*/ #include "imstkSOR.h" +#include "imstkLogger.h" +#include "imstkLinearProjectionConstraint.h" namespace imstk { diff --git a/Source/Solvers/imstkSOR.h b/Source/Solvers/imstkSOR.h index 25f049239578a667e379a70ffbf0930f43ebe15d..f310b48bc70d1dde34f439fdf74cdf76864ade3d 100644 --- a/Source/Solvers/imstkSOR.h +++ b/Source/Solvers/imstkSOR.h @@ -21,8 +21,6 @@ #pragma once -#include <memory> - // iMSTK includes #include "imstkNonlinearSystem.h" #include "imstkIterativeLinearSolver.h" @@ -32,6 +30,8 @@ namespace imstk { +class LinearProjectionConstraint; + /// /// \brief Successive Over Relaxation (SOR) sparse linear solver /// diff --git a/Source/apiUtilities/imstkAPIUtilities.cpp b/Source/apiUtilities/imstkAPIUtilities.cpp index 07ba9cb8cc54772ac1831fc88982843483884ac2..ef6930160251d2533a82d66a71c6ee7714b018a8 100644 --- a/Source/apiUtilities/imstkAPIUtilities.cpp +++ b/Source/apiUtilities/imstkAPIUtilities.cpp @@ -19,3 +19,240 @@ =========================================================================*/ #include "imstkAPIUtilities.h" + +// Objects +#include "imstkFEMDeformableBodyModel.h" +#include "imstkSceneObject.h" +#include "imstkSceneManager.h" +#include "imstkCollidingObject.h" +#include "imstkScene.h" + +#include "imstkColor.h" + +// Solvers +#include "imstkNonlinearSystem.h" + +// Geometry +#include "imstkPlane.h" +#include "imstkSphere.h" +#include "imstkCapsule.h" +#include "imstkCube.h" +#include "imstkPointSet.h" +#include "imstkSurfaceMesh.h" +#include "imstkTetrahedralMesh.h" +#include "imstkMeshIO.h" +#include "imstkImageData.h" + +#include "imstkGraph.h" +#include "imstkCollisionGraph.h" +#include "imstkCamera.h" +#include "imstkLinearProjectionConstraint.h" + +// logger +#include "imstkLogger.h" +#include "imstkTimer.h" + +namespace imstk +{ +namespace apiutils +{ +/// +/// \brief Create a analytical visual scene object that and add it to the scene +/// +std::shared_ptr<VisualObject> +createVisualAnalyticalSceneObject(Geometry::Type type, + std::shared_ptr<Scene> scene, + const std::string& objName, + const double scale /* = 1.*/, + const Vec3d t /*= Vec3d(0., 0., 0.)*/) +{ + CHECK(scene != nullptr) << "createVisualAnalyticalSceneObject: Scene is not valid!"; + CHECK(!objName.empty()) << "createVisualAnalyticalSceneObject: Name is empty!"; + + std::shared_ptr<Geometry> geom; + switch (type) + { + case Geometry::Type::Sphere: + geom = std::make_shared<Sphere>(); + break; + + case Geometry::Type::Plane: + geom = std::make_shared<Plane>(); + break; + + case Geometry::Type::Cube: + geom = std::make_shared<Cube>(); + break; + + case Geometry::Type::Capsule: + geom = std::make_shared<Capsule>(); + break; + + case Geometry::Type::ImageData: + geom = std::make_shared<ImageData>(); + break; + + default: + LOG(WARNING) << "createVisualAnalyticalSceneObject: Scene object geometry type is not analytical!"; + return nullptr; + } + + geom->scale(scale, Geometry::TransformType::ApplyToData); + geom->translate(t, Geometry::TransformType::ApplyToData); + + auto sceneObj = std::make_shared<VisualObject>(objName); + sceneObj->setVisualGeometry(geom); + scene->addSceneObject(sceneObj); + + return sceneObj; +} + +/// +/// \brief Create a analytical colliding scene object that and add it to the scene +/// +std::shared_ptr<CollidingObject> +createCollidingAnalyticalSceneObject(Geometry::Type type, + std::shared_ptr<Scene> scene, + const std::string& objName, + const double scale /*= 1.*/, + const Vec3d t /*= Vec3d(0., 0., 0.)*/) +{ + CHECK(scene != nullptr) << "createCollidingSphereSceneObject: Scene is not valid!"; + CHECK(!objName.empty()) << "createCollidingAnalyticalSceneObject: Name is empty!"; + + std::shared_ptr<Geometry> geom; + switch (type) + { + case Geometry::Type::Sphere: + geom = std::make_shared<Sphere>(); + break; + + case Geometry::Type::Plane: + geom = std::make_shared<Plane>(); + break; + + case Geometry::Type::Cube: + geom = std::make_shared<Cube>(); + break; + + default: + LOG(WARNING) << "createCollidingAnalyticalSceneObject: Scene object geometry type is not analytical!"; + return nullptr; + } + + geom->scale(scale, Geometry::TransformType::ApplyToData); + geom->translate(t, Geometry::TransformType::ApplyToData); + + auto sceneObj = std::make_shared<CollidingObject>(objName); + sceneObj->setVisualGeometry(geom); + sceneObj->setCollidingGeometry(geom); + scene->addSceneObject(sceneObj); + + return sceneObj; +} + +/// +/// \brief Read a mesh, create a visual scene object and add to the scene +/// +std::shared_ptr<SceneObject> +createAndAddVisualSceneObject(std::shared_ptr<Scene> scene, + const std::string& fileName, + const std::string& objectName) +{ + CHECK(scene != nullptr) << "createAndAddVisualSceneObject: Scene is not valid!"; + CHECK(!fileName.empty()) << "createAndAddVisualSceneObject: Name is empty!"; + + auto mesh = MeshIO::read(fileName); + auto SurfaceMesh = std::dynamic_pointer_cast<imstk::SurfaceMesh>(mesh); + + // Create object and add to scene + auto meshSceneObject = std::make_shared<VisualObject>("meshObject"); + meshSceneObject->setVisualGeometry(SurfaceMesh); + meshSceneObject->setName(objectName); + scene->addSceneObject(meshSceneObject); + + return meshSceneObject; +} + +/// +/// \brief Create a non-linear system using FEM dynamic model +/// +std::shared_ptr<NonLinearSystem> +createNonLinearSystem(std::shared_ptr<FEMDeformableBodyModel> dynaModel) +{ + CHECK(dynaModel != nullptr) << "createNonLinearSystem: Dynamic model is not valid!"; + + auto nlSystem = std::make_shared<NonLinearSystem>( + dynaModel->getFunction(), + dynaModel->getFunctionGradient()); + + std::vector<LinearProjectionConstraint> linProj; + for (auto i : dynaModel->getFixNodeIds()) + { + linProj.push_back(LinearProjectionConstraint(i, true)); + } + nlSystem->setUnknownVector(dynaModel->getUnknownVec()); + nlSystem->setUpdateFunction(dynaModel->getUpdateFunction()); + nlSystem->setUpdatePreviousStatesFunction(dynaModel->getUpdatePrevStateFunction()); + + return nlSystem; +} + +/// +/// \brief Print number of updates for second for a given scene +/// +void +printUPS(std::shared_ptr<SceneManager> sceneManager) +{ + if (!sceneManager) + { + LOG(WARNING) << "APIUtilities::printUPS - scene manager is not valid! Unable to print UPS"; + return; + } + + sceneManager->setPostUpdateCallback([&sceneManager](Module* module) + { + std::cout << "\r" << module->getName() << " running at " + << sceneManager->getUPS() << " ups " << std::flush; + }); +} + +std::shared_ptr<Graph> +getMeshGraph(std::shared_ptr<PointSet> m) +{ + LOG(WARNING) << "The graph of a point set has no edges"; + + return std::make_shared<Graph>(m->getNumVertices()); +} + +std::shared_ptr<Graph> +getMeshGraph(std::shared_ptr<SurfaceMesh> m) +{ + auto gMesh = std::make_shared<Graph>(m->getNumVertices()); + for (auto tri : m->getTrianglesVertices()) + { + gMesh->addEdge(tri[0], tri[1]); + gMesh->addEdge(tri[0], tri[2]); + gMesh->addEdge(tri[1], tri[2]); + } + + return gMesh; +} + +std::shared_ptr<Graph> +getMeshGraph(std::shared_ptr<TetrahedralMesh> m) +{ + auto gMesh = std::make_shared<Graph>(m->getNumVertices()); + for (auto tet : m->getTetrahedraVertices()) + { + gMesh->addEdge(tet[0], tet[1]); + gMesh->addEdge(tet[0], tet[2]); + gMesh->addEdge(tet[0], tet[3]); + gMesh->addEdge(tet[1], tet[2]); + gMesh->addEdge(tet[1], tet[3]); + gMesh->addEdge(tet[2], tet[3]); + } + return gMesh; +} +} //apiutils +} // imstk \ No newline at end of file diff --git a/Source/apiUtilities/imstkAPIUtilities.h b/Source/apiUtilities/imstkAPIUtilities.h index f6faf92c9bc9c8011421d2ea3de54f16a77a15f3..a13b953d01e3555e384094305c87e028d98665ef 100644 --- a/Source/apiUtilities/imstkAPIUtilities.h +++ b/Source/apiUtilities/imstkAPIUtilities.h @@ -21,235 +21,63 @@ #pragma once -// Objects -#include "imstkFEMDeformableBodyModel.h" +#include "imstkGeometry.h" #include "imstkSceneObject.h" -#include "imstkSceneManager.h" -#include "imstkCollidingObject.h" - -// Solvers -#include "imstkNonlinearSystem.h" - -// Geometry -#include "imstkPlane.h" -#include "imstkSphere.h" -#include "imstkCapsule.h" -#include "imstkCube.h" -#include "imstkPointSet.h" -#include "imstkSurfaceMesh.h" -#include "imstkTetrahedralMesh.h" -#include "imstkMeshIO.h" -#include "imstkImageData.h" - -#include "imstkGraph.h" -#include "imstkCollisionGraph.h" -#include "imstkCamera.h" - -// logger -#include "imstkLogger.h" -#include "imstkTimer.h" +#include "imstkMath.h" namespace imstk { +class TetrahedralMesh; +class SurfaceMesh; +class PointSet; +class SceneManager; +class Scene; +class FEMDeformableBodyModel; +class NonLinearSystem; +class CollidingObject; +class Graph; + namespace apiutils { /// /// \brief Create a analytical visual scene object that and add it to the scene /// -std::shared_ptr<VisualObject> -createVisualAnalyticalSceneObject(Geometry::Type type, - std::shared_ptr<Scene> scene, - const std::string& objName, - const double scale = 1., - const Vec3d t = Vec3d(0., 0., 0.)) -{ - CHECK(scene != nullptr) << "createVisualAnalyticalSceneObject: Scene is not valid!"; - CHECK(!objName.empty()) << "createVisualAnalyticalSceneObject: Name is empty!"; - - std::shared_ptr<Geometry> geom; - switch (type) - { - case Geometry::Type::Sphere: - geom = std::make_shared<Sphere>(); - break; - - case Geometry::Type::Plane: - geom = std::make_shared<Plane>(); - break; - - case Geometry::Type::Cube: - geom = std::make_shared<Cube>(); - break; - - case Geometry::Type::Capsule: - geom = std::make_shared<Capsule>(); - break; - - case Geometry::Type::ImageData: - geom = std::make_shared<ImageData>(); - break; - - default: - LOG(WARNING) << "createVisualAnalyticalSceneObject: Scene object geometry type is not analytical!"; - return nullptr; - } - - geom->scale(scale, Geometry::TransformType::ApplyToData); - geom->translate(t, Geometry::TransformType::ApplyToData); - - auto sceneObj = std::make_shared<VisualObject>(objName); - sceneObj->setVisualGeometry(geom); - scene->addSceneObject(sceneObj); - - return sceneObj; -} +std::shared_ptr<VisualObject> createVisualAnalyticalSceneObject(Geometry::Type type, + std::shared_ptr<Scene> scene, + const std::string& objName, + const double scale = 1., + const Vec3d t = Vec3d(0., 0., 0.)); /// /// \brief Create a analytical colliding scene object that and add it to the scene /// -std::shared_ptr<CollidingObject> -createCollidingAnalyticalSceneObject(Geometry::Type type, - std::shared_ptr<Scene> scene, - const std::string& objName, - const double scale = 1., - const Vec3d t = Vec3d(0., 0., 0.)) -{ - CHECK(scene != nullptr) << "createCollidingSphereSceneObject: Scene is not valid!"; - CHECK(!objName.empty()) << "createCollidingAnalyticalSceneObject: Name is empty!"; - - std::shared_ptr<Geometry> geom; - switch (type) - { - case Geometry::Type::Sphere: - geom = std::make_shared<Sphere>(); - break; - - case Geometry::Type::Plane: - geom = std::make_shared<Plane>(); - break; - - case Geometry::Type::Cube: - geom = std::make_shared<Cube>(); - break; - - default: - LOG(WARNING) << "createCollidingAnalyticalSceneObject: Scene object geometry type is not analytical!"; - return nullptr; - } - - geom->scale(scale, Geometry::TransformType::ApplyToData); - geom->translate(t, Geometry::TransformType::ApplyToData); - - auto sceneObj = std::make_shared<CollidingObject>(objName); - sceneObj->setVisualGeometry(geom); - sceneObj->setCollidingGeometry(geom); - scene->addSceneObject(sceneObj); - - return sceneObj; -} +std::shared_ptr<CollidingObject> createCollidingAnalyticalSceneObject(Geometry::Type type, + std::shared_ptr<Scene> scene, + const std::string& objName, + const double scale = 1., + const Vec3d t = Vec3d(0., 0., 0.)); /// /// \brief Read a mesh, create a visual scene object and add to the scene /// -std::shared_ptr<SceneObject> -createAndAddVisualSceneObject(std::shared_ptr<Scene> scene, - const std::string& fileName, - const std::string& objectName) -{ - CHECK(scene != nullptr) << "createAndAddVisualSceneObject: Scene is not valid!"; - CHECK(!fileName.empty()) << "createAndAddVisualSceneObject: Name is empty!"; - - auto mesh = MeshIO::read(fileName); - auto SurfaceMesh = std::dynamic_pointer_cast<imstk::SurfaceMesh>(mesh); - - // Create object and add to scene - auto meshSceneObject = std::make_shared<VisualObject>("meshObject"); - meshSceneObject->setVisualGeometry(SurfaceMesh); - meshSceneObject->setName(objectName); - scene->addSceneObject(meshSceneObject); - - return meshSceneObject; -} +std::shared_ptr<SceneObject> createAndAddVisualSceneObject(std::shared_ptr<Scene> scene, + const std::string& fileName, + const std::string& objectName); /// /// \brief Create a non-linear system using FEM dynamic model /// -std::shared_ptr<NonLinearSystem> -createNonLinearSystem(std::shared_ptr<FEMDeformableBodyModel> dynaModel) -{ - CHECK(dynaModel != nullptr) << "createNonLinearSystem: Dynamic model is not valid!"; - - auto nlSystem = std::make_shared<NonLinearSystem>( - dynaModel->getFunction(), - dynaModel->getFunctionGradient()); - - std::vector<LinearProjectionConstraint> linProj; - for (auto i : dynaModel->getFixNodeIds()) - { - linProj.push_back(LinearProjectionConstraint(i, true)); - } - nlSystem->setUnknownVector(dynaModel->getUnknownVec()); - nlSystem->setUpdateFunction(dynaModel->getUpdateFunction()); - nlSystem->setUpdatePreviousStatesFunction(dynaModel->getUpdatePrevStateFunction()); - - return nlSystem; -} +std::shared_ptr<NonLinearSystem> createNonLinearSystem(std::shared_ptr<FEMDeformableBodyModel> dynaModel); /// /// \brief Print number of updates for second for a given scene /// -void -printUPS(std::shared_ptr<SceneManager> sceneManager) -{ - if (!sceneManager) - { - LOG(WARNING) << "APIUtilities::printUPS - scene manager is not valid! Unable to print UPS"; - return; - } - - sceneManager->setPostUpdateCallback([&sceneManager](Module* module) - { - std::cout << "\r" << module->getName() << " running at " - << sceneManager->getUPS() << " ups " << std::flush; - }); -} - -std::shared_ptr<Graph> -getMeshGraph(std::shared_ptr<PointSet> m) -{ - LOG(WARNING) << "The graph of a point set has no edges"; +void printUPS(std::shared_ptr<SceneManager> sceneManager); - return std::make_shared<Graph>(m->getNumVertices()); -} +std::shared_ptr<Graph> getMeshGraph(std::shared_ptr<PointSet> m); -std::shared_ptr<Graph> -getMeshGraph(std::shared_ptr<SurfaceMesh> m) -{ - auto gMesh = std::make_shared<Graph>(m->getNumVertices()); - for (auto tri : m->getTrianglesVertices()) - { - gMesh->addEdge(tri[0], tri[1]); - gMesh->addEdge(tri[0], tri[2]); - gMesh->addEdge(tri[1], tri[2]); - } - - return gMesh; -} - -std::shared_ptr<Graph> -getMeshGraph(std::shared_ptr<TetrahedralMesh> m) -{ - auto gMesh = std::make_shared<Graph>(m->getNumVertices()); - for (auto tet : m->getTetrahedraVertices()) - { - gMesh->addEdge(tet[0], tet[1]); - gMesh->addEdge(tet[0], tet[2]); - gMesh->addEdge(tet[0], tet[3]); - gMesh->addEdge(tet[1], tet[2]); - gMesh->addEdge(tet[1], tet[3]); - gMesh->addEdge(tet[2], tet[3]); - } - return gMesh; -} +std::shared_ptr<Graph> getMeshGraph(std::shared_ptr<SurfaceMesh> m); + +std::shared_ptr<Graph> getMeshGraph(std::shared_ptr<TetrahedralMesh> m); } //apiutils } // imstk