diff --git a/Base/SimulationManager/imstkSceneManager.cpp b/Base/SimulationManager/imstkSceneManager.cpp index e811101d7ada69a1266d29252ba0699ca9a8c761..8fcf18e0d9c50c2773cad1d8b9c2984697ef63a9 100644 --- a/Base/SimulationManager/imstkSceneManager.cpp +++ b/Base/SimulationManager/imstkSceneManager.cpp @@ -37,9 +37,7 @@ SceneManager::getScene() void SceneManager::initModule() { - LOG(DEBUG) << m_name << " manager : init"; - - + // Start Camera Controller (asynchronous) if (auto camController = m_scene->getCamera()->getController()) { this->startModuleInNewThread(camController); @@ -49,8 +47,7 @@ SceneManager::initModule() void SceneManager::runModule() { - LOG(DEBUG) << m_name << " manager : running"; - + // Update virtualCoupling objects based on devices for (auto obj : m_scene->getSceneObjects()) { if (auto virtualCoupling = std::dynamic_pointer_cast<VirtualCouplingObject>(obj)) @@ -60,12 +57,10 @@ SceneManager::runModule() } } - void SceneManager::cleanUpModule() { - LOG(DEBUG) << m_name << " manager : cleanUp"; - + // End Camera Controller if (auto camController = m_scene->getCamera()->getController()) { camController->end(); diff --git a/Base/SimulationManager/imstkSceneManager.h b/Base/SimulationManager/imstkSceneManager.h index dc37ecf09e0ad84ec477ab12d554d9c98b860d35..63986187b5215ab60fe286a1b1bf4251b4a6a305 100644 --- a/Base/SimulationManager/imstkSceneManager.h +++ b/Base/SimulationManager/imstkSceneManager.h @@ -36,7 +36,7 @@ class SceneManager : public Module public: SceneManager(std::shared_ptr<Scene> scene) : - Module(scene->getName(), 1000), + Module(scene->getName()), m_scene(scene) {} diff --git a/Examples/Sandbox/main.cpp b/Examples/Sandbox/main.cpp index b3de2b257362dd04f7aaac339c79997dac35a037..750d57c367e6f4b36622e9f526bbb7692d05e496 100644 --- a/Examples/Sandbox/main.cpp +++ b/Examples/Sandbox/main.cpp @@ -6,14 +6,18 @@ #include "imstkMath.h" #include "imstkSimulationManager.h" + +// Objects #include "imstkSceneObject.h" -#include "imstkPlane.h" -#include "imstkSphere.h" -#include "imstkCube.h" +#include "imstkCollidingObject.h" +#include "imstkVirtualCouplingObject.h" #include "imstkLight.h" #include "imstkCamera.h" // Geometry +#include "imstkPlane.h" +#include "imstkSphere.h" +#include "imstkCube.h" #include "imstkTetrahedralMesh.h" #include "imstkSurfaceMesh.h" #include "imstkMeshReader.h" @@ -30,7 +34,8 @@ #include "g3log/g3log.hpp" -void testDevices(); +void testObjectController(); +void testCameraController(); void testReadMesh(); void testViewer(); void testAnalyticalGeometry(); @@ -47,7 +52,8 @@ int main() << "Starting Sandbox\n" << "****************\n"; - testDevices(); + testObjectController(); + //testCameraController(); //testViewer(); //testReadMesh(); //testAnalyticalGeometry(); @@ -61,7 +67,7 @@ int main() return 0; } -void testDevices() +void testObjectController() { // SDK and Scene auto sdk = std::make_shared<imstk::SimulationManager>(); @@ -78,17 +84,54 @@ void testDevices() client->setLoopDelay(1); sdk->addDeviceClient(client); + // Plane + auto planeGeom = std::make_shared<imstk::Plane>(); + planeGeom->scale(5); + auto planeObj = std::make_shared<imstk::VisualObject>("VisualPlane"); + planeObj->setVisualGeometry(planeGeom); + scene->addSceneObject(planeObj); + // Sphere auto sphereGeom = std::make_shared<imstk::Sphere>(); - sphereGeom->scale(0.1); - auto sphereObj = std::make_shared<imstk::VisualObject>("VisualSphere"); + sphereGeom->setPosition(imstk::UP_VECTOR); //does not matter, need to set offset on object if controlled + sphereGeom->scale(0.2); + auto sphereObj = std::make_shared<imstk::VirtualCouplingObject>("VirtualSphere", client, 20); sphereObj->setVisualGeometry(sphereGeom); + sphereObj->setCollidingGeometry(sphereGeom); + sphereObj->setTranslationOffset(imstk::UP_VECTOR); // this will work though scene->addSceneObject(sphereObj); + // Update Camera position + auto cam = scene->getCamera(); + cam->setPosition(imstk::Vec3d(0,3,10)); + cam->setFocalPoint(sphereGeom->getPosition()); + + // Run + sdk->setCurrentScene("SceneTestDevice"); + sdk->startSimulation(true); +} + +void testCameraController() +{ + // SDK and Scene + auto sdk = std::make_shared<imstk::SimulationManager>(); + auto scene = sdk->createNewScene("SceneTestDevice"); + + // Device server + auto server = std::make_shared<imstk::VRPNDeviceServer>("127.0.0.1"); + server->addDevice("device0", imstk::DeviceType::NOVINT_FALCON); + server->setLoopDelay(1); + sdk->addDeviceServer(server); + + // Device Client + auto client = std::make_shared<imstk::VRPNDeviceClient>("device0", "localhost"); // localhost = 127.0.0.1 + client->setLoopDelay(1); + sdk->addDeviceClient(client); + // Mesh auto mesh = imstk::MeshReader::read("/home/virtualfls/Projects/IMSTK/resources/asianDragon/asianDragon.obj"); auto meshObject = std::make_shared<imstk::VisualObject>("meshObject"); - meshObject->setVisualGeometry(mesh); // change to any mesh created above + meshObject->setVisualGeometry(mesh); scene->addSceneObject(meshObject); // Update Camera position